diff options
author | 2006-03-18 00:46:08 +0000 | |
---|---|---|
committer | 2006-03-18 00:46:08 +0000 | |
commit | fcb140534cbc873af28ae4affd7a4bf1c520d678 (patch) | |
tree | ad2d851521872ab62135953d0cb360e068a00729 /4.0.3 | |
parent | A fix should already be applied to 4.1.0; bug #126609 (diff) | |
download | gcc-patches-fcb140534cbc873af28ae4affd7a4bf1c520d678.tar.gz gcc-patches-fcb140534cbc873af28ae4affd7a4bf1c520d678.tar.bz2 gcc-patches-fcb140534cbc873af28ae4affd7a4bf1c520d678.zip |
A fix should already be applied to 4.0.3; bug #126609
Diffstat (limited to '4.0.3')
-rw-r--r-- | 4.0.3/gentoo/33_all_gcc4-pr16104.patch | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/4.0.3/gentoo/33_all_gcc4-pr16104.patch b/4.0.3/gentoo/33_all_gcc4-pr16104.patch deleted file mode 100644 index 7f10332..0000000 --- a/4.0.3/gentoo/33_all_gcc4-pr16104.patch +++ /dev/null @@ -1,98 +0,0 @@ -2005-01-13 Jakub Jelinek <jakub@redhat.com> - - PR rtl-optimization/16104 - * expr.c (convert_move): Handle vector from resp. to if mode - sizes differ. - - * gcc.c-torture/execute/20050113-1.c: New test. - ---- gcc/expr.c.jj 2005-01-04 15:41:28.000000000 +0100 -+++ gcc/expr.c 2005-01-13 14:38:42.431843676 +0100 -@@ -364,7 +364,27 @@ convert_move (rtx to, rtx from, int unsi - - if (VECTOR_MODE_P (to_mode) || VECTOR_MODE_P (from_mode)) - { -- gcc_assert (GET_MODE_BITSIZE (from_mode) == GET_MODE_BITSIZE (to_mode)); -+ if (GET_MODE_BITSIZE (from_mode) != GET_MODE_BITSIZE (to_mode)) -+ { -+ if (VECTOR_MODE_P (from_mode)) -+ { -+ enum machine_mode new_mode; -+ -+ new_mode = mode_for_size (GET_MODE_BITSIZE (from_mode), -+ MODE_INT, 0); -+ from = simplify_gen_subreg (new_mode, from, from_mode, 0); -+ } -+ if (VECTOR_MODE_P (to_mode)) -+ { -+ enum machine_mode new_mode; -+ -+ new_mode = mode_for_size (GET_MODE_BITSIZE (to_mode), -+ MODE_INT, 0); -+ to = simplify_gen_subreg (new_mode, to, to_mode, 0); -+ } -+ convert_move (to, from, unsignedp); -+ return; -+ } - - if (VECTOR_MODE_P (to_mode)) - from = simplify_gen_subreg (to_mode, from, GET_MODE (from), 0); ---- gcc/testsuite/gcc.c-torture/execute/20050113-1.c.jj 2005-01-13 15:51:09.194383356 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/20050113-1.c 2005-01-13 15:37:22.000000000 +0100 -@@ -0,0 +1,56 @@ -+/* PR rtl-optimization/16104 */ -+ -+extern void abort (void); -+ -+typedef int V2SI __attribute__ ((vector_size (8))); -+typedef short V2HI __attribute__ ((vector_size (4))); -+ -+int -+test1 (void) -+{ -+ return (long long) (V2SI) 0LL; -+} -+ -+int -+test2 (V2SI x) -+{ -+ return (long long) x; -+} -+ -+V2SI -+test3 (void) -+{ -+ return (V2SI) (long long) (int) (V2HI) 0; -+} -+ -+V2SI -+test4 (V2HI x) -+{ -+ return (V2SI) (long long) (int) x; -+} -+ -+int -+main (void) -+{ -+ if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8) -+ return 0; -+ -+ if (test1 () != 0) -+ abort (); -+ -+ V2SI x = { 2, 2 }; -+ if (test2 (x) != 2) -+ abort (); -+ -+ union { V2SI x; int y[2]; } u; -+ u.x = test3 (); -+ if (u.y[0] != 0 || u.y[1] != 0) -+ abort (); -+ -+ V2HI y = { 4, 4 }; -+ union { V2SI x; long long y; } v; -+ v.x = test4 (y); -+ if (v.y != 0x40004) -+ abort (); -+ return 0; -+} |