This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/61872] Assigning to "long double" causes memset to be improperly elided


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61872

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |x86_64-*-*, i?86-*-*
             Status|ASSIGNED                    |NEW
                 CC|                            |ebotcazou at gcc dot gnu.org
          Component|c++                         |target
           Assignee|rguenth at gcc dot gnu.org         |unassigned at gcc dot gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Err, not exactly mine but the issue is that we have

(insn 6 5 7 (set (mem/c:DI (reg:DI 85) [0 MEM[(void *)&a]+0 S8 A128])
        (const_int 0 [0])) t.c:5 -1
     (nil))

(insn 7 6 0 (set (mem/c:DI (plus:DI (reg:DI 85)
                (const_int 8 [0x8])) [0 MEM[(void *)&a]+8 S8 A64])
        (const_int 0 [0])) t.c:5 -1
     (nil))
...
(insn 9 8 0 (set (mem/c:XF (plus:DI (reg/f:DI 78 virtual-stack-vars)
                (const_int -16 [0xfffffffffffffff0])) [0 a+0 S16 A128])
        (float_extend:XF (reg:SF 86))) t.c:6 -1
     (nil))

but the actual store via fstpt is _not_ 16 bytes.  Thus the XFmode store
for some reason got a MEM_SIZE of 16.  And RTL DSE only looks at MEM_SIZE.
And even the default mode_mem_attrs[XFmode] have 16 bytes size.  And
mode_size[XFmode] is 16.

But

FRACTIONAL_FLOAT_MODE (XF, 80, 12, ieee_extended_intel_96_format);

?!

Making target dependent for now.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]