diff options
author | Peter Zotov <whitequark@whitequark.org> | 2014-08-03 23:54:16 +0000 |
---|---|---|
committer | Peter Zotov <whitequark@whitequark.org> | 2014-08-03 23:54:16 +0000 |
commit | f9aa882ca18c0c67b72a73c4bc1e97ab6c1634ae (patch) | |
tree | 0f8bbc044a898d36a9796ec4368222641a31bc8c /llvm/lib | |
parent | 06f621d3496ed2549edcc763403a64812d35e2a0 (diff) | |
download | bcm5719-llvm-f9aa882ca18c0c67b72a73c4bc1e97ab6c1634ae.tar.gz bcm5719-llvm-f9aa882ca18c0c67b72a73c4bc1e97ab6c1634ae.zip |
[LLVM-C] Add LLVM{IsConstantString,GetAsString,GetElementAsConstant}.
llvm-svn: 214676
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/IR/Core.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index 87099a6c4e1..8bc0bb92e60 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -790,11 +790,27 @@ LLVMValueRef LLVMConstString(const char *Str, unsigned Length, return LLVMConstStringInContext(LLVMGetGlobalContext(), Str, Length, DontNullTerminate); } + +LLVMValueRef LLVMGetElementAsConstant(LLVMValueRef c, unsigned idx) { + return wrap(static_cast<ConstantDataSequential*>(unwrap(c))->getElementAsConstant(idx)); +} + +LLVMBool LLVMIsConstantString(LLVMValueRef c) { + return static_cast<ConstantDataSequential*>(unwrap(c))->isString(); +} + +const char *LLVMGetAsString(LLVMValueRef c, size_t* Length) { + StringRef str = static_cast<ConstantDataSequential*>(unwrap(c))->getAsString(); + *Length = str.size(); + return str.data(); +} + LLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy, LLVMValueRef *ConstantVals, unsigned Length) { ArrayRef<Constant*> V(unwrap<Constant>(ConstantVals, Length), Length); return wrap(ConstantArray::get(ArrayType::get(unwrap(ElementTy), Length), V)); } + LLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed) { return LLVMConstStructInContext(LLVMGetGlobalContext(), ConstantVals, Count, |