This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/14973] New: ICE with -maltivec for vector types not matching HW types
- From: "janis187 at us dot ibm dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Apr 2004 00:35:07 -0000
- Subject: [Bug target/14973] New: ICE with -maltivec for vector types not matching HW types
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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