llvm submittal 41050 created for powerpc64 C++ exception code generation: ld r2,40(r1) missing or skipped before bl __cxa_begin_catch code

Mark Millard via freebsd-ppc <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc,gmane.os.freebsd.devel.toolchain
Message-ID <[email protected]>
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)

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ppc
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.