diff options
author | Anna Thomas <anna@azul.com> | 2016-07-22 17:50:08 +0000 |
---|---|---|
committer | Anna Thomas <anna@azul.com> | 2016-07-22 17:50:08 +0000 |
commit | 142ea99832ea3e5d7c798b7c2736e2f1ff82f9af (patch) | |
tree | 6708f8a670f23413b8d7f5f92c11f10f91c3ba10 /clang/lib/CodeGen/CGDeclCXX.cpp | |
parent | 0be4a0e6a4256df2d14a6723723fc73e7a1d30a8 (diff) | |
download | bcm5719-llvm-142ea99832ea3e5d7c798b7c2736e2f1ff82f9af.tar.gz bcm5719-llvm-142ea99832ea3e5d7c798b7c2736e2f1ff82f9af.zip |
Clang changes for overloading invariant.start and end intrinsics
This change depends on the corresponding LLVM change at:
https://reviews.llvm.org/D22519
The llvm.invariant.start and llvm.invariant.end intrinsics currently
support specifying invariant memory objects only in the default address
space.
With this LLVM change, these intrinsics are overloaded for any adddress space
for memory objects and we can use these llvm invariant intrinsics in
non-default address spaces.
Example: llvm.invariant.start.p1i8(i64 4, i8 addrspace(1)* %ptr)
This overloaded intrinsic is needed for representing final or invariant
memory in managed languages.
llvm-svn: 276448
Diffstat (limited to 'clang/lib/CodeGen/CGDeclCXX.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGDeclCXX.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp index a2488dc2312..eb5d481bb7a 100644 --- a/clang/lib/CodeGen/CGDeclCXX.cpp +++ b/clang/lib/CodeGen/CGDeclCXX.cpp @@ -127,7 +127,9 @@ static void EmitDeclInvariant(CodeGenFunction &CGF, const VarDecl &D, // Grab the llvm.invariant.start intrinsic. llvm::Intrinsic::ID InvStartID = llvm::Intrinsic::invariant_start; - llvm::Constant *InvariantStart = CGF.CGM.getIntrinsic(InvStartID); + // Overloaded address space type. + llvm::Type *ObjectPtr[1] = {CGF.Int8PtrTy}; + llvm::Constant *InvariantStart = CGF.CGM.getIntrinsic(InvStartID, ObjectPtr); // Emit a call with the size in bytes of the object. CharUnits WidthChars = CGF.getContext().getTypeSizeInChars(D.getType()); |