diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-04-28 17:37:06 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-04-28 17:37:06 +0000 |
commit | 2d9cc2197adffe45caf41eda52399ce685c93578 (patch) | |
tree | 34771414660b7b52bd110d41f430f438326c6cdb /llvm/lib/VMCore/Core.cpp | |
parent | da440548673f54a6a6640395394c6327fd84657a (diff) | |
download | bcm5719-llvm-2d9cc2197adffe45caf41eda52399ce685c93578.tar.gz bcm5719-llvm-2d9cc2197adffe45caf41eda52399ce685c93578.zip |
Expose parameter attributes via C bindings.
Patch by Anders Johnsen!
llvm-svn: 50360
Diffstat (limited to 'llvm/lib/VMCore/Core.cpp')
-rw-r--r-- | llvm/lib/VMCore/Core.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/Core.cpp b/llvm/lib/VMCore/Core.cpp index ad72095fe5d..a07464fefd3 100644 --- a/llvm/lib/VMCore/Core.cpp +++ b/llvm/lib/VMCore/Core.cpp @@ -20,6 +20,7 @@ #include "llvm/TypeSymbolTable.h" #include "llvm/ModuleProvider.h" #include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/CallSite.h" #include <cassert> #include <cstdlib> #include <cstring> @@ -798,6 +799,19 @@ LLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg) { return wrap(--I); } +void LLVMAddParamAttr(LLVMValueRef Arg, LLVMParamAttr PA) { + unwrap<Argument>(Arg)->addAttr(PA); +} + +void LLVMRemoveParamAttr(LLVMValueRef Arg, LLVMParamAttr PA) { + unwrap<Argument>(Arg)->removeAttr(PA); +} + +void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align) { + unwrap<Argument>(Arg)->addAttr( + ParamAttr::constructAlignmentFromInt(align)); +} + /*--.. Operations on basic blocks ..........................................--*/ LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB) { @@ -936,6 +950,28 @@ void LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC) { assert(0 && "LLVMSetInstructionCallConv applies only to call and invoke!"); } +void LLVMAddInstrParamAttr(LLVMValueRef Instr, unsigned index, + LLVMParamAttr PA) { + CallSite Call = CallSite(unwrap<Instruction>(Instr)); + Call.setParamAttrs( + Call.getParamAttrs().addAttr(index, PA)); +} + +void LLVMRemoveInstrParamAttr(LLVMValueRef Instr, unsigned index, + LLVMParamAttr PA) { + CallSite Call = CallSite(unwrap<Instruction>(Instr)); + Call.setParamAttrs( + Call.getParamAttrs().removeAttr(index, PA)); +} + +void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index, + unsigned align) { + CallSite Call = CallSite(unwrap<Instruction>(Instr)); + Call.setParamAttrs( + Call.getParamAttrs().addAttr(index, + ParamAttr::constructAlignmentFromInt(align))); +} + /*--.. Operations on phi nodes .............................................--*/ void LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, |