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/14973] New: ICE with -maltivec for vector types not matching HW types


The following small testcases cause internal compiler errors when
compiled with "-maltivec -mabi=altivec" for either -m32 or -m64 for
the current mainline, 3.4, and hammer-3.3 branches.  The ICEs differ
but are related so I'm putting these into the same PR.
                                                                                
Output for mainline:
                                                                                
bug1.c: In function `return_v8':
bug1.c:12: error: insn does not satisfy its constraints:
(insn 42 69 26 (set (reg:DI 79 2 [ <result> ])
        (mem:DI (plus:SI (reg/f:SI 31 31)
                (const_int 16 [0x10])) [0 S8 A8])) 321 {*movdi_internal32} (nil)
   (nil))
bug1.c:12: internal compiler error: in final_scan_insn, at final.c:2437
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
                                                                                
bug2.c: In function `init_v8':
bug2.c:13: internal compiler error: in simplify_gen_subreg,
  at simplify-rtx.c:3665
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
                                                                                
--- bug1 ---------------------------------------------------------------
/* This ICEs when compiled with -maltivec -mabi=altivec, for both -m32
   and -m64.  The same thing happens when the integer type is anything
   but 32 bits, and also for floating point types that don't fit in HW
   vector registers.  This code is from gcc.dg/compat/vector-1_x.c. */
                                                                                
typedef short __attribute__((vector_size (8))) v8;
                                                                                
v8 v;
                                                                                
v8 return_v8 (void)
{
    return v;
}
--- bug2 ---------------------------------------------------------------
/* This ICEs when compiled with -maltivec -mabi=altivec, for both -m32
   and -m64.  The same thing happens when the integer type is anything
   but 32 bits, and also for floating point types that don't fit in HW
   vector registers.  This code is from gc.dg/compat/vector-1_y.c.  */
                                                                                
typedef short __attribute__((vector_size (8))) v8;
typedef union U8 { v8 v; short a[8]; } u8;
                                                                                
extern v8 v;
extern u8 u;
                                                                                
void init_v8 (void)
{
    v = u.v;
}
------------------------------------------------------------------------

-- 
           Summary: ICE with -maltivec for vector types not matching HW
                    types
           Product: gcc
           Version: 3.3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janis187 at us dot ibm dot com
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: powerpc64-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14973


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