Displaying 2 results from an estimated 2 matches for "rejoin_at".
2015 Feb 12
2
[LLVMdev] RFC: Native Windows C++ exception handling
> We'd have to hoist a + b to somewhere that dominates L1 and L2. I think the only BB in your program that dominates is the entry block
I don't follow. What path do you see from entry to either L1 or L2 that doesn't pass through the indirectbr? In order to reach either L1 or L2, the call to maybe_throw() must raise an exception (else we'd return 0 from foo), the exception must
2015 Feb 13
2
[LLVMdev] RFC: Native Windows C++ exception handling
...func, %catch_float)
}
define i32 @foo(i32 %a, i32 %b) {
entry:
invoke void @maybe_throw()
to label %ret unwind label %lpad
ret:
ret i32 0 ; The return case
lpad:
%ehvals = landingpad { i8*, i32 } personality ...
catch ... ; typeinfo for int
catch ... ; typeinfo for float
%rejoin_at = call i8* @llvm.eh.actions(... @int_handler, ... @float_handler, ...)
indirectbr i8* %rejoin_at, [ label %catch_int, label %catch_float ]
catch_int:
%s1 = add i32 %a, %b
ret i32 %s1
catch_float:
%s2 = add i32 %a, %b
%s3 = add i32 %s2, 1
ret i32 %s3
}
But even if we aren't smart...