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