OSDN Git Service

[IR] Add operand bundles to CallInst and InvokeInst.
authorSanjoy Das <sanjoy@playingwithpointers.com>
Thu, 24 Sep 2015 19:14:18 +0000 (19:14 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Thu, 24 Sep 2015 19:14:18 +0000 (19:14 +0000)
commit5b674c0b49619bc95ab27abfeffc25fb4b0cc71a
treefe0fdb23476ca84ba5ba735b9be037a936b79909
parentc848236c936decfe077c92bf6232cf0feb913b26
[IR] Add operand bundles to CallInst and InvokeInst.

Summary:
This change teaches `CallInst`s and `InvokeInst`s to maintain a set of
operand bundles as part of its operands.  `CallInst`s and `InvokeInst`s
with operand bundles co-allocate some space before their `Use` array to
hold meta information about which of its operands are part of an operand
bundle.

The strings corresponding to the bundle tags are interned into
`LLVMContextImpl::BundleTagCache`

This change does not include any parsing / bitcode support.  That's the
next change.

Depends on D12455.

Reviewers: reames, chandlerc, majnemer, dexonsmith, kmod, JosephTremoulet, rnk, bogner

Subscribers: MatzeB, sanjoy, llvm-commits

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

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