Update to the new EH scheme.
authorBill Wendling <isanbard@gmail.com>
Thu, 25 Aug 2011 23:48:37 +0000 (23:48 +0000)
committerBill Wendling <isanbard@gmail.com>
Thu, 25 Aug 2011 23:48:37 +0000 (23:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138606 91177308-0d34-0410-b5e6-96231b3b80d8

test/Assembler/2003-06-17-InvokeDisassemble.ll
test/CodeGen/Generic/2004-02-08-UnwindSupport.ll
test/CodeGen/Generic/2007-02-25-invoke.ll
test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
test/CodeGen/Generic/2007-12-31-UnusedSelector.ll
test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll
test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll

index 922a996cd7dda4fc3c8c85c6ce02fa6c3ed5cfb5..8a9670e57bf987181e693626126d531efe2f586a 100644 (file)
@@ -1,9 +1,13 @@
 ; RUN: llvm-as < %s | llvm-dis
 
 define void @test() {
-        invoke void @test( )
-                        to label %Next unwind label %Next
+  invoke void @test( )
+    to label %Next unwind label %Next
 
 Next:           ; preds = %0, %0
-        ret void
+  %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            cleanup
+  ret void
 }
+
+declare i32 @__gxx_personality_v0(...)
index 393062abf78e1ec01fee250a188153c929d738c2..30589f572e56003b2964fbaa3522c9b73701fc0d 100644 (file)
@@ -12,6 +12,9 @@ cont:           ; preds = %0
         ret i32 1
 
 EH:             ; preds = %0
-        ret i32 0
+  %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            cleanup
+  ret i32 0
 }
 
+declare i32 @__gxx_personality_v0(...)
index 6e20eaae3bde339e8663578a43686b30b8b2dbd6..7850cec35f9ef5d50697ddd4ab5d61a8274825d1 100644 (file)
@@ -8,5 +8,9 @@ define i32 @test2() {
 invcont:
         ret i32 %A
 blat:
-        ret i32 0
+  %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            cleanup
+  ret i32 0
 }
+
+declare i32 @__gxx_personality_v0(...)
index 2a2cf6cfb873a40673970034d543bd02d21afb4d..407696f4c2ff6777b28edf84ee9fff7f43ecf754 100644 (file)
@@ -45,7 +45,9 @@ cond_next1328:                ; preds = %cond_true235, %cond_true
        ret void
 
 cond_true1402:         ; preds = %invcont282, %cond_false280, %cond_true235, %cond_true
-       ret void
+  %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            cleanup
+  ret void
 }
 
 declare void @_ZNSs14_M_replace_auxEjjjc()
@@ -57,3 +59,5 @@ declare void @_ZNSs6assignEPKcj()
 declare void @_ZNSs7reserveEj()
 
 declare void @_ZNSs6appendEPKcj()
+
+declare i32 @__gxx_personality_v0(...)
index 5df2200dec76d10bf1de1af8dc5589f7b327354b..ed1d2f8b839e458b0deb649350747672af46ac9e 100644 (file)
@@ -2,12 +2,16 @@
 
 define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() {
 entry:
-       invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null )
-                       to label %.noexc unwind label %cleanup144
+  invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null )
+      to label %.noexc unwind label %cleanup144
 
 .noexc:                ; preds = %entry
-       ret void
+  ret void
 
 cleanup144:            ; preds = %entry
-       unwind
+  %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
+            cleanup
+  unwind
 }
+
+declare i32 @__gxx_personality_v0(...)
index 00e027b8d3c8355c9bc1d3832e69141b61b51de4..943ed88febe9fb78a61f1fd733d4344d0b3d1ef4 100644 (file)
@@ -14,11 +14,14 @@ bb14:               ; preds = %lpad
        unreachable
 
 lpad:          ; preds = %entry
+        %lpad1 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+                  catch i8* null
        invoke void @__cxa_end_catch( )
                        to label %bb14 unwind label %lpad17
 
 lpad17:                ; preds = %lpad
-       %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* null, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null )                ; <i32> [#uses=0]
+        %lpad2 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+                  catch i8* null
        unreachable
 
 UnifiedUnreachableBlock:               ; preds = %entry
index 112cac4f96445ace4301c4bcdbe3025f53e9aff2..ad418f7cfb0d5eb90a7975954908538847cf3701 100644 (file)
@@ -11,5 +11,9 @@ dummy:
   invoke i32 @b() to label %reg unwind label %reg
 
 reg:
+  %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            catch i8* null
   ret void
 }
+
+declare i32 @__gxx_personality_v0(...)
index 22bd4d7e6a412f0054862a6abb0f97bbb3ebb6c8..3cbf4c5665b237a5699678b707fee0cfb72154e3 100644 (file)
@@ -64,10 +64,16 @@ invcont38:                                        ; preds = %invcont25, %bb1.i,
 
 lpad:                                             ; preds = %bb.i93, %invcont24, %bb1.i, %invcont8
   %__extracted.1 = phi i32 [ 0, %invcont8 ], [ %2, %bb1.i ], [ undef, %bb.i93 ], [ undef, %invcont24 ] ; <i32> [#uses=0]
-  %eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=1]
+  %lpad1 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            catch i8* null
+  %eh_ptr = extractvalue { i8*, i32 } %lpad1, 0
   %6 = call i8* @__cxa_begin_catch(i8* %eh_ptr) nounwind ; <i8*> [#uses=0]
   unreachable
 
 lpad74:                                           ; preds = %entry
+  %lpad2 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
+            cleanup
   unreachable
 }
+
+declare i32 @__gxx_personality_v0(...)
index a3cab5d2e45310ec9a2bd442f40545e2323f482c..e709080bfc5a9b08f3414fc193ed5625df7235ef 100644 (file)
@@ -13,6 +13,9 @@ normal:
        ret void
   
 handler:
+        %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
+                 catch i8* null
        ret void
 }
 
+declare i32 @__gxx_personality_v0(...)