<div dir="ltr">I tried to update new.cpp to make it pass with this change.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 13, 2015 at 11:16 AM, Chris Bieneman via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">This change caused the following bot failure:<div><br></div><div><a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/12131/consoleFull#6159817088254eaf0-7326-4999-85b0-388101f2d404" target="_blank">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/12131/consoleFull#6159817088254eaf0-7326-4999-85b0-388101f2d404</a></div><div><br></div><div>-Chris</div><div><div class="h5"><div><br><div><blockquote type="cite"><div>On Aug 13, 2015, at 10:40 AM, Igor Laevsky via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:</div><br><div>Author: igor.laevsky<br>Date: Thu Aug 13 12:40:04 2015<br>New Revision: 244920<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=244920&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=244920&view=rev</a><br>Log:<br>Emit argmemonly attribute for intrinsics.<br><br>Differential Revision: <a href="http://reviews.llvm.org/D11352" target="_blank">http://reviews.llvm.org/D11352</a><br><br><br>Modified:<br> llvm/trunk/test/Analysis/BasicAA/cs-cs.ll<br> llvm/trunk/test/Analysis/BasicAA/intrinsics.ll<br> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll<br> llvm/trunk/test/Bitcode/compatibility-3.6.ll<br> llvm/trunk/test/Bitcode/compatibility.ll<br> llvm/trunk/test/Transforms/Inline/inline_invoke.ll<br> llvm/trunk/test/Transforms/Inline/noalias-calls.ll<br> llvm/trunk/test/Transforms/MemCpyOpt/memcpy.ll<br> llvm/trunk/test/Transforms/ObjCARC/nested.ll<br> llvm/trunk/utils/TableGen/CodeGenIntrinsics.h<br> llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp<br><br>Modified: llvm/trunk/test/Analysis/BasicAA/cs-cs.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/BasicAA/cs-cs.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/BasicAA/cs-cs.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Analysis/BasicAA/cs-cs.ll (original)<br>+++ llvm/trunk/test/Analysis/BasicAA/cs-cs.ll Thu Aug 13 12:40:04 2015<br>@@ -22,18 +22,18 @@ entry:<br> ; CHECK-LABEL: Function: test1:<br><br> ; CHECK: NoAlias: i8* %p, i8* %q<br>-; CHECK: Just Ref: Ptr: i8* %p <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: Ptr: i8* %q <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>+; CHECK: Just Ref: Ptr: i8* %p <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: Ptr: i8* %q <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br> ; CHECK: NoModRef: Ptr: i8* %p <-> call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16)<br> ; CHECK: Both ModRef: Ptr: i8* %q <-> call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16)<br>-; CHECK: Just Ref: Ptr: i8* %p <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: Ptr: i8* %q <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1 <-> call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16)<br>-; CHECK: NoModRef: %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1 <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16) <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16) <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1 <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1<br>-; CHECK: NoModRef: %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #1 <-> call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16)<br>+; CHECK: Just Ref: Ptr: i8* %p <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: Ptr: i8* %q <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4 <-> call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16)<br>+; CHECK: NoModRef: %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4 <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16) <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16) <-> %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4 <-> %a = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4<br>+; CHECK: NoModRef: %b = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %p, i32 16) #4 <-> call void @llvm.arm.neon.vst1.v8i16(i8* %q, <8 x i16> %y, i32 16)<br> }<br><br> define void @test2(i8* %P, i8* %Q) nounwind ssp {<br>@@ -233,7 +233,9 @@ define void @test6(i8* %P) nounwind ssp<br> ; CHECK: Just Ref: call void @a_readonly_func(i8* %P) <-> call void @llvm.memset.p0i8.i64(i8* %P, i8 -51, i64 32, i32 8, i1 false)<br> }<br><br>-attributes #0 = { nounwind readonly }<br>-attributes #1 = { nounwind }<br>+attributes #0 = { nounwind readonly argmemonly }<br>+attributes #1 = { nounwind argmemonly }<br> attributes #2 = { noinline nounwind readonly }<br> attributes #3 = { nounwind ssp }<br>+attributes #4 = { nounwind }<br>+<br><br>Modified: llvm/trunk/test/Analysis/BasicAA/intrinsics.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/BasicAA/intrinsics.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/BasicAA/intrinsics.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Analysis/BasicAA/intrinsics.ll (original)<br>+++ llvm/trunk/test/Analysis/BasicAA/intrinsics.ll Thu Aug 13 12:40:04 2015<br>@@ -38,5 +38,6 @@ entry:<br> declare <8 x i16> @llvm.arm.neon.vld1.v8i16(i8*, i32) nounwind readonly<br> declare void @llvm.arm.neon.vst1.v8i16(i8*, <8 x i16>, i32) nounwind<br><br>-; CHECK: attributes #0 = { nounwind readonly }<br>+; CHECK: attributes #0 = { nounwind readonly argmemonly }<br>+; CHECK: attributes #1 = { nounwind argmemonly }<br> ; CHECK: attributes [[ATTR]] = { nounwind }<br><br>Modified: llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll (original)<br>+++ llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll Thu Aug 13 12:40:04 2015<br>@@ -22,7 +22,8 @@ entry:<br> declare <8 x i16> @llvm.arm.neon.vld1.v8i16(i8*, i32) nounwind readonly<br> declare void @llvm.arm.neon.vst1.v8i16(i8*, <8 x i16>, i32) nounwind<br><br>-; CHECK: attributes #0 = { nounwind readonly }<br>+; CHECK: attributes #0 = { nounwind readonly argmemonly }<br>+; CHECK: attributes #1 = { nounwind argmemonly }<br> ; CHECK: attributes [[NUW]] = { nounwind }<br><br> !0 = !{!"tbaa root", null}<br><br>Modified: llvm/trunk/test/Bitcode/compatibility-3.6.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/compatibility-3.6.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/compatibility-3.6.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Bitcode/compatibility-3.6.ll (original)<br>+++ llvm/trunk/test/Bitcode/compatibility-3.6.ll Thu Aug 13 12:40:04 2015<br>@@ -981,7 +981,7 @@ exit:<br> ; CHECK: select <2 x i1> <i1 true, i1 false>, <2 x i8> <i8 2, i8 3>, <2 x i8> <i8 3, i8 2><br><br> call void @f.nobuiltin() builtin<br>- ; CHECK: call void @f.nobuiltin() #31<br>+ ; CHECK: call void @f.nobuiltin() #33<br><br> call fastcc noalias i32* @f.noalias() noinline<br> ; CHECK: call fastcc noalias i32* @f.noalias() #11<br>@@ -1179,7 +1179,11 @@ define void @intrinsics.codegen() {<br> ; CHECK: attributes #26 = { sspstrong }<br> ; CHECK: attributes #27 = { uwtable }<br> ; CHECK: attributes #28 = { "cpu"="cortex-a8" }<br>-; CHECK: attributes #31 = { builtin }<br>+; CHECK: attributes #29 = { nounwind readnone }<br>+; CHECK: attributes #30 = { nounwind readonly argmemonly }<br>+; CHECK: attributes #31 = { nounwind argmemonly }<br>+; CHECK: attributes #32 = { nounwind readonly }<br>+; CHECK: attributes #33 = { builtin }<br><br> ;; Metadata<br><br><br>Modified: llvm/trunk/test/Bitcode/compatibility.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/compatibility.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/compatibility.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Bitcode/compatibility.ll (original)<br>+++ llvm/trunk/test/Bitcode/compatibility.ll Thu Aug 13 12:40:04 2015<br>@@ -1024,7 +1024,7 @@ exit:<br> ; CHECK: select <2 x i1> <i1 true, i1 false>, <2 x i8> <i8 2, i8 3>, <2 x i8> <i8 3, i8 2><br><br> call void @f.nobuiltin() builtin<br>- ; CHECK: call void @f.nobuiltin() #34<br>+ ; CHECK: call void @f.nobuiltin() #36<br><br> call fastcc noalias i32* @f.noalias() noinline<br> ; CHECK: call fastcc noalias i32* @f.noalias() #12<br>@@ -1245,8 +1245,10 @@ define void @misc.metadata() {<br> ; CHECK: attributes #30 = { uwtable }<br> ; CHECK: attributes #31 = { "cpu"="cortex-a8" }<br> ; CHECK: attributes #32 = { nounwind readnone }<br>-; CHECK: attributes #33 = { nounwind readonly }<br>-; CHECK: attributes #34 = { builtin }<br>+; CHECK: attributes #33 = { nounwind readonly argmemonly }<br>+; CHECK: attributes #34 = { nounwind argmemonly }<br>+; CHECK: attributes #35 = { nounwind readonly }<br>+; CHECK: attributes #36 = { builtin }<br><br> ;; Metadata<br><br><br>Modified: llvm/trunk/test/Transforms/Inline/inline_invoke.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_invoke.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_invoke.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Transforms/Inline/inline_invoke.ll (original)<br>+++ llvm/trunk/test/Transforms/Inline/inline_invoke.ll Thu Aug 13 12:40:04 2015<br>@@ -344,4 +344,5 @@ terminate:<br> ; CHECK: attributes [[NUW]] = { nounwind }<br> ; CHECK: attributes #1 = { nounwind readnone }<br> ; CHECK: attributes #2 = { ssp uwtable }<br>-; CHECK: attributes #3 = { noreturn nounwind }<br>+; CHECK: attributes #3 = { nounwind argmemonly }<br>+; CHECK: attributes #4 = { noreturn nounwind }<br><br>Modified: llvm/trunk/test/Transforms/Inline/noalias-calls.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/noalias-calls.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/noalias-calls.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Transforms/Inline/noalias-calls.ll (original)<br>+++ llvm/trunk/test/Transforms/Inline/noalias-calls.ll Thu Aug 13 12:40:04 2015<br>@@ -16,24 +16,25 @@ entry:<br> ret void<br> }<br><br>-define void @foo(i8* nocapture %a, i8* nocapture readonly %c, i8* nocapture %b) #1 {<br>+define void @foo(i8* nocapture %a, i8* nocapture readonly %c, i8* nocapture %b) #2 {<br> entry:<br> tail call void @hello(i8* %a, i8* %c, i8* %b)<br> ret void<br> }<br><br>-; CHECK: define void @foo(i8* nocapture %a, i8* nocapture readonly %c, i8* nocapture %b) #1 {<br>+; CHECK: define void @foo(i8* nocapture %a, i8* nocapture readonly %c, i8* nocapture %b) #2 {<br> ; CHECK: entry:<br>-; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %b, i64 16, i32 16, i1 false) #0, !noalias !0<br>-; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %b, i8* %c, i64 16, i32 16, i1 false) #0, !noalias !3<br>-; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %c, i64 16, i32 16, i1 false) #0, !alias.scope !5<br>-; CHECK: call void @hey() #0, !noalias !5<br>-; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %{{.*}}, i8* %c, i64 16, i32 16, i1 false) #0, !noalias !3<br>+; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %b, i64 16, i32 16, i1 false) #1, !noalias !0<br>+; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %b, i8* %c, i64 16, i32 16, i1 false) #1, !noalias !3<br>+; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %c, i64 16, i32 16, i1 false) #1, !alias.scope !5<br>+; CHECK: call void @hey() #1, !noalias !5<br>+; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %{{.*}}, i8* %c, i64 16, i32 16, i1 false) #1, !noalias !3<br> ; CHECK: ret void<br> ; CHECK: }<br><br>-attributes #0 = { nounwind }<br>-attributes #1 = { nounwind uwtable }<br>+attributes #0 = { nounwind argmemonly }<br>+attributes #1 = { nounwind }<br>+attributes #2 = { nounwind uwtable }<br><br> ; CHECK: !0 = !{!1}<br> ; CHECK: !1 = distinct !{!1, !2, !"hello: %c"}<br><br>Modified: llvm/trunk/test/Transforms/MemCpyOpt/memcpy.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/MemCpyOpt/memcpy.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/MemCpyOpt/memcpy.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Transforms/MemCpyOpt/memcpy.ll (original)<br>+++ llvm/trunk/test/Transforms/MemCpyOpt/memcpy.ll Thu Aug 13 12:40:04 2015<br>@@ -206,5 +206,6 @@ declare void @f1(%struct.big* nocapture<br> declare void @f2(%struct.big*)<br><br> ; CHECK: attributes [[NUW]] = { nounwind }<br>-; CHECK: attributes #1 = { nounwind ssp }<br>-; CHECK: attributes #2 = { nounwind ssp uwtable }<br>+; CHECK: attributes #1 = { nounwind argmemonly }<br>+; CHECK: attributes #2 = { nounwind ssp }<br>+; CHECK: attributes #3 = { nounwind ssp uwtable }<br><br>Modified: llvm/trunk/test/Transforms/ObjCARC/nested.ll<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ObjCARC/nested.ll?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ObjCARC/nested.ll?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Transforms/ObjCARC/nested.ll (original)<br>+++ llvm/trunk/test/Transforms/ObjCARC/nested.ll Thu Aug 13 12:40:04 2015<br>@@ -819,5 +819,7 @@ entry:<br> ret void<br> }<br><br>-; CHECK: attributes [[NUW]] = { nounwind }<br>+<br>+; CHECK: attributes #0 = { nounwind argmemonly }<br> ; CHECK: attributes #1 = { nonlazybind }<br>+; CHECK: attributes [[NUW]] = { nounwind }<br><br>Modified: llvm/trunk/utils/TableGen/CodeGenIntrinsics.h<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenIntrinsics.h?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenIntrinsics.h?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/utils/TableGen/CodeGenIntrinsics.h (original)<br>+++ llvm/trunk/utils/TableGen/CodeGenIntrinsics.h Thu Aug 13 12:40:04 2015<br>@@ -60,9 +60,10 @@ namespace llvm {<br> IntrinsicSignature IS;<br><br> // Memory mod/ref behavior of this intrinsic.<br>- enum {<br>+ enum ModRefKind {<br> NoMem, ReadArgMem, ReadMem, ReadWriteArgMem, ReadWriteMem<br>- } ModRef;<br>+ };<br>+ ModRefKind ModRef;<br><br> /// This is set to true if the intrinsic is overloaded by its argument<br> /// types.<br><br>Modified: llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp?rev=244920&r1=244919&r2=244920&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp?rev=244920&r1=244919&r2=244920&view=diff</a><br>==============================================================================<br>--- llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp (original)<br>+++ llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp Thu Aug 13 12:40:04 2015<br>@@ -503,28 +503,6 @@ void IntrinsicEmitter::EmitGenerator(con<br> }<br><br> namespace {<br>-enum ModRefKind {<br>- MRK_none,<br>- MRK_readonly,<br>- MRK_readnone<br>-};<br>-}<br>-<br>-static ModRefKind getModRefKind(const CodeGenIntrinsic &intrinsic) {<br>- switch (intrinsic.ModRef) {<br>- case CodeGenIntrinsic::NoMem:<br>- return MRK_readnone;<br>- case CodeGenIntrinsic::ReadArgMem:<br>- case CodeGenIntrinsic::ReadMem:<br>- return MRK_readonly;<br>- case CodeGenIntrinsic::ReadWriteArgMem:<br>- case CodeGenIntrinsic::ReadWriteMem:<br>- return MRK_none;<br>- }<br>- llvm_unreachable("bad mod-ref kind");<br>-}<br>-<br>-namespace {<br> struct AttributeComparator {<br> bool operator()(const CodeGenIntrinsic *L, const CodeGenIntrinsic *R) const {<br> // Sort throwing intrinsics after non-throwing intrinsics.<br>@@ -541,8 +519,8 @@ struct AttributeComparator {<br> return R->isConvergent;<br><br> // Try to order by readonly/readnone attribute.<br>- ModRefKind LK = getModRefKind(*L);<br>- ModRefKind RK = getModRefKind(*R);<br>+ CodeGenIntrinsic::ModRefKind LK = L->ModRef;<br>+ CodeGenIntrinsic::ModRefKind RK = R->ModRef;<br> if (LK != RK) return (LK > RK);<br><br> // Order by argument attributes.<br>@@ -649,10 +627,10 @@ EmitAttributes(const std::vector<CodeGen<br> }<br> }<br><br>- ModRefKind modRef = getModRefKind(intrinsic);<br>-<br>- if (!intrinsic.canThrow || modRef || intrinsic.isNoReturn ||<br>- intrinsic.isNoDuplicate || intrinsic.isConvergent) {<br>+ if (!intrinsic.canThrow ||<br>+ intrinsic.ModRef != CodeGenIntrinsic::ReadWriteMem ||<br>+ intrinsic.isNoReturn || intrinsic.isNoDuplicate ||<br>+ intrinsic.isConvergent) {<br> OS << " const Attribute::AttrKind Atts[] = {";<br> bool addComma = false;<br> if (!intrinsic.canThrow) {<br>@@ -678,17 +656,29 @@ EmitAttributes(const std::vector<CodeGen<br> addComma = true;<br> }<br><br>- switch (modRef) {<br>- case MRK_none: break;<br>- case MRK_readonly:<br>+ switch (intrinsic.ModRef) {<br>+ case CodeGenIntrinsic::NoMem:<br>+ if (addComma)<br>+ OS << ",";<br>+ OS << "Attribute::ReadNone";<br>+ break;<br>+ case CodeGenIntrinsic::ReadArgMem:<br>+ if (addComma)<br>+ OS << ",";<br>+ OS << "Attribute::ReadOnly,";<br>+ OS << "Attribute::ArgMemOnly";<br>+ break;<br>+ case CodeGenIntrinsic::ReadMem:<br> if (addComma)<br> OS << ",";<br> OS << "Attribute::ReadOnly";<br> break;<br>- case MRK_readnone:<br>+ case CodeGenIntrinsic::ReadWriteArgMem:<br> if (addComma)<br> OS << ",";<br>- OS << "Attribute::ReadNone";<br>+ OS << "Attribute::ArgMemOnly";<br>+ break;<br>+ case CodeGenIntrinsic::ReadWriteMem:<br> break;<br> }<br> OS << "};\n";<br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br></div></blockquote></div><br></div></div></div></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>