RFR [XS] 8041658: Use of -fdevirtualize on macroAssembler_x86.o (via -O2) with gcc 4.9.0 creates broken VM
Andrew Haley
aph at redhat.com
Fri Apr 25 10:46:09 UTC 2014
On 04/24/2014 04:10 PM, Volker Simonis wrote:
> Wow, that was fast!
Haha, I cheated! I debugged GCC and put a breakpoint on the point
where the call site was marked unreachable.
g++ -fdump-tree-all -fdump-ipa-all ...
gets you a lot of dump files. I looked in these files to see where it
all went wrong.
If you look at embed.cpp.043i.whole-program generated when compiling
the example I posted to the GCC list
<http://gcc.gnu.org/ml/gcc/2014-04/msg00236/embed-test.tar> you'll see
_2 = MEM[(struct EmbeddedObject *)&o]._vptr.EmbeddedObject;
_3 = *_2;
_5 = _4(D);
__builtin_unreachable (&o.buffer);
and with no-devirtualize:
_2 = MEM[(struct EmbeddedObject *)&o]._vptr.EmbeddedObject;
_3 = *_2;
_5 = OBJ_TYPE_REF(_3;(struct EmbeddedObject)&o.buffer->0) (&o.buffer);
Andrew.
More information about the hotspot-dev
mailing list