I have submitted: https://bugs.llvm.org//show_bug.cgi?id=41050
for the clang 8 code generation problem of no code for setting r2 appropriately before the: bl . . . <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3> in unoptimized code ( no -O ). For the -O2 code: ld r2,40(r1) is present but is being skipped by the libunwind return to the code: it returns to the just-following bl instruction (like above) instead. In both cases: (gdb) x/32i 0x100007c0 0x100007c0 <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3>: std r2,40(r1) 0x100007c4 <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+4>: ld r12,-32608(r2) 0x100007c8 <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+8>: mtctr r12 0x100007cc <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+12>: ld r11,-32592(r2) 0x100007d0 <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+16>: ld r2,-32600(r2) 0x100007d4 <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+20>: bctr 0x100007d8 <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+24>: .long 0x0 0x100007dc <00000018.plt_call.__cxa_begin_catch@@CXXABI_1.3+28>: .long 0x0 . . . with an inappropriate r2 value leads to jumping to inappropriate places. The example source code was: #include <exception> int main(void) { try { throw std::exception(); } catch (std::exception& e) {} return 0; } Note: This is from investigations of head -r345044 using WITH_LLVM_LIBUNWIND= on powerpc64. === Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar) _______________________________________________ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"