Index: lib/CodeGen/IntrinsicLowering.cpp =================================================================== --- lib/CodeGen/IntrinsicLowering.cpp +++ lib/CodeGen/IntrinsicLowering.cpp @@ -475,6 +475,11 @@ case Intrinsic::assume: case Intrinsic::var_annotation: break; // Strip out these intrinsics + + case Intrinsic::noalias: + // Just forward the value + CI->replaceAllUsesWith(CI->getOperand(0)); + break; case Intrinsic::memcpy: { Type *IntPtr = DL.getIntPtrType(Context); Index: lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp =================================================================== --- lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -5621,6 +5621,7 @@ case Intrinsic::annotation: case Intrinsic::ptr_annotation: case Intrinsic::invariant_group_barrier: + case Intrinsic::noalias: // Drop the intrinsic, but forward the value setValue(&I, getValue(I.getOperand(0))); return nullptr; Index: test/CodeGen/Generic/noalias.ll =================================================================== --- /dev/null +++ test/CodeGen/Generic/noalias.ll @@ -0,0 +1,12 @@ +; RUN: llc < %s + +define i8* @main(i8* %p) { + %v = call i8* @llvm.noalias.p0i8(i8* %p, metadata !1) + ret i8* %v +} + +declare i8* @llvm.noalias.p0i8(i8*, metadata) nounwind + +!0 = !{!0, !"some domain"} +!1 = !{!1, !0, !"some scope"} +