Clang changes for overloading invariant.start and end intrinsics
authorAnna Thomas <anna@azul.com>
Fri, 22 Jul 2016 17:50:08 +0000 (17:50 +0000)
committerAnna Thomas <anna@azul.com>
Fri, 22 Jul 2016 17:50:08 +0000 (17:50 +0000)
commit142ea99832ea3e5d7c798b7c2736e2f1ff82f9af
tree6708f8a670f23413b8d7f5f92c11f10f91c3ba10
parent0be4a0e6a4256df2d14a6723723fc73e7a1d30a8
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
clang/lib/CodeGen/CGDeclCXX.cpp
clang/test/CodeGenCXX/init-invariant.cpp