diff options
| author | Duncan Sands <baldrick@free.fr> | 2009-11-10 09:08:09 +0000 |
|---|---|---|
| committer | Duncan Sands <baldrick@free.fr> | 2009-11-10 09:08:09 +0000 |
| commit | dca0c284525b915df0fa147e2463ea80696c29e7 (patch) | |
| tree | c877e5a3d10ecf5c78b2184da4ab2812687f123e /llvm/lib/CodeGen | |
| parent | f9667229a1e2be39b805651e2d5ee290456fec31 (diff) | |
| download | bcm5719-llvm-dca0c284525b915df0fa147e2463ea80696c29e7.tar.gz bcm5719-llvm-dca0c284525b915df0fa147e2463ea80696c29e7.zip | |
Codegen support for the llvm.invariant/lifetime.start/end intrinsics:
just throw them away.
llvm-svn: 86678
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/IntrinsicLowering.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp | 10 |
2 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/IntrinsicLowering.cpp b/llvm/lib/CodeGen/IntrinsicLowering.cpp index 3e3b28a8109..8a3bd0bf4e0 100644 --- a/llvm/lib/CodeGen/IntrinsicLowering.cpp +++ b/llvm/lib/CodeGen/IntrinsicLowering.cpp @@ -515,6 +515,15 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) { if (CI->getType() != Type::getVoidTy(Context)) CI->replaceAllUsesWith(ConstantInt::get(CI->getType(), 1)); break; + case Intrinsic::invariant_start: + case Intrinsic::lifetime_start: + // Discard region information. + CI->replaceAllUsesWith(UndefValue::get(CI->getType())); + break; + case Intrinsic::invariant_end: + case Intrinsic::lifetime_end: + // Discard region information. + break; } assert(CI->use_empty() && diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp index ee8bf791715..9818e62a404 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp @@ -4409,6 +4409,16 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) { return implVisitBinaryAtomic(I, ISD::ATOMIC_LOAD_UMAX); case Intrinsic::atomic_swap: return implVisitBinaryAtomic(I, ISD::ATOMIC_SWAP); + + case Intrinsic::invariant_start: + case Intrinsic::lifetime_start: + // Discard region information. + setValue(&I, DAG.getUNDEF(TLI.getPointerTy())); + return 0; + case Intrinsic::invariant_end: + case Intrinsic::lifetime_end: + // Discard region information. + return 0; } } |

