[Bug target/70120] [6 Regression][aarch64] -g causes Assembler messages: Error: unaligned opcodes detected in executable segment
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 25 19:14:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70120
--- Comment #13 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to James Greenhalgh from comment #12)
> I can still trigger this with a testcase using 16-bit floating-point types,
> and the tiny memory model:
>
> int
> main (__fp16 x)
> {
> __fp16 a = 6.5504e4;
> return (x <= a);
> }
>
> gcc foo.c -O3 -mcmodel=tiny -g
>
> /tmp/ccwJITmo.s: Assembler messages:
> /tmp/ccwJITmo.s: Error: unaligned opcodes detected in executable segment
>
> In this test case, a call to force_const_mem in ira adds a new 32-bit
> constant in the constant pool, but ultimately doesn't use it. That means
> that when we sweep patterns looking for which constant pool entries to emit,
> we don't mark the unused pattern created by ira, and it doesn't get emitted.
> But, that leaves us with inconsistent information between the offset we
> think we've got, and what we've actually emitted.
>
> Presumably IRA isn't the only pass at fault here. Anything which eliminates
> a reference to a constant pool entry can cause the constant pool offset
> information to become stale.
>
> Maybe force_const_mem shouldn't be updating the offset information at all,
> and we should only update that as we make the sweep looking for live pool
> entries? I guess the trouble there is that we don't record the mode of the
> mem in the constant_descriptor_rtx - but if we were to do that it looks like
> we might be able to defer calculating offset until when we actually emit the
> pool. rs6000 might need some changes, but a better interface for their uses
> of get_pool_size looks like it would be "pool_empty_p" anyway.
>
> I'm not sure of this code though, so I don't know if that would make for a
> clean design.
>
> If you think this needs to be a separate bug, feel free to reclose this and
> open a new one.
I do think a new bug should be opened.
More information about the Gcc-bugs
mailing list