[IR] Add a `data_operand` abstraction
authorSanjoy Das <sanjoy@playingwithpointers.com>
Wed, 4 Nov 2015 21:05:24 +0000 (21:05 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Wed, 4 Nov 2015 21:05:24 +0000 (21:05 +0000)
commita6abdebd6a1ddf26c963c6f19b50cc75e5b83f4a
tree0f8abca2e1c71b00603aed35cac227ac8daa6da1
parent7ba0c20d4c1bedf096f5b5e2927226056c101e11
[IR] Add a `data_operand` abstraction

Summary:
Data operands of a call or invoke consist of the call arguments, and
the bundle operands associated with the `call` (or `invoke`)
instruction.  The motivation for this change is that we'd like to be
able to query "argument attributes" like `readonly` and `nocapture`
for bundle operands naturally.

This change also provides a conservative "implementation" for these
attributes for any bundle operand, and an extension point for future
work.

Reviewers: chandlerc, majnemer, reames

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D14305

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252077 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/CallSite.h
include/llvm/IR/InstrTypes.h
include/llvm/IR/Instructions.h
lib/IR/Instructions.cpp