diff options
| author | Philip Reames <listmail@philipreames.com> | 2016-02-22 21:01:28 +0000 |
|---|---|---|
| committer | Philip Reames <listmail@philipreames.com> | 2016-02-22 21:01:28 +0000 |
| commit | ce38c2ddf6a575f92d8d01871061fd0d4bc2f305 (patch) | |
| tree | 5b0bccb8fc32758215e9c3e33dd16b189992c292 /llvm/test/Transforms/RewriteStatepointsForGC | |
| parent | d32f8e60bf819e75f496f060b3f01bb8dc68fc42 (diff) | |
| download | bcm5719-llvm-ce38c2ddf6a575f92d8d01871061fd0d4bc2f305.tar.gz bcm5719-llvm-ce38c2ddf6a575f92d8d01871061fd0d4bc2f305.zip | |
[RS4GC] "Constant fold" the rs4gc-split-vector-values flag
This flag was part of a migration to a new means of handling vectors-of-points which was described in the llvm-dev thread "FYI: Relocating vector of pointers". The old code path has been off by default for a while without complaints, so time to cleanup.
llvm-svn: 261569
Diffstat (limited to 'llvm/test/Transforms/RewriteStatepointsForGC')
| -rw-r--r-- | llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll | 2 | ||||
| -rw-r--r-- | llvm/test/Transforms/RewriteStatepointsForGC/live-vector.ll | 167 |
2 files changed, 1 insertions, 168 deletions
diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll b/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll index d3e25d56b6d..cc0140a97c5 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll @@ -1,6 +1,6 @@ ; Test that we can correctly handle vectors of pointers in statepoint ; rewriting. -; RUN: opt < %s -rewrite-statepoints-for-gc -rs4gc-split-vector-values=0 -S | FileCheck %s +; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s ; A non-vector relocation for comparison define i64 addrspace(1)* @test(i64 addrspace(1)* %obj) gc "statepoint-example" { diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/live-vector.ll b/llvm/test/Transforms/RewriteStatepointsForGC/live-vector.ll deleted file mode 100644 index a289d47ec81..00000000000 --- a/llvm/test/Transforms/RewriteStatepointsForGC/live-vector.ll +++ /dev/null @@ -1,167 +0,0 @@ -; Test that we can correctly handle vectors of pointers in statepoint -; rewriting. Currently, we scalarize, but that's an implementation detail. -; RUN: opt < %s -rewrite-statepoints-for-gc -rs4gc-split-vector-values -S | FileCheck %s - -; A non-vector relocation for comparison - -define i64 addrspace(1)* @test(i64 addrspace(1)* %obj) gc "statepoint-example" { -; CHECK-LABEL: test -; CHECK: gc.statepoint -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: ret i64 addrspace(1)* %obj.relocated.casted -; A base vector from a argument -entry: - call void @do_safepoint() [ "deopt"() ] - ret i64 addrspace(1)* %obj -} - -define <2 x i64 addrspace(1)*> @test2(<2 x i64 addrspace(1)*> %obj) gc "statepoint-example" { -; CHECK-LABEL: test2 -; CHECK: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: gc.statepoint -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: ret <2 x i64 addrspace(1)*> %7 -; A base vector from a load -entry: - call void @do_safepoint() [ "deopt"() ] - ret <2 x i64 addrspace(1)*> %obj -} - -define <2 x i64 addrspace(1)*> @test3(<2 x i64 addrspace(1)*>* %ptr) gc "statepoint-example" { -; CHECK-LABEL: test3 -; CHECK: load -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: gc.statepoint -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: ret <2 x i64 addrspace(1)*> %7 -; When a statepoint is an invoke rather than a call -entry: - %obj = load <2 x i64 addrspace(1)*>, <2 x i64 addrspace(1)*>* %ptr - call void @do_safepoint() [ "deopt"() ] - ret <2 x i64 addrspace(1)*> %obj -} - -declare i32 @fake_personality_function() - -define <2 x i64 addrspace(1)*> @test4(<2 x i64 addrspace(1)*>* %ptr) gc "statepoint-example" personality i32 ()* @fake_personality_function { -; CHECK-LABEL: test4 -; CHECK: load -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: gc.statepoint -entry: - %obj = load <2 x i64 addrspace(1)*>, <2 x i64 addrspace(1)*>* %ptr - invoke void @do_safepoint() [ "deopt"() ] - to label %normal_return unwind label %exceptional_return - -normal_return: ; preds = %entry -; CHECK-LABEL: normal_return: -; CHECK: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: ret <2 x i64 addrspace(1)*> %7 - ret <2 x i64 addrspace(1)*> %obj - -exceptional_return: ; preds = %entry -; CHECK-LABEL: exceptional_return: -; CHECK: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: ret <2 x i64 addrspace(1)*> %13 -; Can we handle an insert element with a constant offset? This effectively -; tests both the equal and inequal case since we have to relocate both indices -; in the vector. - %landing_pad4 = landingpad token - cleanup - ret <2 x i64 addrspace(1)*> %obj -} - -define <2 x i64 addrspace(1)*> @test5(i64 addrspace(1)* %p) gc "statepoint-example" { -; CHECK-LABEL: test5 -; CHECK: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: gc.statepoint -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: ret <2 x i64 addrspace(1)*> -; A base vector from a load -entry: - %vec = insertelement <2 x i64 addrspace(1)*> undef, i64 addrspace(1)* %p, i32 0 - call void @do_safepoint() [ "deopt"() ] - ret <2 x i64 addrspace(1)*> %vec -} - -define <2 x i64 addrspace(1)*> @test6(i1 %cnd, <2 x i64 addrspace(1)*>* %ptr) gc "statepoint-example" { -; CHECK-LABEL: test6 -entry: - br i1 %cnd, label %taken, label %untaken - -taken: ; preds = %entry - %obja = load <2 x i64 addrspace(1)*>, <2 x i64 addrspace(1)*>* %ptr - br label %merge - -untaken: ; preds = %entry - %objb = load <2 x i64 addrspace(1)*>, <2 x i64 addrspace(1)*>* %ptr - br label %merge - -merge: ; preds = %untaken, %taken -; CHECK-LABEL: merge: -; CHECK-NEXT: = phi -; CHECK-NEXT: = phi -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: extractelement -; CHECK-NEXT: gc.statepoint -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: gc.relocate -; CHECK-NEXT: bitcast -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: insertelement -; CHECK-NEXT: ret <2 x i64 addrspace(1)*> - %obj = phi <2 x i64 addrspace(1)*> [ %obja, %taken ], [ %objb, %untaken ] - call void @do_safepoint() [ "deopt"() ] - ret <2 x i64 addrspace(1)*> %obj -} - -declare void @do_safepoint() |

