[PATCH] D20293: [RewriteStatepointsForGC] Remove obsolete assertion

Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 17 07:00:27 PDT 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL269764: [RewriteStatepointsForGC] Remove obsolete assertion (authored by igor.laevsky).

Changed prior to commit:
  http://reviews.llvm.org/D20293?vs=57377&id=57475#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D20293

Files:
  llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
  llvm/trunk/test/Transforms/RewriteStatepointsForGC/constants.ll

Index: llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
+++ llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
@@ -1055,14 +1055,6 @@
             DT->dominates(cast<Instruction>(base)->getParent(),
                           cast<Instruction>(ptr)->getParent())) &&
            "The base we found better dominate the derived pointer");
-
-    // If you see this trip and like to live really dangerously, the code should
-    // be correct, just with idioms the verifier can't handle.  You can try
-    // disabling the verifier at your own substantial risk.
-    assert(!isa<ConstantPointerNull>(base) &&
-           "the relocation code needs adjustment to handle the relocation of "
-           "a null pointer constant without causing false positives in the "
-           "safepoint ir verifier.");
   }
 }
 
Index: llvm/trunk/test/Transforms/RewriteStatepointsForGC/constants.ll
===================================================================
--- llvm/trunk/test/Transforms/RewriteStatepointsForGC/constants.ll
+++ llvm/trunk/test/Transforms/RewriteStatepointsForGC/constants.ll
@@ -95,3 +95,25 @@
   %res = extractelement <2 x i8 addrspace(1)*> <i8 addrspace(1)* @G, i8 addrspace(1)* @G>, i32 0
   ret i8 addrspace(1)* %res
 }
+
+define i8 addrspace(1)* @test6(i64 %arg) gc "statepoint-example" {
+entry:
+  ; Don't fail any assertions and don't record null as a live value
+  ; CHECK-LABEL: test6
+  ; CHECK: gc.statepoint
+  ; CHECK-NOT: call {{.*}}gc.relocate
+  %load_addr = getelementptr i8, i8 addrspace(1)* null, i64 %arg
+  call void @foo() [ "deopt"() ]
+  ret i8 addrspace(1)* %load_addr
+}
+
+define i8 addrspace(1)* @test7(i64 %arg) gc "statepoint-example" {
+entry:
+  ; Same as test7 but use regular constant instead of a null
+  ; CHECK-LABEL: test7
+  ; CHECK: gc.statepoint
+  ; CHECK-NOT: call {{.*}}gc.relocate
+  %load_addr = getelementptr i8, i8 addrspace(1)* inttoptr (i64 15 to i8 addrspace(1)*), i64 %arg
+  call void @foo() [ "deopt"() ]
+  ret i8 addrspace(1)* %load_addr
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20293.57475.patch
Type: text/x-patch
Size: 2166 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160517/a6824f0e/attachment.bin>


More information about the llvm-commits mailing list