yann@1: Message-Id: 20030822160024.GA305@ftbfs.org yann@1: From: Matt Kraai kraai at alumni dot cmu dot edu yann@1: To: gcc-patches at gcc dot gnu dot org yann@1: Date: Fri, 22 Aug 2003 09:00:24 -0700 yann@1: Subject: PR 11949 yann@1: yann@1: Howdy, yann@1: yann@1: I've backported the following patch from the mainline to the 3.3 yann@1: branch to fix PR 11949. yann@1: yann@1: Bootstrapped and regression tested on powerpc-unknown-linux-gnu. yann@1: yann@1: OK to commit? yann@1: yann@1: PR c/11949 yann@1: Backport from mainline: yann@1: yann@1: 2003-05-05 Aldy Hernandez aldyh@redhat.com yann@1: yann@1: * testsuite/gcc.c-torture/compile/simd-6.c: New. yann@1: yann@1: * c-typeck.c (digest_init): Handle arrays of vector constants. yann@1: yann@1: Index: gcc/c-typeck.c yann@1: =================================================================== yann@1: RCS file: /cvs/gcc/gcc/gcc/c-typeck.c,v yann@1: retrieving revision 1.213.2.8 yann@1: diff -3 -c -p -r1.213.2.8 c-typeck.c yann@1: *** gcc/gcc/c-typeck.c 19 Aug 2003 01:42:35 -0000 1.213.2.8 yann@1: --- gcc/gcc/c-typeck.c 22 Aug 2003 09:24:03 -0000 yann@1: *************** digest_init (type, init, require_constan yann@1: *** 4765,4772 **** yann@1: if (code == VECTOR_TYPE yann@1: && comptypes (TREE_TYPE (inside_init), type) yann@1: && TREE_CONSTANT (inside_init)) yann@1: ! return build_vector (type, TREE_OPERAND (inside_init, 1)); yann@1: ! yann@1: yann@1: /* Any type can be initialized yann@1: from an expression of the same type, optionally with braces. */ yann@1: --- 4765,4778 ---- yann@1: if (code == VECTOR_TYPE yann@1: && comptypes (TREE_TYPE (inside_init), type) yann@1: && TREE_CONSTANT (inside_init)) yann@1: ! { yann@1: ! if (TREE_CODE (inside_init) == VECTOR_CST yann@1: ! && comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (inside_init)), yann@1: ! TYPE_MAIN_VARIANT (type))) yann@1: ! return inside_init; yann@1: ! else yann@1: ! return build_vector (type, CONSTRUCTOR_ELTS (inside_init)); yann@1: ! } yann@1: yann@1: /* Any type can be initialized yann@1: from an expression of the same type, optionally with braces. */ yann@1: yann@1: typedef int __attribute__((mode(V2SI))) vec; yann@1: yann@1: vec a[] = {(vec) {1, 2}, {3, 4}}; yann@1: