[Bug target/96139] Vector element extract mistypes long long int down to long int

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jul 10 07:28:11 GMT 2020


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
   Last reconfirmed|                            |2020-07-10
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue is that 'val' has

 <vector_type 0x7ffff69f8c78 vui64_t
    type <integer_type 0x7ffff6bc97e0 long unsigned int public unsigned DI
        size <integer_cst 0x7ffff6bc7030 constant 64>
        unit-size <integer_cst 0x7ffff6bc7048 constant 8>
        align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff6bc97e0 precision:64 min <integer_cst 0x7ffff6bc7300 0> max <integer_cst
0x7ffff6bb85a0 18446744073709551615>
        pointer_to_this <pointer_type 0x7ffff6bd7e70>>
    unsigned V2DI
    size <integer_cst 0x7ffff6bc7078 type <integer_type 0x7ffff6bc90a8
bitsizetype> constant 128>
    unit-size <integer_cst 0x7ffff6bc7090 type <integer_type 0x7ffff6bc9000
sizetype> constant 16>
    align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff6cae000 nunits:2>

so the error is in processing of the __vector typedef, not in the
element extract.  IIRC __vector is a ppc specific keyword thus target
code is likely the culprit here.

It's also wrong-code for TBAA btw, accessing a unsigned long long[]
via ui64_t would be invalid.


More information about the Gcc-bugs mailing list