diff options
Diffstat (limited to 'llvm/test/Regression/Transforms/Inline')
28 files changed, 0 insertions, 1965 deletions
diff --git a/llvm/test/Regression/Transforms/Inline/.cvsignore b/llvm/test/Regression/Transforms/Inline/.cvsignore deleted file mode 100644 index 7f2443f2f31..00000000000 --- a/llvm/test/Regression/Transforms/Inline/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Output -*.log -*.sum diff --git a/llvm/test/Regression/Transforms/Inline/2003-09-14-InlineValue.ll b/llvm/test/Regression/Transforms/Inline/2003-09-14-InlineValue.ll deleted file mode 100644 index 48d563366be..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2003-09-14-InlineValue.ll +++ /dev/null @@ -1,20 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output - -declare int %External() - -implementation - -internal int %Callee() { - %I = call int %External() - %J = add int %I, %I - ret int %J -} - -int %Caller() { - %V = invoke int %Callee() to label %Ok except label %Bad -Ok: - ret int %V -Bad: - ret int 0 -} - diff --git a/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodeInlineFail.ll b/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodeInlineFail.ll deleted file mode 100644 index 6e4d1b39e7e..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodeInlineFail.ll +++ /dev/null @@ -1,17 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output -implementation - -int %main() { -entry: - invoke void %__main( ) - to label %LongJmpBlkPre except label %LongJmpBlkPre - -LongJmpBlkPre: - %i.3 = phi uint [ 0, %entry ], [ 0, %entry] - ret int 0 -} - -void %__main() { - ret void -} - diff --git a/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodesInExceptionDest.ll b/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodesInExceptionDest.ll deleted file mode 100644 index e73199c29c1..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodesInExceptionDest.ll +++ /dev/null @@ -1,26 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output - -implementation - -int %main() { -entry: - invoke void %__main( ) - to label %Call2Invoke except label %LongJmpBlkPre - -Call2Invoke: - br label %LongJmpBlkPre - -LongJmpBlkPre: - %i.3 = phi uint [ 0, %entry ], [ 0, %Call2Invoke ] ; <uint> [#uses=0] - ret int 0 -} - -void %__main() { - call void %__llvm_getGlobalCtors( ) - call void %__llvm_getGlobalDtors( ) - ret void -} - -declare void %__llvm_getGlobalCtors() - -declare void %__llvm_getGlobalDtors() diff --git a/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodesInNormalInvokeDest.ll b/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodesInNormalInvokeDest.ll deleted file mode 100644 index 774639b744e..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2003-09-22-PHINodesInNormalInvokeDest.ll +++ /dev/null @@ -1,24 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output -implementation - -int %main() { -entry: - invoke void %__main( ) - to label %else except label %RethrowExcept - -else: - %i.2 = phi int [ 36, %entry ], [ %i.2, %LJDecisionBB ] - br label %LJDecisionBB - -LJDecisionBB: - br label %else - -RethrowExcept: - ret int 0 -} - -void %__main() { - ret void -} - - diff --git a/llvm/test/Regression/Transforms/Inline/2003-10-13-AllocaDominanceProblem.ll b/llvm/test/Regression/Transforms/Inline/2003-10-13-AllocaDominanceProblem.ll deleted file mode 100644 index ca163edc5cc..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2003-10-13-AllocaDominanceProblem.ll +++ /dev/null @@ -1,19 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output - -implementation ; Functions: - -int %reload() { -reloadentry: - br label %A -A: - call void %callee( ) - ret int 0 -} - -internal void %callee() { -entry: - %X = alloca sbyte, uint 0 - %Y = cast int 0 to uint - %Z = alloca sbyte, uint %Y - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/2003-10-26-InlineInvokeExceptionDestPhi.ll b/llvm/test/Regression/Transforms/Inline/2003-10-26-InlineInvokeExceptionDestPhi.ll deleted file mode 100644 index 785a425b120..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2003-10-26-InlineInvokeExceptionDestPhi.ll +++ /dev/null @@ -1,19 +0,0 @@ -; The inliner is breaking inlining invoke instructions where there is a PHI -; node in the exception destination, and the inlined function contains an -; unwind instruction. - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output - -implementation - -linkonce void %foo() { - unwind -} - -int %test() { -BB1: - invoke void %foo() to label %Cont except label %Cont -Cont: - %A = phi int [ 0, %BB1], [0, %BB1] - ret int %A -} diff --git a/llvm/test/Regression/Transforms/Inline/2004-04-15-InlineDeletesCall.ll b/llvm/test/Regression/Transforms/Inline/2004-04-15-InlineDeletesCall.ll deleted file mode 100644 index e1ecaed83ed..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2004-04-15-InlineDeletesCall.ll +++ /dev/null @@ -1,21 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output - -; Inlining the first call caused the inliner function to delete the second -; call. Then the inliner tries to inline the second call, which no longer -; exists. - -implementation - -internal void %Callee1() { - unwind -} - -void %Callee2() { - ret void -} - -void %caller() { - call void %Callee1() - call void %Callee2() - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/2004-04-20-InlineLinkOnce.llx b/llvm/test/Regression/Transforms/Inline/2004-04-20-InlineLinkOnce.llx deleted file mode 100644 index 4fab1c99346..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2004-04-20-InlineLinkOnce.llx +++ /dev/null @@ -1,12 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -prune-eh -disable-output - -implementation - -linkonce void %caller() { - call void %callee() - ret void -} - -linkonce void %callee() { - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/2004-10-17-InlineFunctionWithoutReturn.ll b/llvm/test/Regression/Transforms/Inline/2004-10-17-InlineFunctionWithoutReturn.ll deleted file mode 100644 index 016fc5a4ab0..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2004-10-17-InlineFunctionWithoutReturn.ll +++ /dev/null @@ -1,10 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output - -int %test() { - unwind -} - -int %caller() { - %X = call int %test() - ret int %X -} diff --git a/llvm/test/Regression/Transforms/Inline/2006-01-14-CallGraphUpdate.ll b/llvm/test/Regression/Transforms/Inline/2006-01-14-CallGraphUpdate.ll deleted file mode 100644 index cb9241154e3..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2006-01-14-CallGraphUpdate.ll +++ /dev/null @@ -1,26 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -prune-eh -disable-output - - "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { "struct.std::locale::facet" } - "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >" = type { int (...)**, int*, int*, int*, int*, int*, int*, "struct.std::locale" } - "struct.std::ios_base" = type { int (...)**, int, int, uint, uint, uint, "struct.std::ios_base::_Callback_list"*, "struct.std::ios_base::_Words", [8 x "struct.std::ios_base::_Words"], int, "struct.std::ios_base::_Words"*, "struct.std::locale" } - "struct.std::ios_base::_Callback_list" = type { "struct.std::ios_base::_Callback_list"*, void (uint, "struct.std::ios_base"*, int)*, int, int } - "struct.std::ios_base::_Words" = type { sbyte*, int } - "struct.std::locale" = type { "struct.std::locale::_Impl"* } - "struct.std::locale::_Impl" = type { int, "struct.std::locale::facet"**, uint, "struct.std::locale::facet"**, sbyte** } - "struct.std::locale::facet" = type { int (...)**, int } - "struct.std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t> >" = type { "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, int } - -implementation ; Functions: - -void %_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl("struct.std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t> >"* %agg.result, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* %this, "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"* %__s.0__, int %__s.1__, "struct.std::ios_base"* %__io, int %__fill, int %__v) { -entry: - tail call fastcc void %_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_( ) - ret void -} - -fastcc void %_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_() { -entry: - %tmp.38 = shl uint 0, ubyte 3 ; <uint> [#uses=1] - %tmp.39 = alloca sbyte, uint %tmp.38 ; <sbyte*> [#uses=0] - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll b/llvm/test/Regression/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll deleted file mode 100644 index 8429e7c45aa..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll +++ /dev/null @@ -1,843 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -prune-eh -disable-output -; PR827 - -%_ZTV8CRjii = internal global [1 x int (...)*] [ int (...)* %_ZN8CRjii12NlFeeEPN5Jr7sE ] ; <[1 x int (...)*]*> [#uses=0] - -implementation ; Functions: - -internal int %_ZN8CRjii12NlFeeEPN5Jr7sE(...) { -entry: - br bool false, label %cond_true, label %cond_false179 - -cond_true: ; preds = %entry - br label %bb9 - -bb: ; preds = %cond_true14 - br label %bb9 - -bb9: ; preds = %bb, %cond_true - br bool false, label %cond_true14, label %cond_false - -cond_true14: ; preds = %bb9 - br label %bb - -cond_false: ; preds = %bb9 - br label %bb15 - -cond_next: ; No predecessors! - br label %bb15 - -bb15: ; preds = %cond_next, %cond_false - br label %bb24 - -bb17: ; preds = %cond_true29 - br label %bb24 - -bb24: ; preds = %bb17, %bb15 - br bool false, label %cond_true29, label %cond_false30 - -cond_true29: ; preds = %bb24 - br label %bb17 - -cond_false30: ; preds = %bb24 - br label %bb32 - -cond_next31: ; No predecessors! - br label %bb32 - -bb32: ; preds = %cond_next31, %cond_false30 - br label %bb41 - -bb34: ; preds = %cond_true46 - br label %bb41 - -bb41: ; preds = %bb34, %bb32 - br bool false, label %cond_true46, label %cond_false47 - -cond_true46: ; preds = %bb41 - br label %bb34 - -cond_false47: ; preds = %bb41 - br label %bb49 - -cond_next48: ; No predecessors! - br label %bb49 - -bb49: ; preds = %cond_next48, %cond_false47 - br label %bb58 - -bb51: ; preds = %cond_true63 - br label %bb58 - -bb58: ; preds = %bb51, %bb49 - br bool false, label %cond_true63, label %cond_false64 - -cond_true63: ; preds = %bb58 - br label %bb51 - -cond_false64: ; preds = %bb58 - br label %bb66 - -cond_next65: ; No predecessors! - br label %bb66 - -bb66: ; preds = %cond_next65, %cond_false64 - br label %bb76 - -bb68: ; preds = %cond_true81 - br label %bb76 - -bb76: ; preds = %bb68, %bb66 - br bool false, label %cond_true81, label %cond_false82 - -cond_true81: ; preds = %bb76 - br label %bb68 - -cond_false82: ; preds = %bb76 - br label %bb84 - -cond_next83: ; No predecessors! - br label %bb84 - -bb84: ; preds = %cond_next83, %cond_false82 - br label %bb94 - -bb86: ; preds = %cond_true99 - br label %bb94 - -bb94: ; preds = %bb86, %bb84 - br bool false, label %cond_true99, label %cond_false100 - -cond_true99: ; preds = %bb94 - br label %bb86 - -cond_false100: ; preds = %bb94 - br label %bb102 - -cond_next101: ; No predecessors! - br label %bb102 - -bb102: ; preds = %cond_next101, %cond_false100 - br label %bb112 - -bb104: ; preds = %cond_true117 - br label %bb112 - -bb112: ; preds = %bb104, %bb102 - br bool false, label %cond_true117, label %cond_false118 - -cond_true117: ; preds = %bb112 - br label %bb104 - -cond_false118: ; preds = %bb112 - br label %bb120 - -cond_next119: ; No predecessors! - br label %bb120 - -bb120: ; preds = %cond_next119, %cond_false118 - br label %bb130 - -bb122: ; preds = %cond_true135 - br label %bb130 - -bb130: ; preds = %bb122, %bb120 - br bool false, label %cond_true135, label %cond_false136 - -cond_true135: ; preds = %bb130 - br label %bb122 - -cond_false136: ; preds = %bb130 - br label %bb138 - -cond_next137: ; No predecessors! - br label %bb138 - -bb138: ; preds = %cond_next137, %cond_false136 - br label %bb148 - -bb140: ; preds = %cond_true153 - call fastcc void %_Zjrf1( ) - br label %bb148 - -bb148: ; preds = %bb140, %bb138 - br bool false, label %cond_true153, label %cond_false154 - -cond_true153: ; preds = %bb148 - br label %bb140 - -cond_false154: ; preds = %bb148 - br label %bb156 - -cond_next155: ; No predecessors! - br label %bb156 - -bb156: ; preds = %cond_next155, %cond_false154 - br label %bb166 - -bb158: ; preds = %cond_true171 - br label %bb166 - -bb166: ; preds = %bb158, %bb156 - br bool false, label %cond_true171, label %cond_false172 - -cond_true171: ; preds = %bb166 - br label %bb158 - -cond_false172: ; preds = %bb166 - br label %bb174 - -cond_next173: ; No predecessors! - br label %bb174 - -bb174: ; preds = %cond_next173, %cond_false172 - br label %cleanup - -cleanup: ; preds = %bb174 - br label %finally - -finally: ; preds = %cleanup - br label %cond_next180 - -cond_false179: ; preds = %entry - br label %cond_next180 - -cond_next180: ; preds = %cond_false179, %finally - br label %return - -return: ; preds = %cond_next180 - ret int 0 -} - -internal fastcc void %_Zjrf2() { -entry: - br label %bb3 - -bb: ; preds = %cond_true - br label %bb3 - -bb3: ; preds = %bb, %entry - %tmp5 = load ubyte** null ; <ubyte*> [#uses=1] - %tmp = setne ubyte* null, %tmp5 ; <bool> [#uses=1] - br bool %tmp, label %cond_true, label %cond_false - -cond_true: ; preds = %bb3 - br label %bb - -cond_false: ; preds = %bb3 - br label %bb6 - -cond_next: ; No predecessors! - br label %bb6 - -bb6: ; preds = %cond_next, %cond_false - br label %return - -return: ; preds = %bb6 - ret void -} - -internal fastcc void %_Zjrf3() { -entry: - call fastcc void %_Zjrf2( ) - br label %return - -return: ; preds = %entry - ret void -} - -internal fastcc void %_Zjrf4() { -entry: - br label %bb6 - -bb: ; preds = %cond_true - br label %bb6 - -bb6: ; preds = %bb, %entry - br bool false, label %cond_true, label %cond_false - -cond_true: ; preds = %bb6 - br label %bb - -cond_false: ; preds = %bb6 - br label %bb8 - -cond_next: ; No predecessors! - br label %bb8 - -bb8: ; preds = %cond_next, %cond_false - br bool false, label %cond_true9, label %cond_false12 - -cond_true9: ; preds = %bb8 - call fastcc void %_Zjrf3( ) - br label %cond_next13 - -cond_false12: ; preds = %bb8 - br label %cond_next13 - -cond_next13: ; preds = %cond_false12, %cond_true9 - br label %return - -return: ; preds = %cond_next13 - ret void -} - -internal fastcc void %_Zjrf5() { -entry: - call fastcc void %_Zjrf4( ) - br label %return - -return: ; preds = %entry - ret void -} - -internal fastcc void %_Zjrf6() { -entry: - call fastcc void %_Zjrf5( ) - br label %return - -return: ; preds = %entry - ret void -} - -internal fastcc void %_Zjrf7() { -entry: - br label %cleanup - -cleanup: ; preds = %entry - br label %finally - -finally: ; preds = %cleanup - call fastcc void %_Zjrf6( ) - br label %cleanup9 - -cleanup9: ; preds = %finally - br label %finally8 - -finally8: ; preds = %cleanup9 - br label %cleanup11 - -cleanup11: ; preds = %finally8 - br label %finally10 - -finally10: ; preds = %cleanup11 - br label %finally23 - -finally23: ; preds = %finally10 - br label %return - -return: ; preds = %finally23 - ret void -} - -internal fastcc void %_Zjrf11() { -entry: - br label %bb7 - -bb: ; preds = %cond_true - br label %bb7 - -bb7: ; preds = %bb, %entry - br bool false, label %cond_true, label %cond_false - -cond_true: ; preds = %bb7 - br label %bb - -cond_false: ; preds = %bb7 - br label %bb9 - -cond_next: ; No predecessors! - br label %bb9 - -bb9: ; preds = %cond_next, %cond_false - br label %return - ; No predecessors! - br bool false, label %cond_true12, label %cond_false15 - -cond_true12: ; preds = %0 - call fastcc void %_Zjrf3( ) - br label %cond_next16 - -cond_false15: ; preds = %0 - br label %cond_next16 - -cond_next16: ; preds = %cond_false15, %cond_true12 - br label %return - -return: ; preds = %cond_next16, %bb9 - ret void -} - -internal fastcc void %_Zjrf9() { -entry: - call fastcc void %_Zjrf11( ) - br label %return - -return: ; preds = %entry - ret void -} - -internal fastcc void %_Zjrf10() { -entry: - call fastcc void %_Zjrf9( ) - br label %return - -return: ; preds = %entry - ret void -} - -internal fastcc void %_Zjrf8() { -entry: - br bool false, label %cond_true, label %cond_false201 - -cond_true: ; preds = %entry - br bool false, label %cond_true36, label %cond_false - -cond_true36: ; preds = %cond_true - br label %cleanup - -cleanup: ; preds = %cond_true36 - br label %finally - -finally: ; preds = %cleanup - br label %cond_next189 - -cond_false: ; preds = %cond_true - br bool false, label %cond_true99, label %cond_false137 - -cond_true99: ; preds = %cond_false - br label %cleanup136 - -cleanup136: ; preds = %cond_true99 - br label %finally135 - -finally135: ; preds = %cleanup136 - br label %cond_next - -cond_false137: ; preds = %cond_false - call fastcc void %_Zjrf10( ) - br label %cleanup188 - -cleanup188: ; preds = %cond_false137 - br label %finally187 - -finally187: ; preds = %cleanup188 - br label %cond_next - -cond_next: ; preds = %finally187, %finally135 - br label %cond_next189 - -cond_next189: ; preds = %cond_next, %finally - br label %cond_next202 - -cond_false201: ; preds = %entry - br label %cond_next202 - -cond_next202: ; preds = %cond_false201, %cond_next189 - br label %return - -return: ; preds = %cond_next202 - ret void -} - -internal fastcc void %_Zjrf1() { -entry: - br label %bb492 - -bb: ; preds = %cond_true499 - br label %cleanup - -cleanup: ; preds = %bb - br label %finally - -finally: ; preds = %cleanup - br label %cleanup11 - -cleanup11: ; preds = %finally - br label %finally10 - -finally10: ; preds = %cleanup11 - br bool false, label %cond_true, label %cond_false286 - -cond_true: ; preds = %finally10 - br label %cleanup26 - -cleanup26: ; preds = %cond_true - br label %finally25 - -finally25: ; preds = %cleanup26 - br label %bb30 - -bb27: ; preds = %cond_true37 - br label %bb30 - -bb30: ; preds = %bb27, %finally25 - br bool false, label %cond_true37, label %cond_false - -cond_true37: ; preds = %bb30 - br label %bb27 - -cond_false: ; preds = %bb30 - br label %bb38 - -cond_next: ; No predecessors! - br label %bb38 - -bb38: ; preds = %cond_next, %cond_false - br label %bb148 - -bb40: ; preds = %cond_true156 - br label %bb139 - -bb41: ; preds = %cond_true142 - call fastcc void %_Zjrf7( ) - br label %bb105 - -bb44: ; preds = %cond_true112 - br label %bb74 - -bb66: ; preds = %cond_true80 - br label %bb74 - -bb74: ; preds = %bb66, %bb44 - br bool false, label %cond_true80, label %cond_false81 - -cond_true80: ; preds = %bb74 - br label %bb66 - -cond_false81: ; preds = %bb74 - br label %bb83 - -cond_next82: ; No predecessors! - br label %bb83 - -bb83: ; preds = %cond_next82, %cond_false81 - br label %cleanup97 - -cleanup97: ; preds = %bb83 - br label %finally96 - -finally96: ; preds = %cleanup97 - br label %cleanup99 - -cleanup99: ; preds = %finally96 - br label %finally98 - -finally98: ; preds = %cleanup99 - br label %bb105 - -bb105: ; preds = %finally98, %bb41 - br bool false, label %cond_true112, label %cond_false113 - -cond_true112: ; preds = %bb105 - br label %bb44 - -cond_false113: ; preds = %bb105 - br label %bb115 - -cond_next114: ; No predecessors! - br label %bb115 - -bb115: ; preds = %cond_next114, %cond_false113 - br bool false, label %cond_true119, label %cond_false123 - -cond_true119: ; preds = %bb115 - call fastcc void %_Zjrf8( ) - br label %cond_next124 - -cond_false123: ; preds = %bb115 - br label %cond_next124 - -cond_next124: ; preds = %cond_false123, %cond_true119 - br bool false, label %cond_true131, label %cond_false132 - -cond_true131: ; preds = %cond_next124 - br label %cleanup135 - -cond_false132: ; preds = %cond_next124 - br label %cond_next133 - -cond_next133: ; preds = %cond_false132 - br label %cleanup136 - -cleanup135: ; preds = %cond_true131 - br label %done - -cleanup136: ; preds = %cond_next133 - br label %finally134 - -finally134: ; preds = %cleanup136 - br label %bb139 - -bb139: ; preds = %finally134, %bb40 - br bool false, label %cond_true142, label %cond_false143 - -cond_true142: ; preds = %bb139 - br label %bb41 - -cond_false143: ; preds = %bb139 - br label %bb145 - -cond_next144: ; No predecessors! - br label %bb145 - -bb145: ; preds = %cond_next144, %cond_false143 - br label %bb148 - -bb148: ; preds = %bb145, %bb38 - br bool false, label %cond_true156, label %cond_false157 - -cond_true156: ; preds = %bb148 - br label %bb40 - -cond_false157: ; preds = %bb148 - br label %bb159 - -cond_next158: ; No predecessors! - br label %bb159 - -bb159: ; preds = %cond_next158, %cond_false157 - br label %done - -done: ; preds = %bb159, %cleanup135 - br label %bb214 - -bb185: ; preds = %cond_true218 - br bool false, label %cond_true193, label %cond_false206 - -cond_true193: ; preds = %bb185 - br label %cond_next211 - -cond_false206: ; preds = %bb185 - br label %cond_next211 - -cond_next211: ; preds = %cond_false206, %cond_true193 - br label %bb214 - -bb214: ; preds = %cond_next211, %done - br bool false, label %cond_true218, label %cond_false219 - -cond_true218: ; preds = %bb214 - br label %bb185 - -cond_false219: ; preds = %bb214 - br label %bb221 - -cond_next220: ; No predecessors! - br label %bb221 - -bb221: ; preds = %cond_next220, %cond_false219 - br bool false, label %cond_true236, label %cond_false245 - -cond_true236: ; preds = %bb221 - br label %cond_next249 - -cond_false245: ; preds = %bb221 - br label %cond_next249 - -cond_next249: ; preds = %cond_false245, %cond_true236 - br bool false, label %cond_true272, label %cond_false277 - -cond_true272: ; preds = %cond_next249 - br label %cond_next278 - -cond_false277: ; preds = %cond_next249 - br label %cond_next278 - -cond_next278: ; preds = %cond_false277, %cond_true272 - br label %cleanup285 - -cleanup285: ; preds = %cond_next278 - br label %finally284 - -finally284: ; preds = %cleanup285 - br label %cond_next287 - -cond_false286: ; preds = %finally10 - br label %cond_next287 - -cond_next287: ; preds = %cond_false286, %finally284 - br bool false, label %cond_true317, label %cond_false319 - -cond_true317: ; preds = %cond_next287 - br label %cond_next321 - -cond_false319: ; preds = %cond_next287 - br label %cond_next321 - -cond_next321: ; preds = %cond_false319, %cond_true317 - br label %bb348 - -bb335: ; preds = %cond_true355 - br label %bb348 - -bb348: ; preds = %bb335, %cond_next321 - br bool false, label %cond_true355, label %cond_false356 - -cond_true355: ; preds = %bb348 - br label %bb335 - -cond_false356: ; preds = %bb348 - br label %bb358 - -cond_next357: ; No predecessors! - br label %bb358 - -bb358: ; preds = %cond_next357, %cond_false356 - br bool false, label %cond_true363, label %cond_false364 - -cond_true363: ; preds = %bb358 - br label %bb388 - -cond_false364: ; preds = %bb358 - br label %cond_next365 - -cond_next365: ; preds = %cond_false364 - br bool false, label %cond_true370, label %cond_false371 - -cond_true370: ; preds = %cond_next365 - br label %bb388 - -cond_false371: ; preds = %cond_next365 - br label %cond_next372 - -cond_next372: ; preds = %cond_false371 - br bool false, label %cond_true385, label %cond_false386 - -cond_true385: ; preds = %cond_next372 - br label %bb388 - -cond_false386: ; preds = %cond_next372 - br label %cond_next387 - -cond_next387: ; preds = %cond_false386 - br label %bb389 - -bb388: ; preds = %cond_true385, %cond_true370, %cond_true363 - br label %bb389 - -bb389: ; preds = %bb388, %cond_next387 - br bool false, label %cond_true392, label %cond_false443 - -cond_true392: ; preds = %bb389 - br label %bb419 - -bb402: ; preds = %cond_true425 - br bool false, label %cond_true406, label %cond_false412 - -cond_true406: ; preds = %bb402 - br label %cond_next416 - -cond_false412: ; preds = %bb402 - br label %cond_next416 - -cond_next416: ; preds = %cond_false412, %cond_true406 - br label %bb419 - -bb419: ; preds = %cond_next416, %cond_true392 - br bool false, label %cond_true425, label %cond_false426 - -cond_true425: ; preds = %bb419 - br label %bb402 - -cond_false426: ; preds = %bb419 - br label %bb428 - -cond_next427: ; No predecessors! - br label %bb428 - -bb428: ; preds = %cond_next427, %cond_false426 - br label %cond_next478 - -cond_false443: ; preds = %bb389 - br label %bb460 - -bb450: ; preds = %cond_true466 - br label %bb460 - -bb460: ; preds = %bb450, %cond_false443 - br bool false, label %cond_true466, label %cond_false467 - -cond_true466: ; preds = %bb460 - br label %bb450 - -cond_false467: ; preds = %bb460 - br label %bb469 - -cond_next468: ; No predecessors! - br label %bb469 - -bb469: ; preds = %cond_next468, %cond_false467 - br label %cond_next478 - -cond_next478: ; preds = %bb469, %bb428 - br label %cleanup485 - -cleanup485: ; preds = %cond_next478 - br label %finally484 - -finally484: ; preds = %cleanup485 - br label %cleanup487 - -cleanup487: ; preds = %finally484 - br label %finally486 - -finally486: ; preds = %cleanup487 - br label %cleanup489 - -cleanup489: ; preds = %finally486 - br label %finally488 - -finally488: ; preds = %cleanup489 - br label %bb492 - -bb492: ; preds = %finally488, %entry - br bool false, label %cond_true499, label %cond_false500 - -cond_true499: ; preds = %bb492 - br label %bb - -cond_false500: ; preds = %bb492 - br label %bb502 - -cond_next501: ; No predecessors! - br label %bb502 - -bb502: ; preds = %cond_next501, %cond_false500 - br label %return - -return: ; preds = %bb502 - ret void -} - -internal fastcc void %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEEvT_S7_() { -entry: - br label %bb12 - -bb: ; preds = %cond_true - br label %cleanup - -cleanup: ; preds = %bb - br label %finally - -finally: ; preds = %cleanup - br label %bb12 - -bb12: ; preds = %finally, %entry - br bool false, label %cond_true, label %cond_false - -cond_true: ; preds = %bb12 - br label %bb - -cond_false: ; preds = %bb12 - br label %bb14 - -cond_next: ; No predecessors! - br label %bb14 - -bb14: ; preds = %cond_next, %cond_false - br label %return - -return: ; preds = %bb14 - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll b/llvm/test/Regression/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll deleted file mode 100644 index 705961b65b4..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2006-11-09-InlineCGUpdate-2.ll +++ /dev/null @@ -1,248 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -prune-eh -disable-output -; PR993 -target endian = little -target pointersize = 32 -target triple = "i386-unknown-openbsd3.9" -deplibs = [ "stdc++", "c", "crtend" ] - "struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" = type { sbyte* } - "struct.__gnu_cxx::char_producer<char>" = type { int (...)** } - %struct.__sFILE = type { ubyte*, int, int, short, short, %struct.__sbuf, int, sbyte*, int (sbyte*)*, int (sbyte*, sbyte*, int)*, long (sbyte*, long, int)*, int (sbyte*, sbyte*, int)*, %struct.__sbuf, ubyte*, int, [3 x ubyte], [1 x ubyte], %struct.__sbuf, int, long } - %struct.__sbuf = type { ubyte*, int } - "struct.std::__basic_file<char>" = type { %struct.__sFILE*, bool } - "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { "struct.std::locale::facet" } - "struct.std::bad_alloc" = type { "struct.__gnu_cxx::char_producer<char>" } - "struct.std::basic_filebuf<char,std::char_traits<char> >" = type { "struct.std::basic_streambuf<char,std::char_traits<char> >", int, "struct.std::__basic_file<char>", uint, %union.__mbstate_t, %union.__mbstate_t, sbyte*, uint, bool, bool, bool, bool, sbyte, sbyte*, sbyte*, bool, "struct.std::codecvt<char,char,__mbstate_t>"*, sbyte*, int, sbyte*, sbyte* } - "struct.std::basic_ios<char,std::char_traits<char> >" = type { "struct.std::ios_base", "struct.std::basic_ostream<char,std::char_traits<char> >"*, sbyte, bool, "struct.std::basic_streambuf<char,std::char_traits<char> >"*, "struct.std::ctype<char>"*, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* } - "struct.std::basic_iostream<char,std::char_traits<char> >" = type { "struct.std::locale::facet", "struct.__gnu_cxx::char_producer<char>", "struct.std::basic_ios<char,std::char_traits<char> >" } - "struct.std::basic_ofstream<char,std::char_traits<char> >" = type { "struct.__gnu_cxx::char_producer<char>", "struct.std::basic_filebuf<char,std::char_traits<char> >", "struct.std::basic_ios<char,std::char_traits<char> >" } - "struct.std::basic_ostream<char,std::char_traits<char> >" = type { int (...)**, "struct.std::basic_ios<char,std::char_traits<char> >" } - "struct.std::basic_streambuf<char,std::char_traits<char> >" = type { int (...)**, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, "struct.std::locale" } - "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" = type { "struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" } - "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep" = type { "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" } - "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" = type { uint, uint, int } - "struct.std::codecvt<char,char,__mbstate_t>" = type { "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", int* } - "struct.std::ctype<char>" = type { "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", int*, bool, int*, int*, uint* } - "struct.std::domain_error" = type { "struct.std::logic_error" } - "struct.std::ios_base" = type { int (...)**, int, int, uint, uint, uint, "struct.std::ios_base::_Callback_list"*, "struct.std::ios_base::_Words", [8 x "struct.std::ios_base::_Words"], int, "struct.std::ios_base::_Words"*, "struct.std::locale" } - "struct.std::ios_base::_Callback_list" = type { "struct.std::ios_base::_Callback_list"*, void (uint, "struct.std::ios_base"*, int)*, int, int } - "struct.std::ios_base::_Words" = type { sbyte*, int } - "struct.std::locale" = type { "struct.std::locale::_Impl"* } - "struct.std::locale::_Impl" = type { int, "struct.std::locale::facet"**, uint, "struct.std::locale::facet"**, sbyte** } - "struct.std::locale::facet" = type { int (...)**, int } - "struct.std::logic_error" = type { "struct.__gnu_cxx::char_producer<char>", "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" } - %union.__mbstate_t = type { long, [120 x ubyte] } -%.str_1 = external global [17 x sbyte] ; <[17 x sbyte]*> [#uses=0] -%.str_9 = external global [24 x sbyte] ; <[24 x sbyte]*> [#uses=0] - -implementation ; Functions: - -void %main() { -entry: - call fastcc void %_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode( ) - ret void -} - -fastcc void %_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode() { -entry: - %tmp.6 = seteq "struct.std::basic_filebuf<char,std::char_traits<char> >"* null, null ; <bool> [#uses=1] - br bool %tmp.6, label %then, label %UnifiedReturnBlock - -then: ; preds = %entry - tail call fastcc void %_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate( ) - ret void - -UnifiedReturnBlock: ; preds = %entry - ret void -} - -fastcc void %_ZN10__cxxabiv111__terminateEPFvvE() { -entry: - unreachable -} - -void %_ZNSdD0Ev() { -entry: - unreachable -} - -void %_ZThn8_NSdD1Ev() { -entry: - ret void -} - -void %_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev() { -entry: - ret void -} - -void %_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi() { -entry: - unreachable -} - -fastcc void %_ZNSoD2Ev() { -entry: - unreachable -} - -fastcc void %_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev() { -entry: - unreachable -} - -fastcc void %_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate() { -entry: - tail call fastcc void %_ZSt19__throw_ios_failurePKc( ) - ret void -} - -declare fastcc void %_ZNSaIcED1Ev() - -fastcc void %_ZNSsC1EPKcRKSaIcE() { -entry: - tail call fastcc void %_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type( ) - unreachable -} - -fastcc void %_ZSt14__convert_to_vIyEvPKcRT_RSt12_Ios_IostateRKPii() { -entry: - ret void -} - -fastcc void %_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej() { -entry: - ret void -} - -fastcc void %_ZSt19__throw_ios_failurePKc() { -entry: - call fastcc void %_ZNSsC1EPKcRKSaIcE( ) - unwind -} - -void %_GLOBAL__D__ZSt23lexicographical_compareIPKaS1_EbT_S2_T0_S3_() { -entry: - ret void -} - -void %_ZNSt9bad_allocD1Ev() { -entry: - unreachable -} - -fastcc void %_ZSt19__throw_logic_errorPKc() { -entry: - invoke fastcc void %_ZNSt11logic_errorC1ERKSs( ) - to label %try_exit.0 unwind label %try_catch.0 - -try_catch.0: ; preds = %entry - unreachable - -try_exit.0: ; preds = %entry - unwind -} - -fastcc void %_ZNSt11logic_errorC1ERKSs() { -entry: - call fastcc void %_ZNSsC1ERKSs( ) - ret void -} - -void %_ZNSt12domain_errorD1Ev() { -entry: - unreachable -} - -fastcc void %_ZSt20__throw_length_errorPKc() { -entry: - call fastcc void %_ZNSt12length_errorC1ERKSs( ) - unwind -} - -fastcc void %_ZNSt12length_errorC1ERKSs() { -entry: - invoke fastcc void %_ZNSsC1ERKSs( ) - to label %_ZNSt11logic_errorC2ERKSs.exit unwind label %invoke_catch.i - -invoke_catch.i: ; preds = %entry - unwind - -_ZNSt11logic_errorC2ERKSs.exit: ; preds = %entry - ret void -} - -fastcc void %_ZNSs4_Rep9_S_createEjRKSaIcE() { -entry: - call fastcc void %_ZSt20__throw_length_errorPKc( ) - unreachable -} - -fastcc void %_ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag() { -entry: - unreachable -} - -fastcc void %_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type() { -entry: - br bool false, label %then.1.i, label %endif.1.i - -then.1.i: ; preds = %entry - call fastcc void %_ZSt19__throw_logic_errorPKc( ) - br label %endif.1.i - -endif.1.i: ; preds = %then.1.i, %entry - call fastcc void %_ZNSs4_Rep9_S_createEjRKSaIcE( ) - unreachable -} - -fastcc void %_ZNSsC1ERKSs() { -entry: - call fastcc void %_ZNSs4_Rep7_M_grabERKSaIcES2_( ) - invoke fastcc void %_ZNSaIcEC1ERKS_( ) - to label %invoke_cont.1 unwind label %invoke_catch.1 - -invoke_catch.1: ; preds = %entry - call fastcc void %_ZNSaIcED1Ev( ) - unwind - -invoke_cont.1: ; preds = %entry - call fastcc void %_ZNSaIcEC2ERKS_( ) - ret void -} - -fastcc void %_ZNSaIcEC1ERKS_() { -entry: - ret void -} - -fastcc void %_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc() { -entry: - ret void -} - -fastcc void %_ZNSs4_Rep7_M_grabERKSaIcES2_() { -entry: - br bool false, label %else.i, label %cond_true - -cond_true: ; preds = %entry - ret void - -else.i: ; preds = %entry - tail call fastcc void %_ZNSs4_Rep9_S_createEjRKSaIcE( ) - unreachable -} - -fastcc void %_ZNSaIcEC2ERKS_() { -entry: - ret void -} - -fastcc void %_ZN9__gnu_cxx12__pool_allocILb1ELi0EE8allocateEj() { -entry: - ret void -} - -fastcc void %_ZN9__gnu_cxx12__pool_allocILb1ELi0EE9_S_refillEj() { -entry: - unreachable -} diff --git a/llvm/test/Regression/Transforms/Inline/2006-11-09-InlineCGUpdate.ll b/llvm/test/Regression/Transforms/Inline/2006-11-09-InlineCGUpdate.ll deleted file mode 100644 index 1b137cf5f02..00000000000 --- a/llvm/test/Regression/Transforms/Inline/2006-11-09-InlineCGUpdate.ll +++ /dev/null @@ -1,342 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -prune-eh -disable-output -; PR992 -target datalayout = "e-p:32:32" -target endian = little -target pointersize = 32 -target triple = "i686-pc-linux-gnu" -deplibs = [ "stdc++", "c", "crtend" ] - %struct._IO_FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct._IO_FILE*, int, int, int, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, int, [52 x sbyte] } - %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, int } - "struct.__cxxabiv1::__array_type_info" = type { "struct.std::type_info" } - "struct.__cxxabiv1::__si_class_type_info" = type { "struct.__cxxabiv1::__array_type_info", "struct.__cxxabiv1::__array_type_info"* } - "struct.__gnu_cxx::_Rope_rep_alloc_base<char,std::allocator<char>, true>" = type { uint } - "struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" = type { sbyte* } - "struct.__gnu_cxx::__normal_iterator<const wchar_t*,std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >" = type { int* } - "struct.__gnu_cxx::char_producer<char>" = type { int (...)** } - "struct.__gnu_cxx::stdio_sync_filebuf<char,std::char_traits<char> >" = type { "struct.std::basic_streambuf<char,std::char_traits<char> >", %struct._IO_FILE*, int } - "struct.__gnu_cxx::stdio_sync_filebuf<wchar_t,std::char_traits<wchar_t> >" = type { "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >", %struct._IO_FILE*, uint } - %struct.__locale_struct = type { [13 x %struct.locale_data*], ushort*, int*, int*, [13 x sbyte*] } - %struct.__mbstate_t = type { int, "struct.__gnu_cxx::_Rope_rep_alloc_base<char,std::allocator<char>, true>" } - %struct.locale_data = type opaque - "struct.std::__basic_file<char>" = type { %struct._IO_FILE*, bool } - "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { "struct.std::locale::facet" } - "struct.std::basic_filebuf<char,std::char_traits<char> >" = type { "struct.std::basic_streambuf<char,std::char_traits<char> >", int, "struct.std::__basic_file<char>", uint, %struct.__mbstate_t, %struct.__mbstate_t, sbyte*, uint, bool, bool, bool, bool, sbyte, sbyte*, sbyte*, bool, "struct.std::codecvt<char,char,__mbstate_t>"*, sbyte*, int, sbyte*, sbyte* } - "struct.std::basic_filebuf<wchar_t,std::char_traits<wchar_t> >" = type { "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >", int, "struct.std::__basic_file<char>", uint, %struct.__mbstate_t, %struct.__mbstate_t, int*, uint, bool, bool, bool, bool, int, int*, int*, bool, "struct.std::codecvt<char,char,__mbstate_t>"*, sbyte*, int, sbyte*, sbyte* } - "struct.std::basic_fstream<char,std::char_traits<char> >" = type { { "struct.std::locale::facet", "struct.__gnu_cxx::char_producer<char>" }, "struct.std::basic_filebuf<char,std::char_traits<char> >", "struct.std::basic_ios<char,std::char_traits<char> >" } - "struct.std::basic_fstream<wchar_t,std::char_traits<wchar_t> >" = type { { "struct.std::locale::facet", "struct.__gnu_cxx::char_producer<char>" }, "struct.std::basic_filebuf<wchar_t,std::char_traits<wchar_t> >", "struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" } - "struct.std::basic_ios<char,std::char_traits<char> >" = type { "struct.std::ios_base", "struct.std::basic_ostream<char,std::char_traits<char> >"*, sbyte, bool, "struct.std::basic_streambuf<char,std::char_traits<char> >"*, "struct.std::ctype<char>"*, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* } - "struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" = type { "struct.std::ios_base", "struct.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >"*, int, bool, "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, "struct.std::codecvt<char,char,__mbstate_t>"*, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* } - "struct.std::basic_iostream<wchar_t,std::char_traits<wchar_t> >" = type { "struct.std::locale::facet", "struct.__gnu_cxx::char_producer<char>", "struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" } - "struct.std::basic_ostream<char,std::char_traits<char> >" = type { int (...)**, "struct.std::basic_ios<char,std::char_traits<char> >" } - "struct.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >" = type { int (...)**, "struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" } - "struct.std::basic_streambuf<char,std::char_traits<char> >" = type { int (...)**, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, "struct.std::locale" } - "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >" = type { int (...)**, int*, int*, int*, int*, int*, int*, "struct.std::locale" } - "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" = type { "struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" } - "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep" = type { "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" } - "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" = type { uint, uint, int } - "struct.std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >" = type { "struct.__gnu_cxx::__normal_iterator<const wchar_t*,std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >" } - "struct.std::codecvt<char,char,__mbstate_t>" = type { "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", %struct.__locale_struct* } - "struct.std::collate<char>" = type { "struct.std::locale::facet", %struct.__locale_struct* } - "struct.std::collate_byname<char>" = type { "struct.std::collate<char>" } - "struct.std::ctype<char>" = type { "struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", %struct.__locale_struct*, bool, int*, int*, ushort* } - "struct.std::ctype_byname<char>" = type { "struct.std::ctype<char>" } - "struct.std::domain_error" = type { "struct.std::logic_error" } - "struct.std::ios_base" = type { int (...)**, int, int, uint, uint, uint, "struct.std::ios_base::_Callback_list"*, "struct.std::ios_base::_Words", [8 x "struct.std::ios_base::_Words"], int, "struct.std::ios_base::_Words"*, "struct.std::locale" } - "struct.std::ios_base::_Callback_list" = type { "struct.std::ios_base::_Callback_list"*, void (uint, "struct.std::ios_base"*, int)*, int, int } - "struct.std::ios_base::_Words" = type { sbyte*, int } - "struct.std::istreambuf_iterator<char,std::char_traits<char> >" = type { "struct.std::basic_streambuf<char,std::char_traits<char> >"*, int } - "struct.std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t> >" = type { "struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, uint } - "struct.std::locale" = type { "struct.std::locale::_Impl"* } - "struct.std::locale::_Impl" = type { int, "struct.std::locale::facet"**, uint, "struct.std::locale::facet"**, sbyte** } - "struct.std::locale::facet" = type { int (...)**, int } - "struct.std::logic_error" = type { "struct.__gnu_cxx::char_producer<char>", "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" } - "struct.std::type_info" = type { int (...)**, sbyte* } -%.str_11 = external global [42 x sbyte] ; <[42 x sbyte]*> [#uses=0] -%.str_9 = external global [24 x sbyte] ; <[24 x sbyte]*> [#uses=0] -%.str_1 = external global [17 x sbyte] ; <[17 x sbyte]*> [#uses=0] - -implementation ; Functions: - -void %main() { -entry: - tail call fastcc void %_ZNSolsEi( ) - ret void -} - -fastcc void %_ZNSolsEi() { -entry: - %tmp.22 = seteq uint 0, 0 ; <bool> [#uses=1] - br bool %tmp.22, label %else, label %then - -then: ; preds = %entry - ret void - -else: ; preds = %entry - tail call fastcc void %_ZNSolsEl( ) - ret void -} - -void %_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_() { -entry: - ret void -} - -fastcc void %_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate() { -entry: - tail call fastcc void %_ZSt19__throw_ios_failurePKc( ) - ret void -} - -fastcc void %_ZNSo3putEc() { -entry: - ret void -} - -fastcc void %_ZNSolsEl() { -entry: - %tmp.21.i = seteq "struct.std::basic_ostream<char,std::char_traits<char> >"* null, null ; <bool> [#uses=1] - br bool %tmp.21.i, label %endif.0.i, label %shortcirc_next.i - -shortcirc_next.i: ; preds = %entry - ret void - -endif.0.i: ; preds = %entry - call fastcc void %_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate( ) - ret void -} - -fastcc void %_ZSt19__throw_ios_failurePKc() { -entry: - call fastcc void %_ZNSsC1EPKcRKSaIcE( ) - ret void -} - -fastcc void %_ZNSt8ios_baseD2Ev() { -entry: - unreachable -} - -void %_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv() { -entry: - unreachable -} - -void %_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev() { -entry: - unreachable -} - -void %_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci() { -entry: - ret void -} - -fastcc void %_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale() { -entry: - ret void -} - -declare fastcc void %_ZNSaIcED1Ev() - -fastcc void %_ZSt19__throw_logic_errorPKc() { -entry: - call fastcc void %_ZNSt11logic_errorC1ERKSs( ) - ret void -} - -fastcc void %_ZNSs4_Rep9_S_createEjRKSaIcE() { -entry: - br bool false, label %then.0, label %endif.0 - -then.0: ; preds = %entry - call fastcc void %_ZSt20__throw_length_errorPKc( ) - ret void - -endif.0: ; preds = %entry - ret void -} - -fastcc void %_ZSt20__throw_length_errorPKc() { -entry: - call fastcc void %_ZNSt12length_errorC1ERKSs( ) - unwind -} - -fastcc void %_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type() { -entry: - br bool false, label %then.1.i, label %endif.1.i - -then.1.i: ; preds = %entry - call fastcc void %_ZSt19__throw_logic_errorPKc( ) - ret void - -endif.1.i: ; preds = %entry - call fastcc void %_ZNSs4_Rep9_S_createEjRKSaIcE( ) - unreachable -} - -fastcc void %_ZNSsC1ERKSs() { -entry: - call fastcc void %_ZNSs4_Rep7_M_grabERKSaIcES2_( ) - invoke fastcc void %_ZNSaIcEC1ERKS_( ) - to label %invoke_cont.1 unwind label %invoke_catch.1 - -invoke_catch.1: ; preds = %entry - call fastcc void %_ZNSaIcED1Ev( ) - unwind - -invoke_cont.1: ; preds = %entry - call fastcc void %_ZNSaIcEC2ERKS_( ) - ret void -} - -fastcc void %_ZNSs7reserveEj() { -entry: - ret void -} - -fastcc void %_ZNSaIcEC1ERKS_() { -entry: - ret void -} - -fastcc void %_ZNSs4_Rep7_M_grabERKSaIcES2_() { -entry: - br bool false, label %else.i, label %cond_true - -cond_true: ; preds = %entry - ret void - -else.i: ; preds = %entry - tail call fastcc void %_ZNSs4_Rep9_S_createEjRKSaIcE( ) - ret void -} - -fastcc void %_ZNSsC1EPKcRKSaIcE() { -entry: - tail call fastcc void %_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type( ) - unreachable -} - -fastcc void %_ZNSaIcEC2ERKS_() { -entry: - ret void -} - -void %_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev() { -entry: - unreachable -} - -void %_ZNSt14collate_bynameIcED1Ev() { -entry: - unreachable -} - -void %_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy() { -entry: - ret void -} - -void %_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED1Ev() { -entry: - unreachable -} - -void %_ZNSt12ctype_bynameIcED0Ev() { -entry: - unreachable -} - -fastcc void %_ZNSt8messagesIwEC1Ej() { -entry: - ret void -} - -fastcc void %_ZSt14__convert_to_vIlEvPKcRT_RSt12_Ios_IostateRKP15__locale_structi() { -entry: - ret void -} - -fastcc void %_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej() { -entry: - ret void -} - -fastcc void %_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej() { -entry: - ret void -} - -fastcc void %_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs() { -entry: - unreachable -} - -fastcc void %_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_() { -entry: - ret void -} - -void %_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev() { -entry: - unreachable -} - -void %_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv() { -entry: - ret void -} - -void %_ZNSt9exceptionD0Ev() { -entry: - unreachable -} - -fastcc void %_ZNSt11logic_errorC1ERKSs() { -entry: - call fastcc void %_ZNSsC1ERKSs( ) - ret void -} - -fastcc void %_ZNSt11logic_errorD2Ev() { -entry: - unreachable -} - -fastcc void %_ZNSt12length_errorC1ERKSs() { -entry: - invoke fastcc void %_ZNSsC1ERKSs( ) - to label %_ZNSt11logic_errorC2ERKSs.exit unwind label %invoke_catch.i - -invoke_catch.i: ; preds = %entry - unwind - -_ZNSt11logic_errorC2ERKSs.exit: ; preds = %entry - ret void -} - -void %_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_() { -entry: - ret void -} - -fastcc void %_ZNSbIwSt11char_traitsIwESaIwEE16_S_construct_auxIPKwEEPwT_S7_RKS1_12__false_type() { -entry: - ret void -} - -void %_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev() { -entry: - ret void -} - -void %_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev() { -entry: - unreachable -} - -fastcc void %_ZNSt5ctypeIcEC1EPKtbj() { -entry: - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/alloca_test.ll b/llvm/test/Regression/Transforms/Inline/alloca_test.ll deleted file mode 100644 index 35ded4f0d76..00000000000 --- a/llvm/test/Regression/Transforms/Inline/alloca_test.ll +++ /dev/null @@ -1,20 +0,0 @@ -; This test ensures that alloca instructions in the entry block for an inlined -; function are moved to the top of the function they are inlined into. -; -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | %prcontext alloca 1 | grep Entry: - -int %func(int %i) { - %X = alloca int - store int %i, int* %X - ret int %i -} - -declare void %bar() - -int %main(int %argc) { -Entry: - call void %bar() - %X = call int %func(int 7) - %Y = add int %X, %argc - ret int %Y -} diff --git a/llvm/test/Regression/Transforms/Inline/basictest.ll b/llvm/test/Regression/Transforms/Inline/basictest.ll deleted file mode 100644 index 30d87b25bc3..00000000000 --- a/llvm/test/Regression/Transforms/Inline/basictest.ll +++ /dev/null @@ -1,11 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output -print - -int %func(int %i) { - ret int %i -} - -int %main(int %argc) { - %X = call int %func(int 7) - %Y = add int %X, %argc - ret int %Y -} diff --git a/llvm/test/Regression/Transforms/Inline/casts.ll b/llvm/test/Regression/Transforms/Inline/casts.ll deleted file mode 100644 index e7b17443a85..00000000000 --- a/llvm/test/Regression/Transforms/Inline/casts.ll +++ /dev/null @@ -1,20 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | grep 'ret i32 1' -; ModuleID = 'short.opt.bc' - -implementation ; Functions: - -int %testBool(bool %X) { - %tmp = zext bool %X to int ; <int> [#uses=1] - ret int %tmp -} - -int %testByte(sbyte %X) { - %tmp = setne sbyte %X, 0 ; <bool> [#uses=1] - %tmp.i = zext bool %tmp to int ; <int> [#uses=1] - ret int %tmp.i -} - -int %main() { - %rslt = call int %testByte( sbyte 123) - ret int %rslt -} diff --git a/llvm/test/Regression/Transforms/Inline/cfg_preserve_test.ll b/llvm/test/Regression/Transforms/Inline/cfg_preserve_test.ll deleted file mode 100644 index c444f3a2298..00000000000 --- a/llvm/test/Regression/Transforms/Inline/cfg_preserve_test.ll +++ /dev/null @@ -1,15 +0,0 @@ -; This test ensures that inlining an "empty" function does not destroy the CFG -; -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep br - -int %func(int %i) { - ret int %i -} - -declare void %bar() - -int %main(int %argc) { -Entry: - %X = call int %func(int 7) - ret int %X -} diff --git a/llvm/test/Regression/Transforms/Inline/dg.exp b/llvm/test/Regression/Transforms/Inline/dg.exp deleted file mode 100644 index 142de8a6c8f..00000000000 --- a/llvm/test/Regression/Transforms/Inline/dg.exp +++ /dev/null @@ -1,3 +0,0 @@ -load_lib llvm-dg.exp - -llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext $llvmgcc_version diff --git a/llvm/test/Regression/Transforms/Inline/dynamic_alloca_test.ll b/llvm/test/Regression/Transforms/Inline/dynamic_alloca_test.ll deleted file mode 100644 index 2b30b30ab76..00000000000 --- a/llvm/test/Regression/Transforms/Inline/dynamic_alloca_test.ll +++ /dev/null @@ -1,28 +0,0 @@ -; Test that functions with dynamic allocas get inlined in a case where -; naively inlining it would result in a miscompilation. - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | grep llvm.stacksave && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep callee - -declare void %ext(int*) -implementation - -internal void %callee(uint %N) { - %P = alloca int, uint %N ;; dynamic alloca - call void %ext(int* %P) - ret void -} - -void %foo(uint %N) { - br label %Loop -Loop: - %count = phi uint [0, %0], [%next, %Loop] - %next = add uint %count, 1 - call void %callee(uint %N) - %cond = seteq uint %count, 100000 - br bool %cond, label %out, label %Loop -out: - ret void -} - diff --git a/llvm/test/Regression/Transforms/Inline/inline-tail.ll b/llvm/test/Regression/Transforms/Inline/inline-tail.ll deleted file mode 100644 index 31e036fe65a..00000000000 --- a/llvm/test/Regression/Transforms/Inline/inline-tail.ll +++ /dev/null @@ -1,16 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep tail - -implementation - -declare void %bar(int*) - -internal void %foo(int* %P) { ;; to be inlined - tail call void %bar(int* %P) - ret void -} - -void %caller() { - %A = alloca int - call void %foo(int* %A) ;; not a tail call - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/inline_cleanup.ll b/llvm/test/Regression/Transforms/Inline/inline_cleanup.ll deleted file mode 100644 index f0c153b4ca0..00000000000 --- a/llvm/test/Regression/Transforms/Inline/inline_cleanup.ll +++ /dev/null @@ -1,65 +0,0 @@ -; Test that the inliner doesn't leave around dead allocas, and that it folds -; uncond branches away after it is done specializing. - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep 'alloca.*uses=0' && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep 'br label' - -%A = weak global int 0 ; <int*> [#uses=1] -%B = weak global int 0 ; <int*> [#uses=1] -%C = weak global int 0 ; <int*> [#uses=1] - -implementation ; Functions: - -internal fastcc void %foo(int %X) { -entry: - %ALL = alloca int, align 4 ; <int*> [#uses=1] - %tmp1 = and int %X, 1 ; <int> [#uses=1] - %tmp1 = seteq int %tmp1, 0 ; <bool> [#uses=1] - br bool %tmp1, label %cond_next, label %cond_true - -cond_true: ; preds = %entry - store int 1, int* %A - br label %cond_next - -cond_next: ; preds = %entry, %cond_true - %tmp4 = and int %X, 2 ; <int> [#uses=1] - %tmp4 = seteq int %tmp4, 0 ; <bool> [#uses=1] - br bool %tmp4, label %cond_next7, label %cond_true5 - -cond_true5: ; preds = %cond_next - store int 1, int* %B - br label %cond_next7 - -cond_next7: ; preds = %cond_next, %cond_true5 - %tmp10 = and int %X, 4 ; <int> [#uses=1] - %tmp10 = seteq int %tmp10, 0 ; <bool> [#uses=1] - br bool %tmp10, label %cond_next13, label %cond_true11 - -cond_true11: ; preds = %cond_next7 - store int 1, int* %C - br label %cond_next13 - -cond_next13: ; preds = %cond_next7, %cond_true11 - %tmp16 = and int %X, 8 ; <int> [#uses=1] - %tmp16 = seteq int %tmp16, 0 ; <bool> [#uses=1] - br bool %tmp16, label %UnifiedReturnBlock, label %cond_true17 - -cond_true17: ; preds = %cond_next13 - call void %ext( int* %ALL ) - ret void - -UnifiedReturnBlock: ; preds = %cond_next13 - ret void -} - -declare void %ext(int*) - -void %test() { -entry: - tail call fastcc void %foo( int 1 ) - tail call fastcc void %foo( int 2 ) - tail call fastcc void %foo( int 3 ) - tail call fastcc void %foo( int 8 ) - ret void -} diff --git a/llvm/test/Regression/Transforms/Inline/inline_constprop.ll b/llvm/test/Regression/Transforms/Inline/inline_constprop.ll deleted file mode 100644 index d76a88be37f..00000000000 --- a/llvm/test/Regression/Transforms/Inline/inline_constprop.ll +++ /dev/null @@ -1,15 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep callee && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep div - -implementation - -internal int %callee(int %A, int %B) { - %C = div int %A, %B - ret int %C -} - -int %test() { - %X = call int %callee(int 10, int 3) - ret int %X -} diff --git a/llvm/test/Regression/Transforms/Inline/inline_dce.ll b/llvm/test/Regression/Transforms/Inline/inline_dce.ll deleted file mode 100644 index 9dc7a774ae6..00000000000 --- a/llvm/test/Regression/Transforms/Inline/inline_dce.ll +++ /dev/null @@ -1,25 +0,0 @@ -; This checks to ensure that the inline pass deletes functions if they get -; inlined into all of their callers. - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep %reallysmall - -implementation - -internal int %reallysmall(int %A) { - ret int %A -} - -void %caller1() { - call int %reallysmall(int 5) - ret void -} - -void %caller2(int %A) { - call int %reallysmall(int %A) - ret void -} - -int %caller3(int %A) { - %B = call int %reallysmall(int %A) - ret int %B -} diff --git a/llvm/test/Regression/Transforms/Inline/inline_prune.ll b/llvm/test/Regression/Transforms/Inline/inline_prune.ll deleted file mode 100644 index dff38802e1f..00000000000 --- a/llvm/test/Regression/Transforms/Inline/inline_prune.ll +++ /dev/null @@ -1,40 +0,0 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -disable-output && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep 'callee[12](' && -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep mul - -implementation - -internal int %callee1(int %A, int %B) { - %cond = seteq int %A, 123 - br bool %cond, label %T, label %F -T: - %C = mul int %B, %B - ret int %C -F: - ret int 0 -} - -internal int %callee2(int %A, int %B) { - switch int %A, label %T [ - int 10, label %F - int 1234, label %G - ] - %cond = seteq int %A, 123 - br bool %cond, label %T, label %F -T: - %C = mul int %B, %B - ret int %C -F: - ret int 0 -G: - %D = mul int %B, %B - %E = mul int %D, %B - ret int %E -} - -int %test(int %A) { - %X = call int %callee1(int 10, int %A) - %Y = call int %callee2(int 10, int %A) - %Z = add int %X, %Y - ret int %Z -} diff --git a/llvm/test/Regression/Transforms/Inline/invoke_test-1.ll b/llvm/test/Regression/Transforms/Inline/invoke_test-1.ll deleted file mode 100644 index 8409a21561b..00000000000 --- a/llvm/test/Regression/Transforms/Inline/invoke_test-1.ll +++ /dev/null @@ -1,22 +0,0 @@ -; Test that we can inline a simple function, turning the calls in it into invoke -; instructions - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep 'call[^e]' - -declare void %might_throw() - -implementation - -internal void %callee() { - call void %might_throw() - ret void -} - -; caller returns true if might_throw throws an exception... -int %caller() { - invoke void %callee() to label %cont except label %exc -cont: - ret int 0 -exc: - ret int 1 -} diff --git a/llvm/test/Regression/Transforms/Inline/invoke_test-2.ll b/llvm/test/Regression/Transforms/Inline/invoke_test-2.ll deleted file mode 100644 index 0913f7c24d9..00000000000 --- a/llvm/test/Regression/Transforms/Inline/invoke_test-2.ll +++ /dev/null @@ -1,27 +0,0 @@ -; Test that if an invoked function is inlined, and if that function cannot -; throw, that the dead handler is now unreachable. - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline -simplifycfg | llvm-dis | not grep UnreachableExceptionHandler - -declare void %might_throw() - -implementation - -internal int %callee() { - invoke void %might_throw() to label %cont except label %exc -cont: - ret int 0 -exc: - ; This just consumes the exception! - ret int 1 -} - -; caller returns true if might_throw throws an exception... callee cannot throw. -int %caller() { - %X = invoke int %callee() to label %cont - except label %UnreachableExceptionHandler -cont: - ret int %X -UnreachableExceptionHandler: - ret int -1 ; This is dead! -} diff --git a/llvm/test/Regression/Transforms/Inline/invoke_test-3.ll b/llvm/test/Regression/Transforms/Inline/invoke_test-3.ll deleted file mode 100644 index b471afe2fb5..00000000000 --- a/llvm/test/Regression/Transforms/Inline/invoke_test-3.ll +++ /dev/null @@ -1,28 +0,0 @@ -; Test that any rethrown exceptions in an inlined function are automatically -; turned into branches to the invoke destination. - -; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | not grep unwind$ - -declare void %might_throw() - -implementation - -internal int %callee() { - invoke void %might_throw() to label %cont except label %exc -cont: - ret int 0 -exc: ; This just rethrows the exception! - unwind -} - -; caller returns true if might_throw throws an exception... which gets -; propagated by callee. -int %caller() { - %X = invoke int %callee() to label %cont - except label %Handler -cont: - ret int %X -Handler: - ; This consumes an exception thrown by might_throw - ret int 1 -} |

