summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorPeter Zotov <whitequark@whitequark.org>2014-08-03 23:54:16 +0000
committerPeter Zotov <whitequark@whitequark.org>2014-08-03 23:54:16 +0000
commitf9aa882ca18c0c67b72a73c4bc1e97ab6c1634ae (patch)
tree0f8bbc044a898d36a9796ec4368222641a31bc8c /llvm/lib
parent06f621d3496ed2549edcc763403a64812d35e2a0 (diff)
downloadbcm5719-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.cpp16
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,
OpenPOWER on IntegriCloud