[PATCH] D67272: [Attributor] Add NoCaptureCallSiteArgument in default

Hideto Ueno via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 6 06:06:25 PDT 2019


uenoku created this revision.
uenoku added reviewers: jdoerfert, sstefan1.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.

This patch adds NoCaptureCallSiteArgument to `identifyDefaultAbstractAttributes`.


https://reviews.llvm.org/D67272

Files:
  llvm/lib/Transforms/IPO/Attributor.cpp
  llvm/test/Transforms/FunctionAttrs/align.ll
  llvm/test/Transforms/FunctionAttrs/noalias_returned.ll


Index: llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
===================================================================
--- llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
+++ llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
@@ -176,7 +176,7 @@
 ; CHECK-NEXT:   tail call void @test10_helper_1(i8* %a)
   tail call void @test10_helper_1(i8* %a)
 
-; CHECK-NEXT:   tail call void @test10_helper_2(i8* noalias %a)
+; CHECK-NEXT:   tail call void @test10_helper_2(i8* noalias nocapture %a)
   tail call void @test10_helper_2(i8* %a)
   ret void
 }
Index: llvm/test/Transforms/FunctionAttrs/align.ll
===================================================================
--- llvm/test/Transforms/FunctionAttrs/align.ll
+++ llvm/test/Transforms/FunctionAttrs/align.ll
@@ -88,7 +88,7 @@
   br i1 %2, label %3, label %5
 
 ; <label>:3:                                      ; preds = %1
-; ATTRIBUTOR: %4 = tail call align 8 i8* @f2(i8* nonnull align 8 dereferenceable(1) @a1)
+; ATTRIBUTOR: %4 = tail call align 8 i8* @f2(i8* nonnull align 8 dereferenceable(1) "no-capture-maybe-returned" @a1)
   %4 = tail call i8* @f2(i8* nonnull @a1)
 ; ATTRIBUTOR: %l = load i8, i8* %4, align 8
   %l = load i8, i8* %4
@@ -112,7 +112,7 @@
   br label %7
 
 ; <label>:5:                                      ; preds = %1
-; ATTRIBUTOR: %6 = tail call i8* @f3(i8* nonnull align 16 dereferenceable(1) @a2)
+; ATTRIBUTOR: %6 = tail call i8* @f3(i8* nocapture nonnull align 16 dereferenceable(1) @a2)
   %6 = tail call i8* @f3(i8* nonnull @a2)
   br label %7
 
@@ -128,7 +128,7 @@
   br i1 %2, label %3, label %5
 
 ; <label>:3:                                      ; preds = %1
-; ATTRIBUTOR: %4 = tail call i8* @f1(i8* nonnull align 16 dereferenceable(1) @a2)
+; ATTRIBUTOR: %4 = tail call i8* @f1(i8* nonnull align 16 dereferenceable(1) "no-capture-maybe-returned" @a2)
   %4 = tail call i8* @f1(i8* nonnull @a2)
   br label %5
 
@@ -153,11 +153,11 @@
   %ptr2 = tail call align 8 i32* @unknown()
 
   tail call void @test8(i32* %ptr1, i32* %ptr1, i32* %ptr0)
-; ATTRIBUTOR: tail call void @test8(i32* align 4 %ptr1, i32* align 4 %ptr1, i32* %ptr0)
+; ATTRIBUTOR: tail call void @test8(i32* nocapture align 4 %ptr1, i32* nocapture align 4 %ptr1, i32* nocapture %ptr0)
   tail call void @test8(i32* %ptr2, i32* %ptr1, i32* %ptr1)
-; ATTRIBUTOR: tail call void @test8(i32* align 8 %ptr2, i32* align 4 %ptr1, i32* align 4 %ptr1)
+; ATTRIBUTOR: tail call void @test8(i32* nocapture align 8 %ptr2, i32* nocapture align 4 %ptr1, i32* nocapture align 4 %ptr1)
   tail call void @test8(i32* %ptr2, i32* %ptr1, i32* %ptr1)
-; ATTRIBUTOR: tail call void @test8(i32* align 8 %ptr2, i32* align 4 %ptr1, i32* align 4 %ptr1)
+; ATTRIBUTOR: tail call void @test8(i32* nocapture align 8 %ptr2, i32* nocapture align 4 %ptr1, i32* nocapture align 4 %ptr1)
   ret void
 }
 
Index: llvm/lib/Transforms/IPO/Attributor.cpp
===================================================================
--- llvm/lib/Transforms/IPO/Attributor.cpp
+++ llvm/lib/Transforms/IPO/Attributor.cpp
@@ -3480,6 +3480,9 @@
 
         // Call site argument attribute "align".
         getOrCreateAAFor<AAAlign>(CSArgPos);
+
+        // Call site argument attribute "nocatpure".
+        getOrCreateAAFor<AANoCapture>(CSArgPos);
       }
     }
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67272.219085.patch
Type: text/x-patch
Size: 3300 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190906/486d9b05/attachment.bin>


More information about the llvm-commits mailing list