summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll')
-rw-r--r--llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll17
1 files changed, 7 insertions, 10 deletions
diff --git a/llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll b/llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll
index a7b97385e90..abdbc3826c5 100644
--- a/llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll
+++ b/llvm/test/CodeGen/WinEH/cppeh-min-unwind.ll
@@ -18,18 +18,16 @@
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
-; This structure should be created for the frame allocation.
-; CHECK: %struct._Z4testv.ehdata = type { i32, i8*, %class.SomeClass }
-
%class.SomeClass = type { [28 x i32] }
; The function entry should be rewritten like this.
; CHECK: define void @_Z4testv() #0 {
; CHECK: entry:
-; CHECK: %frame.alloc = call i8* @llvm.frameallocate(i32 128)
-; CHECK: %eh.data = bitcast i8* %frame.alloc to %struct._Z4testv.ehdata*
-; CHECK-NOT: %obj = alloca %class.SomeClass, align 4
-; CHECK: %obj = getelementptr inbounds %struct._Z4testv.ehdata, %struct._Z4testv.ehdata* %eh.data, i32 0, i32 2
+; CHECK: %obj = alloca %class.SomeClass, align 4
+; CHECK: call void @_ZN9SomeClassC1Ev(%class.SomeClass* %obj)
+; CHECK: call void (...)* @llvm.frameescape(%class.SomeClass* %obj)
+; CHECK: invoke void @_Z9may_throwv()
+; CHECK: to label %invoke.cont unwind label %lpad
; Function Attrs: uwtable
define void @_Z4testv() #0 {
@@ -66,9 +64,8 @@ eh.resume: ; preds = %lpad
; This cleanup handler should be outlined.
; CHECK: define internal void @_Z4testv.cleanup(i8*, i8*) {
; CHECK: entry:
-; CHECK: %eh.alloc = call i8* @llvm.framerecover(i8* bitcast (void ()* @_Z4testv to i8*), i8* %1)
-; CHECK: %eh.data = bitcast i8* %eh.alloc to %struct._Z4testv.ehdata*
-; CHECK: %obj = getelementptr inbounds %struct._Z4testv.ehdata, %struct._Z4testv.ehdata* %eh.data, i32 0, i32 2
+; CHECK: %obj.i8 = call i8* @llvm.framerecover(i8* bitcast (void ()* @_Z4testv to i8*), i8* %1, i32 0)
+; CHECK: %obj = bitcast i8* %obj.i8 to %class.SomeClass*
; CHECK: call void @_ZN9SomeClassD1Ev(%class.SomeClass* %obj)
; CHECK: ret void
; CHECK: }
OpenPOWER on IntegriCloud