rpms/gcc4/FC-3 gcc4-c++-pr10606-revert.patch, NONE, 1.1 gcc4-g++-struct-layout.patch, NONE, 1.1 gcc4-pr16104-test.patch, NONE, 1.1 .cvsignore, 1.8, 1.9 gcc4-c++-pr19317.patch, 1.1, 1.2 gcc4-pr20249.patch, 1.1, 1.2 gcc4a.spec, 1.14, 1.15 sources, 1.9, 1.10 gcc4-ada-makej.patch, 1.1, NONE gcc4-c++-pr20381.patch, 1.1, NONE gcc4-libjawt.patch, 1.1, NONE gcc4-pr16104.patch, 1.1, NONE gcc4-pr19769-workaround.patch, 1.1, NONE gcc4-rh150150.patch, 1.1, NONE
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Wed Apr 6 08:51:56 UTC 2005
- Previous message (by thread): rpms/gcc/devel gcc4-pr16104-test.patch, NONE, 1.1 .cvsignore, 1.81, 1.82 gcc4-c++-pr19317.patch, 1.1, 1.2 gcc4.spec, 1.25, 1.26 sources, 1.82, 1.83 gcc4-builtin-apply.patch, 1.1, NONE gcc4-macrospace.patch, 1.1, NONE
- Next message (by thread): rpms/gcc4/FC-3 gcc4-c++-pr10606-revert.patch,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvs/dist/rpms/gcc4/FC-3
In directory cvs.devel.redhat.com:/tmp/cvs-serv3706
Modified Files:
.cvsignore gcc4-c++-pr19317.patch gcc4-pr20249.patch
gcc4a.spec sources
Added Files:
gcc4-c++-pr10606-revert.patch gcc4-g++-struct-layout.patch
gcc4-pr16104-test.patch
Removed Files:
gcc4-ada-makej.patch gcc4-c++-pr20381.patch gcc4-libjawt.patch
gcc4-pr16104.patch gcc4-pr19769-workaround.patch
gcc4-rh150150.patch
Log Message:
4.0.0-0.41.fc3
gcc4-c++-pr10606-revert.patch:
except.c | 92 +++++++++++++++++++++++----------------------------------------
1 files changed, 34 insertions(+), 58 deletions(-)
--- NEW FILE gcc4-c++-pr10606-revert.patch ---
2005-04-06 Jakub Jelinek <jakub at redhat.com>
Revert:
2005-02-18 Richard Henderson <rth at redhat.com>
PR libstdc++/10606
* except.c (do_get_exception_ptr): New.
(expand_start_catch_block): Use it.
--- gcc/except.c 19 Feb 2005 02:35:16 -0000 1.181
+++ gcc/except.c 11 Feb 2005 16:28:37 -0000 1.180
@@ -153,26 +153,6 @@ build_exc_ptr (void)
return build0 (EXC_PTR_EXPR, ptr_type_node);
}
-/* Build up a call to __cxa_get_exception_ptr so that we can build a
- copy constructor for the thrown object. */
-
-static tree
-do_get_exception_ptr (void)
-{
- tree fn;
-
- fn = get_identifier ("__cxa_get_exception_ptr");
- if (!get_global_value_if_present (fn, &fn))
- {
- /* Declare void* __cxa_get_exception_ptr (void *). */
- tree tmp = tree_cons (NULL_TREE, ptr_type_node, void_list_node);
- fn = push_library_fn (fn, build_function_type (ptr_type_node, tmp));
- }
-
- return build_function_call (fn, tree_cons (NULL_TREE, build_exc_ptr (),
- NULL_TREE));
-}
-
/* Build up a call to __cxa_begin_catch, to tell the runtime that the
exception has been handled. */
@@ -401,8 +381,9 @@ initialize_handler_parm (tree decl, tree
tree
expand_start_catch_block (tree decl)
{
- tree exp;
+ tree exp = NULL_TREE;
tree type;
+ bool is_java;
if (! doing_eh (1))
return NULL_TREE;
@@ -416,50 +397,45 @@ expand_start_catch_block (tree decl)
else
type = NULL_TREE;
- if (decl && decl_is_java_type (type, 1))
+ is_java = false;
+ if (decl)
{
- /* Java only passes object via pointer and doesn't require
- adjusting. The java object is immediately before the
- generic exception header. */
- exp = build_exc_ptr ();
- exp = build1 (NOP_EXPR, build_pointer_type (type), exp);
- exp = build2 (MINUS_EXPR, TREE_TYPE (exp), exp,
- TYPE_SIZE_UNIT (TREE_TYPE (exp)));
- exp = build_indirect_ref (exp, NULL);
- initialize_handler_parm (decl, exp);
- return type;
- }
-
- /* Call __cxa_end_catch at the end of processing the exception. */
- push_eh_cleanup (type);
-
- /* If there's no decl at all, then all we need to do is make sure
- to tell the runtime that we've begun handling the exception. */
- if (decl == NULL)
- finish_expr_stmt (do_begin_catch ());
-
- /* If the C++ object needs constructing, we need to do that before
- calling __cxa_begin_catch, so that std::uncaught_exception gets
- the right value during the copy constructor. */
- else if (TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (decl)))
- {
- exp = do_get_exception_ptr ();
- initialize_handler_parm (decl, exp);
- finish_expr_stmt (do_begin_catch ());
- }
+ tree init;
- /* Otherwise the type uses a bitwise copy, and we don't have to worry
- about the value of std::uncaught_exception and therefore can do the
- copy with the return value of __cxa_end_catch instead. */
- else
- {
- tree init = do_begin_catch ();
+ if (decl_is_java_type (type, 1))
+ {
+ /* Java only passes object via pointer and doesn't require
+ adjusting. The java object is immediately before the
+ generic exception header. */
+ init = build_exc_ptr ();
+ init = build1 (NOP_EXPR, build_pointer_type (type), init);
+ init = build2 (MINUS_EXPR, TREE_TYPE (init), init,
+ TYPE_SIZE_UNIT (TREE_TYPE (init)));
+ init = build_indirect_ref (init, NULL);
+ is_java = true;
+ }
+ else
+ {
+ /* C++ requires that we call __cxa_begin_catch to get the
+ pointer to the actual object. */
+ init = do_begin_catch ();
+ }
+
exp = create_temporary_var (ptr_type_node);
DECL_REGISTER (exp) = 1;
cp_finish_decl (exp, init, NULL_TREE, LOOKUP_ONLYCONVERTING);
finish_expr_stmt (build_modify_expr (exp, INIT_EXPR, init));
- initialize_handler_parm (decl, exp);
}
+ else
+ finish_expr_stmt (do_begin_catch ());
+
+ /* C++ requires that we call __cxa_end_catch at the end of
+ processing the exception. */
+ if (! is_java)
+ push_eh_cleanup (type);
+
+ if (decl)
+ initialize_handler_parm (decl, exp);
return type;
}
gcc4-g++-struct-layout.patch:
struct-layout-1.exp | 155 +++++
struct-layout-1.h | 342 +++++++++++
struct-layout-1_generate.c | 1339 +++++++++++++++++++++++++++++++++++++++++++++
struct-layout-1_x1.h | 68 ++
struct-layout-1_x2.h | 14
struct-layout-1_y1.h | 76 ++
struct-layout-1_y2.h | 69 ++
7 files changed, 2063 insertions(+)
--- NEW FILE gcc4-g++-struct-layout.patch ---
2005-04-05 Jakub Jelinek <jakub at redhat.com>
* g++.dg/compat/struct-layout-1.exp: New file.
* g++.dg/compat/struct-layout-1.h: New.
* g++.dg/compat/struct-layout-1_generate.c: New.
* g++.dg/compat/struct-layout-1_x1.h: New.
* g++.dg/compat/struct-layout-1_x2.h: New.
* g++.dg/compat/struct-layout-1_y1.h: New.
* g++.dg/compat/struct-layout-1_y2.h: New.
--- gcc/testsuite/g++.dg/compat/struct-layout-1_y1.h.jj 2005-04-05 16:46:13.000000000 +0200
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_y1.h 2004-07-21 16:28:22.000000000 +0200
@@ -0,0 +1,76 @@
+#include "struct-layout-1.h"
+
+#define F(n, x, v, w) \
+ if (info.flds[i] != &s##n.x) \
+ FAIL (n, 50); \
+ if (info.sizes[i] != sizeof (s##n.x)) \
+ FAIL (n, 51); \
+ if (info.aligns[i] != __alignof__ (s##n.x)) \
+ FAIL (n, 52); \
+ if (s##n.x != (__typeof__ (s##n.x)) v) \
+ FAIL (n, 53); \
+ if (a##n[2].x != (__typeof__ (s##n.x)) w) \
+ FAIL (n, 54); \
+ if (arg0.x != s##n.x) \
+ FAIL (n, 55); \
+ if (arg2.x != a##n[2].x) \
+ FAIL (n, 56); \
+ ret.x = s##n.x; \
+ ++i;
+#define N(n, x) \
+ if (info.flds[i] != &s##n.x) \
+ FAIL (n, 50); \
+ if (info.sizes[i] != sizeof (s##n.x)) \
+ FAIL (n, 51); \
+ if (info.aligns[i] != __alignof__ (s##n.x)) \
+ FAIL (n, 52); \
+ ++i;
+#define B(n, x, v, w) \
+ b1.x = v; b2.x = w; \
+ if (s##n.x != b1.x) \
+ FAIL (n, 53); \
+ if (a##n[2].x != b2.x) \
+ FAIL (n, 54); \
+ if (arg0.x != s##n.x) \
+ FAIL (n, 55); \
+ if (arg2.x != a##n[2].x) \
+ FAIL (n, 56); \
+ ret.x = s##n.x; \
+ ++j;
+#define TX(n, type, attrs, fields, ops) \
+type S##n { fields } attrs; \
+extern type S##n s##n; \
+type S##n a##n[5]; \
+type S##n \
+check##n (type S##n arg0, type S##n *arg1, type S##n arg2) \
+{ \
+ type S##n ret; \
+ type S##n b1, b2; \
+ int i, j; \
+ \
+ memset (&ret, 0, sizeof (ret)); \
+ memset (&b1, 0, sizeof (b1)); \
+ memset (&b2, 0, sizeof (b2)); \
+ if (info.sp != &s##n) \
+ FAIL (n, 10); \
+ if (info.a0p != &a##n[0]) \
+ FAIL (n, 11); \
+ if (info.a3p != &a##n[3]) \
+ FAIL (n, 12); \
+ if (info.sz != sizeof (s##n)) \
+ FAIL (n, 13); \
+ if (info.als != __alignof__ (s##n)) \
+ FAIL (n, 14); \
+ if (info.ala0 != __alignof__ (a##n[0])) \
+ FAIL (n, 15); \
+ if (info.ala3 != __alignof__ (a##n[3])) \
+ FAIL (n, 16); \
+ if (arg1 != &a##n[1]) \
+ FAIL (n, 17); \
+ i = 0; j = 0; \
+ ops \
+ if (i != info.nfields || j != info.nbitfields) \
+ FAIL (n, 18); \
+ \
+ return ret; \
+}
--- gcc/testsuite/g++.dg/compat/struct-layout-1.h.jj 2005-04-05 16:43:30.000000000 +0200
+++ gcc/testsuite/g++.dg/compat/struct-layout-1.h 2005-04-05 18:41:57.000000000 +0200
@@ -0,0 +1,342 @@
+#include <limits.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "../../gcc.dg/compat/compat-common.h"
+
+#ifndef SKIP_ATTRIBUTE
+# include "../../gcc.dg/compat/vector-defs.h"
+#else
+typedef int qi;
+typedef int hi;
+typedef int si;
+typedef int di;
+typedef float sf;
+typedef float df;
+typedef int v8qi;
+typedef int v16qi;
+typedef int v2hi;
+typedef int v4hi;
+typedef int v8hi;
+typedef int v2si;
+typedef int v4si;
+typedef int v1di;
+typedef int v2di;
+typedef int v2sf;
+typedef int v4sf;
+typedef int v16sf;
+typedef int v2df;
+typedef int u8qi;
+typedef int u16qi;
+typedef int u2hi;
+typedef int u4hi;
+typedef int u8hi;
+typedef int u2si;
+typedef int u4si;
+typedef int u1di;
+typedef int u2di;
+typedef int u2sf;
+typedef int u4sf;
+typedef int u16sf;
+typedef int u2df;
+#endif
+#if (defined __i386__ || defined __x86_64__) && !defined SKIP_ATTRIBUTE
+# ifdef __MMX__
+# include <mmintrin.h>
+# else
+typedef int __m64;
+# endif
+# ifdef __SSE__
+# include <xmmintrin.h>
+# else
+typedef int __m128;
+# endif
+#else
+typedef int __m64;
+typedef int __m128;
+#endif
+
+#define FLDS_MAX 32
+extern struct Info
+{
+ int nfields, nbitfields;
+ void *sp, *a0p, *a3p;
+ void *flds[FLDS_MAX];
+ size_t sz, sizes[FLDS_MAX];
+ size_t als, ala0, ala3, aligns[FLDS_MAX];
+} info;
+
+extern int intarray[256];
+extern int fn0 (void), fn1 (void), fn2 (void), fn3 (void), fn4 (void);
+extern int fn5 (void), fn6 (void), fn7 (void), fn8 (void), fn9 (void);
+
+#ifdef DBG
+#define FAIL(n, m) printf ("fail %d.%d\n", n, m), ++fails
+#else
+#define FAIL(n, m) ++fails
+#endif
+
+#ifdef SKIP_ATTRIBUTE
+# define __attribute__(x)
+#endif
+#define atal __attribute__((aligned))
+#define atpa __attribute__((packed))
+#define atalpa __attribute__((aligned, packed))
+#define atpaal __attribute__((packed, aligned))
+#define atal1 __attribute__((aligned (1)))
+#define atal2 __attribute__((aligned (2)))
+#define atal4 __attribute__((aligned (4)))
+#define atal8 __attribute__((aligned (8)))
+#define atal16 __attribute__((aligned (16)))
+#define atal1pa __attribute__((aligned (1), packed))
+#define atal2pa __attribute__((aligned (2), packed))
+#define atal4pa __attribute__((aligned (4), packed))
+#define atal8pa __attribute__((aligned (8), packed))
+#define atal16pa __attribute__((aligned (16), packed))
+#define atpaal1 __attribute__((packed, aligned (1)))
+#define atpaal2 __attribute__((packed, aligned (2)))
+#define atpaal4 __attribute__((packed, aligned (4)))
+#define atpaal8 __attribute__((packed, aligned (8)))
+#define atpaal16 __attribute__((packed, aligned (16)))
+
+#define atQI __attribute__((mode (QI)))
+#define atHI __attribute__((mode (HI)))
+#define atSI __attribute__((mode (SI)))
+#define atDI __attribute__((mode (DI)))
[...1695 lines suppressed...]
+{ "aligned packed vector [0] :0",
+ FEATURE_VECTOR | FEATURE_ZEROARRAY
+ | FEATURE_ALIGNEDPACKED | FEATURE_ZEROBITFLD },
+};
+
+int
+main (int argc, char **argv)
+{
+ int i, j, count, c, n = 3000;
+
+ if (sizeof (int) != 4 || sizeof (long long) != 8)
+ return 1;
+
+ while ((c = getopt (argc, argv, "d:i:n:s:")) != -1)
+ switch (c)
+ {
+ case 'n':
+ n = atoi (optarg);
+ break;
+ case 'd':
+ destdir = optarg;
+ break;
+ case 's':
+ srcdir = optarg;
+ break;
+ case 'i':
+ output_one = 1;
+ limidx = atoi (optarg);
+ break;
+ default:
+ goto usage;
+ }
+
+ if (output_one)
+ {
+ outfile = fopen ("/dev/null", "w");
+ if (outfile == NULL)
+ {
+ fputs ("could not open /dev/null", stderr);
+ return 1;
+ }
+ n = limidx + 1;
+ }
+
+ if (destdir == NULL && !output_one)
+ {
+ usage:
+ fprintf (stderr, "Usage:\n\
+%s [-s srcdir -d destdir] [-n count] [-i idx]\n\
+Either -s srcdir -d destdir or -i idx must be used\n", argv[0]);
+ return 1;
+ }
+
+ if (srcdir == NULL && !output_one)
+ goto usage;
+
+ hasht = htab_create (40000, e_hash, e_eq, NULL);
+ for (i = 0; i < NTYPES2; ++i)
+ if (base_types[i].bitfld)
+ bitfld_types[n_bitfld_types++] = base_types[i];
+ for (i = 0; i < NATYPES2; ++i)
+ if (attrib_types[i].bitfld)
+ aligned_bitfld_types[n_aligned_bitfld_types++] = attrib_types[i];
+ for (i = 0; i < sizeof (features) / sizeof (features[0]); ++i)
+ {
+ int startidx = idx;
+ if (! output_one)
+ limidx = idx;
+ if (!i)
+ count = 200;
+ else
+ count = 20;
+ for (j = 1; j <= 9; ++j)
+ while (idx < startidx + j * count)
+ generate_random_tests (features[i].f, j);
+ while (idx < startidx + count * 10)
+ generate_random_tests (features[i].f, 10 + (generate_random () % 16));
+ }
+ for (i = 0; n > 3000 && i < sizeof (features) / sizeof (features[0]); ++i)
+ {
+ int startidx;
+ startidx = idx;
+ if (! output_one)
+ limidx = idx;
+ singles (features[i].f);
+ if (!i)
+ {
+ count = 1000;
+ while (idx < startidx + 1000)
+ generate_random_tests (features[i].f, 1);
+ }
+ else
+ {
+ startidx = idx;
+ count = 100;
+ while (idx < startidx + 100)
+ generate_random_tests (features[i].f, 1);
+ }
+ startidx = idx;
+ for (j = 2; j <= 9; ++j)
+ while (idx < startidx + (j - 1) * count)
+ generate_random_tests (features[i].f, j);
+ while (idx < startidx + count * 9)
+ generate_random_tests (features[i].f, 10 + (generate_random () % 16));
+ }
+ if (! output_one)
+ limidx = idx;
+ while (idx < n)
+ generate_random_tests (ALL_FEATURES, 1 + (generate_random () % 25));
+ fclose (outfile);
+ return 0;
+}
--- gcc/testsuite/g++.dg/compat/struct-layout-1_x2.h.jj 2005-04-05 16:46:05.000000000 +0200
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_x2.h 2004-07-13 18:53:18.000000000 +0200
@@ -0,0 +1,14 @@
+#undef F
+#undef N
+#undef B
+#undef TX
+#define F(n, x, v, w) \
+ if (arg.x != s##n.x) FAIL (n, 30);
+#define N(n, x)
+#define B(n, x, v, w) \
+ if (arg.x != s##n.x) FAIL (n, 30);
+#define TX(n, type, attrs, fields, ops) \
+void checkx##n (type S##n arg) \
+{ \
+ ops \
+}
--- gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h.jj 2005-04-05 16:46:03.000000000 +0200
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h 2004-10-16 09:02:45.000000000 +0200
@@ -0,0 +1,68 @@
+#include "struct-layout-1.h"
+
+struct Info info;
+int fails;
+int intarray[256];
+int fn0 (void) { return 0; }
+int fn1 (void) { return 1; }
+int fn2 (void) { return 2; }
+int fn3 (void) { return 3; }
+int fn4 (void) { return 4; }
+int fn5 (void) { return 5; }
+int fn6 (void) { return 6; }
+int fn7 (void) { return 7; }
+int fn8 (void) { return 8; }
+int fn9 (void) { return 9; }
+
+/* This macro is intended for fields where their
+ addresses/sizes/alignments and value passing should be checked. */
+#define F(n, x, v, w) \
+ info.flds[i] = &s##n.x; \
+ info.sizes[i] = sizeof (s##n.x); \
+ info.aligns[i] = __alignof__ (s##n.x); \
+ s##n.x = v; \
+ a##n[2].x = w; \
+ ++i;
+/* This macro is for fields where just their addresses/sizes/alignments
+ should be checked. */
+#define N(n, x) \
+ info.flds[i] = &s##n.x; \
+ info.sizes[i] = sizeof (s##n.x); \
+ info.aligns[i] = __alignof__ (s##n.x); \
+ ++i;
+/* This macro is for fields where just value passing should be checked. */
+#define B(n, x, v, w) \
+ s##n.x = v; \
+ a##n[2].x = w; \
+ ++j;
+#define TX(n, type, attrs, fields, ops) \
+type S##n { fields } attrs; \
+type S##n s##n; \
+extern type S##n a##n[5]; \
+extern type S##n check##n (type S##n, type S##n *, \
+ type S##n); \
+extern void check##n##va (int i, ...); \
+extern void checkx##n (type S##n); \
+void test##n (void) \
+{ \
+ int i, j; \
+ memset (&s##n, '\0', sizeof (s##n)); \
+ memset (a##n, '\0', sizeof (a##n)); \
+ memset (&info, '\0', sizeof (info)); \
+ info.sp = &s##n; \
+ info.a0p = &a##n[0]; \
+ info.a3p = &a##n[3]; \
+ info.sz = sizeof (s##n); \
+ info.als = __alignof__ (s##n); \
+ info.ala0 = __alignof__ (a##n[0]); \
+ info.ala3 = __alignof__ (a##n[3]); \
+ if (((long) &a##n[3]) & (info.als - 1)) \
+ FAIL (n, 1); \
+ i = 0; j = 0; \
+ ops \
+ info.nfields = i; \
+ info.nbitfields = j; \
+ checkx##n (check##n (s##n, &a##n[1], a##n[2])); \
+ check##n##va (1, 1.0, s##n, 2LL, a##n[2], a##n[2]); \
+ check##n##va (2, s##n, s##n, 2.0L, a##n[2], s##n); \
+}
gcc4-pr16104-test.patch:
gcc.c-torture/execute/20050316-2.c | 49 ++++++++++++++++++++
gcc.c-torture/execute/20050316-3.c | 36 +++++++++++++++
gcc.dg/torture/pr16104-1.c | 88 +++++++++++++++++++++++++++++++++++++
3 files changed, 173 insertions(+)
--- NEW FILE gcc4-pr16104-test.patch ---
2005-04-06 Jakub Jelinek <jakub at redhat.com>
* gcc.c-torture/execute/20050316-2.c: New test.
* gcc.c-torture/execute/20050316-3.c: New test.
* gcc.dg/torture/pr16104-1.c: New test.
--- gcc/testsuite/gcc.c-torture/execute/20050316-2.c.jj 2005-03-16 10:49:04.602767006 +0100
+++ gcc/testsuite/gcc.c-torture/execute/20050316-2.c 2005-03-16 10:46:39.000000000 +0100
@@ -0,0 +1,49 @@
+extern void abort (void);
+
+typedef int V2SI __attribute__ ((vector_size (8)));
+typedef unsigned int V2USI __attribute__ ((vector_size (8)));
+typedef float V2SF __attribute__ ((vector_size (8)));
+typedef short V2HI __attribute__ ((vector_size (4)));
+typedef unsigned int V2UHI __attribute__ ((vector_size (4)));
+
+long long
+test1 (V2SF x)
+{
+ return (long long) (V2SI) x;
+}
+
+long long
+test2 (V2SF x)
+{
+ return (long long) x;
+}
+
+long long
+test3 (V2SI x)
+{
+ return (long long) (V2SF) x;
+}
+
+int
+main (void)
+{
+ if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
+ return 0;
+
+ V2SF x = { 2.0, 2.0 };
+ union { long long l; float f[2]; int i[2]; } u;
+ u.l = test1 (x);
+ if (u.f[0] != 2.0 || u.f[1] != 2.0)
+ abort ();
+
+ V2SF y = { 6.0, 6.0 };
+ u.l = test2 (y);
+ if (u.f[0] != 6.0 || u.f[1] != 6.0)
+ abort ();
+
+ V2SI z = { 4, 4 };
+ u.l = test3 (z);
+ if (u.i[0] != 4 || u.i[1] != 4)
+ abort ();
+ return 0;
+}
--- gcc/testsuite/gcc.c-torture/execute/20050316-3.c.jj 2005-03-16 10:49:19.461121066 +0100
+++ gcc/testsuite/gcc.c-torture/execute/20050316-3.c 2005-03-16 10:30:06.000000000 +0100
@@ -0,0 +1,36 @@
+extern void abort (void);
+
+typedef int V2SI __attribute__ ((vector_size (8)));
+typedef unsigned int V2USI __attribute__ ((vector_size (8)));
+typedef short V2HI __attribute__ ((vector_size (4)));
+typedef unsigned int V2UHI __attribute__ ((vector_size (4)));
+
+V2USI
+test1 (V2SI x)
+{
+ return (V2USI) (V2SI) (long long) x;
+}
+
+long long
+test2 (V2SI x)
+{
+ return (long long) (V2USI) (V2SI) (long long) x;
+}
+
+int
+main (void)
+{
+ if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
+ return 0;
+
+ union { V2SI x; int y[2]; V2USI z; long long l; } u;
+ V2SI a = { -3, -3 };
+ u.z = test1 (a);
+ if (u.y[0] != -3 || u.y[1] != -3)
+ abort ();
+
+ u.l = test2 (a);
+ if (u.y[0] != -3 || u.y[1] != -3)
+ abort ();
+ return 0;
+}
--- gcc/testsuite/gcc.dg/torture/pr16104-1.c.jj 2005-03-16 10:55:22.351496535 +0100
+++ gcc/testsuite/gcc.dg/torture/pr16104-1.c 2005-03-16 10:55:13.746029061 +0100
@@ -0,0 +1,88 @@
+/* PR rtl-optimization/16104 */
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-msse2" } */
+
+#include "../i386-cpuid.h"
+
+extern void abort (void);
+
+typedef int V2SI __attribute__ ((vector_size (8)));
+typedef unsigned int V2USI __attribute__ ((vector_size (8)));
+typedef short V2HI __attribute__ ((vector_size (4)));
+typedef unsigned int V2UHI __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;
+}
+
+V2SI
+test5 (V2USI x)
+{
+ return (V2SI) x;
+}
+
+int
+__attribute__ ((noinline))
+do_test (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]; V2USI z; long long l; } 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 ();
+
+ V2USI z = { 6, 6 };
+ u.x = test5 (z);
+ if (u.y[0] != 6 || u.y[1] != 6)
+ abort ();
+ return 0;
+}
+
+int
+main (void)
+{
+ unsigned long cpu_facilities;
+
+ cpu_facilities = i386_cpuid ();
+
+ if ((cpu_facilities & (bit_MMX | bit_SSE | bit_CMOV | bit_SSE2))
+ != (bit_MMX | bit_SSE | bit_CMOV | bit_SSE2))
+ return 0;
+
+ return do_test ();
+}
Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc4/FC-3/.cvsignore,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- .cvsignore 15 Mar 2005 21:14:21 -0000 1.8
+++ .cvsignore 6 Apr 2005 08:51:53 -0000 1.9
@@ -1 +1 @@
-gcc-4.0.0-20050315.tar.bz2
+gcc-4.0.0-20050406.tar.bz2
gcc4-c++-pr19317.patch:
pr19317-1.C | 39 +++++++++++++++++++++++++++++++++++++++
pr19317-2.C | 32 ++++++++++++++++++++++++++++++++
pr19317-3.C | 37 +++++++++++++++++++++++++++++++++++++
3 files changed, 108 insertions(+)
Index: gcc4-c++-pr19317.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc4/FC-3/gcc4-c++-pr19317.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc4-c++-pr19317.patch 15 Mar 2005 21:14:21 -0000 1.1
+++ gcc4-c++-pr19317.patch 6 Apr 2005 08:51:53 -0000 1.2
@@ -1,47 +1,10 @@
-2005-03-03 Jakub Jelinek <jakub at redhat.com>
+2005-04-06 Jakub Jelinek <jakub at redhat.com>
PR c++/19317
- Revert
- 2004-12-23 Mark Mitchell <mark at codesourcery.com>
- PR c++/16405
- * gimplify.c (gimplify_modify_expr_rhs): Handle
- INDIRECT_REF/ADDR_EXPR combinations.
-
* g++.dg/opt/pr19317-1.C: New test.
* g++.dg/opt/pr19317-2.C: New test.
* g++.dg/opt/pr19317-3.C: New test.
---- gcc/gimplify.c.jj 2005-02-19 00:27:50.000000000 +0100
-+++ gcc/gimplify.c 2005-03-03 12:50:52.198658090 +0100
-@@ -2841,28 +2841,6 @@ gimplify_modify_expr_rhs (tree *expr_p,
- while (ret != GS_UNHANDLED)
- switch (TREE_CODE (*from_p))
- {
-- case INDIRECT_REF:
-- {
-- /* If we have code like
--
-- *(const A*)(A*)&x
--
-- where the type of "x" is a (possibly cv-qualified variant
-- of "A"), treat the entire expression as identical to "x".
-- This kind of code arises in C++ when an object is bound
-- to a const reference, and if "x" is a TARGET_EXPR we want
-- to take advantage of the optimization below. */
-- tree t = fold_indirect_ref (*from_p);
-- if (t != *from_p)
-- {
-- *from_p = t;
-- ret = GS_OK;
-- }
-- else
-- ret = GS_UNHANDLED;
-- break;
-- }
--
- case TARGET_EXPR:
- {
- /* If we are initializing something from a TARGET_EXPR, strip the
--- gcc/testsuite/g++.dg/opt/pr19317-3.C.jj 2005-03-03 13:19:28.896076462 +0100
+++ gcc/testsuite/g++.dg/opt/pr19317-3.C 2005-03-03 13:20:55.051743569 +0100
@@ -0,0 +1,37 @@
gcc4-pr20249.patch:
20050330-2.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+)
Index: gcc4-pr20249.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc4/FC-3/gcc4-pr20249.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc4-pr20249.patch 15 Mar 2005 21:14:21 -0000 1.1
+++ gcc4-pr20249.patch 6 Apr 2005 08:51:53 -0000 1.2
@@ -1,65 +1,9 @@
-2005-03-07 Zdenek Dvorak <dvorakz at suse.cz>
+2005-03-30 Jakub Jelinek <jakub at redhat.com>
- PR middle-end/20249
- * cse.c (insert_regs): Do not record equivalence of registers in
- different modes.
+ * gcc.dg/20050330-2.c: New test.
-2005-03-11 Jakub Jelinek <jakub at redhat.com>
-
- * gcc.dg/pr20249-1.c: New test.
- * gcc.dg/pr20249-2.c: New test.
-
---- gcc/cse.c.jj 2005-02-27 17:54:15.000000000 +0100
-+++ gcc/cse.c 2005-03-11 14:09:06.652737988 +0100
-@@ -1234,7 +1234,24 @@ insert_regs (rtx x, struct table_elt *cl
- if (REG_P (classp->exp)
- && GET_MODE (classp->exp) == GET_MODE (x))
- {
-- make_regs_eqv (regno, REGNO (classp->exp));
-+ unsigned c_regno = REGNO (classp->exp);
-+
-+ gcc_assert (REGNO_QTY_VALID_P (c_regno));
-+
-+ /* Suppose that 5 is hard reg and 100 and 101 are
-+ pseudos. Consider
-+
-+ (set (reg:si 100) (reg:si 5))
-+ (set (reg:si 5) (reg:si 100))
-+ (set (reg:di 101) (reg:di 5))
-+
-+ We would now set REG_QTY (101) = REG_QTY (5), but the
-+ entry for 5 is in SImode. When we use this later in
-+ copy propagation, we get the register in wrong mode. */
-+ if (qty_table[REG_QTY (c_regno)].mode != GET_MODE (x))
-+ continue;
-+
-+ make_regs_eqv (regno, c_regno);
- return 1;
- }
-
---- gcc/testsuite/gcc.dg/pr20249-1.c 2005-03-07 15:39:16.570545056 +0100
-+++ gcc/testsuite/gcc.dg/pr20249-1.c 2005-03-11 14:13:18.589822269 +0100
-@@ -0,0 +1,18 @@
-+/* PR middle-end/20249 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fprofile-arcs" } */
-+
-+extern int *g (int x, void* y);
-+extern void fg (long long x, int y);
-+
-+static void
-+ff (int y, long long z)
-+{
-+ fg (z, 1);
-+}
-+
-+void
-+f (void)
-+{
-+ g (42, ff);
-+}
---- gcc/testsuite/gcc.dg/pr20249-2.c 2005-03-07 15:39:16.570545056 +0100
-+++ gcc/testsuite/gcc.dg/pr20249-2.c 2005-03-11 14:14:09.187804704 +0100
+--- gcc/testsuite/gcc.dg/20050330-2.c 2005-03-07 15:39:16.570545056 +0100
++++ gcc/testsuite/gcc.dg/20050330-2.c 2005-03-11 14:14:09.187804704 +0100
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fprofile-generate" } */
Index: gcc4a.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc4/FC-3/gcc4a.spec,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- gcc4a.spec 15 Mar 2005 21:14:21 -0000 1.14
+++ gcc4a.spec 6 Apr 2005 08:51:53 -0000 1.15
@@ -1,6 +1,6 @@
-%define DATE 20050315
+%define DATE 20050406
%define gcc_version 4.0.0
-%define gcc_release 0.34.fc3
+%define gcc_release 0.41.fc3
%define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64
%define gxx_primary_version 3.4.3
@@ -56,16 +56,14 @@
Patch2: gcc4-ppc64-m32-m64-multilib-only.patch
Patch3: gcc4-ia64-libunwind.patch
Patch4: gcc4-gnuc-rh-release.patch
-Patch5: gcc4-pr16104.patch
-Patch6: gcc4-pr19769-workaround.patch
-Patch7: gcc4-java-nomulti.patch
-Patch8: gcc4-libjawt.patch
-Patch9: gcc4-c++-pr19317.patch
-Patch10: gcc4-rh150150.patch
-Patch11: gcc4-pr20126.patch
-Patch12: gcc4-pr20249.patch
-Patch13: gcc4-c++-pr20381.patch
-Patch14: gcc4-ada-makej.patch
+Patch5: gcc4-java-nomulti.patch
+Patch6: gcc4-c++-pr19317.patch
+Patch7: gcc4-pr20126.patch
+Patch8: gcc4-pr20249.patch
+Patch9: gcc4-g++-struct-layout.patch
+Patch10: gcc4-pr16104-test.patch
+
+Patch50: gcc4-c++-pr10606-revert.patch
%define _gnu %{nil}
%ifarch sparc
@@ -100,6 +98,7 @@
Group: Development/Languages
Requires: gcc4 = %{version}-%{release}
Requires: libgfortran = %{version}-%{release}
+BuildRequires: gmp-devel >= 4.1.2-8
Prereq: /sbin/install-info
Autoreq: true
Obsoletes: gcc35-gfortran
@@ -146,16 +145,14 @@
%patch2 -p0 -b .ppc64-m32-m64-multilib-only~
%patch3 -p0 -b .ia64-libunwind~
%patch4 -p0 -b .gnuc-rh-release~
-%patch5 -p0 -b .pr16104~
-%patch6 -p0 -b .pr19769-workaround~
-%patch7 -p0 -b .java-nomulti~
-%patch8 -p0 -b .libjawt~
-%patch9 -p0 -b .c++-pr19317~
-%patch10 -p0 -b .rh150150~
-%patch11 -p0 -b .pr20126~
-%patch12 -p0 -b .pr20249~
-%patch13 -p0 -b .c++-pr20381~
-%patch14 -p0 -b .ada-makej~
+%patch5 -p0 -b .java-nomulti~
+%patch6 -p0 -b .c++-pr19317~
+%patch7 -p0 -b .pr20126~
+%patch8 -p0 -b .pr20249~
+%patch9 -p0 -b .g++-struct-layout~
+%patch10 -p0 -b .pr16104-test~
+
+%patch50 -p0 -b .c++-pr10606-revert~
perl -pi -e 's/4\.0\.0/4.0.0/' gcc/version.c
perl -pi -e 's/"%{gcc_version}"/"%{gcc_version} \(release\)"/' gcc/version.c
@@ -279,6 +276,11 @@
# Copy various doc files here and there
cd ..
mkdir -p rpm.doc/gfortran
+mkdir -p rpm.doc/changelogs/{gcc/cp,libmudflap}
+
+for i in {gcc,gcc/cp,libmudflap}/ChangeLog*; do
+ cp -p $i rpm.doc/changelogs/$i
+done
(cd gcc/fortran; for i in ChangeLog* CONTRIB NEWS README TODO; do
cp -p $i ../../rpm.doc/gfortran/$i.f
@@ -286,15 +288,9 @@
(cd libgfortran; for i in ChangeLog*; do
cp -p $i ../rpm.doc/gfortran/$i.libgfortran
done)
-(cd boehm-gc; for i in ChangeLog*; do
- cp -p $i ../rpm.doc/boehm-gc/$i.gc
-done)
-(cd fastjar; for i in ChangeLog* README*; do
- cp -p $i ../rpm.doc/fastjar/$i.fastjar
-done)
-(cd libffi; for i in ChangeLog* README* LICENSE; do
- cp -p $i ../rpm.doc/libffi/$i.libffi
-done)
+
+rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
+find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
%install
rm -fr $RPM_BUILD_ROOT
@@ -479,7 +475,7 @@
exit 1;;
esac
done
-exec %{_prefix}/bin/gcc $fl ${1+"$@"}
+exec gcc $fl ${1+"$@"}
EOF
cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
#!/bin/sh
@@ -491,7 +487,7 @@
exit 1;;
esac
done
-exec %{_prefix}/bin/gcc $fl ${1+"$@"}
+exec gcc $fl ${1+"$@"}
EOF
chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
@@ -613,7 +609,7 @@
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so
%endif
#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/specs
-%doc gcc/README* gcc/*ChangeLog* gcc/COPYING gcc/COPYING.LIB
+%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING gcc/COPYING.LIB
%files c++
%defattr(-,root,root)
@@ -641,7 +637,7 @@
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
-%doc gcc/cp/ChangeLog*
+%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
%files gfortran
%defattr(-,root,root)
@@ -706,9 +702,51 @@
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so
%endif
-%doc libmudflap/ChangeLog*
+%doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog
+* Wed Apr 6 2005 Jakub Jelinek <jakub at redhat.com> 4.0.0-0.41.fc3
+- update from CVS
+ - PRs c++/19312, c++/20734, libgcj/20750, middle-end/19225, target/20342,
+ target/20421, target/20447, target/20625, target/20670, ada/19956,
+ c++/18644, c++/19159, c++/19199, c++/20679, debug/20505,
+ libfortran/20068, libfortran/20125, libfortran/20156,
+ libfortran/20471, libfortran/20755, libgcj/20727, libgcj/20761,
+ rtl-optimization/16104, rtl-optimization/20527, target/19537,
+ target/20446, tree-optimization/19903, c++/19406, c/17855, c/17913,
+ c/20368, c/20519, c/772, debug/19345, libfortran/20660, libgcj/20090,
+ libgcj/20526, middle-end/19454, middle-end/20177, middle-end/20635,
+ rtl-optimization/20600, target/20203, target/20611,
+ libfortran/15332, libfortran/19678, libfortran/19679,
+ libfortran/20163, middle-end/20263, middle-end/20491,
+ rtl-optimization/20249, target/15491, target/20617, tree-opt/19108,
+ tree-optimization/19108, middle-end/20622, c++/19769, c++/19980,
+ c++/20147, c++/20147, c++/20461, c++/20463, c++/20465, c++/20499,
+ c++/20536, libfortran/18025, libgcj/11085, libgcj/14892, libgcj/18083,
+ libgcj/2641, libgcj/9854, libstdc++/20352, libstdc++/20577,
+ middle-end/20539, middle-end/20557, other/20564, target/20166,
+ target/20561, rtl-optimization/20532, ada/18727, ada/19140, ada/19408,
+ ada/19900, ada/20255, ada/20344, c++/20240, c++/20333, fortran/18525,
+ fortran/18827, java/20522, libfortran/20257, libfortran/20480,
+ libgcj/20251, middle-end/15700, middle-end/20225, middle-end/20493,
+ target/18251, target/18380, target/18551, tree-optimization/17454,
+ tree-optimization/20474, preprocessor/19475, tree-optimization/20076
+ - fixed ABI bug where __attribute was ignored on certain struct
+ fields (Mark Mitchell, PR c++/20763)
+ - fix edge redirection (Alexandre Oliva, #152149,
+ PR tree-optimization/20640)
+ - fix PRE causing miscompilation of sudo (Daniel Berlin, #151632,
+ PR tree-optimization/20601)
+ - fix loop optimizer with loops that after tree optimization are entered
+ after the loop body (Alexandre Oliva, PR rtl-optimization/20290, #150020)
+ - fix handling of jump tables at the end of scope with -g1 (#151466)
+- add g++.dg/compat/struct-layout-1.exp compatibility tests
+- remove very old ChangeLogs from %%doc, bzip2 all ChangeLogs to
+ save space
+- BuildRequire gmp-devel with mpfr support
+- revert (just for gcc4-4*, not gcc-4*) PR libstdc++10606 patch, so that
+ GCC 3.4.3-RH libstdc++ can be used (#151462)
+
* Tue Mar 15 2005 Jakub Jelinek <jakub at redhat.com> 4.0.0-0.34.fc3
- update from gcc-4_0-branch
- PRs c++/20157, c++/20280, fortran/16907, fortran/20323, fortran/20361,
Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc4/FC-3/sources,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- sources 15 Mar 2005 21:14:21 -0000 1.9
+++ sources 6 Apr 2005 08:51:53 -0000 1.10
@@ -1 +1 @@
-60ef6c1253ff90cfb165ec69bac0c178 gcc-4.0.0-20050315.tar.bz2
+6b205368b124568380925d4c22a8cb01 gcc-4.0.0-20050406.tar.bz2
--- gcc4-ada-makej.patch DELETED ---
--- gcc4-c++-pr20381.patch DELETED ---
--- gcc4-libjawt.patch DELETED ---
--- gcc4-pr16104.patch DELETED ---
--- gcc4-pr19769-workaround.patch DELETED ---
--- gcc4-rh150150.patch DELETED ---
- Previous message (by thread): rpms/gcc/devel gcc4-pr16104-test.patch, NONE, 1.1 .cvsignore, 1.81, 1.82 gcc4-c++-pr19317.patch, 1.1, 1.2 gcc4.spec, 1.25, 1.26 sources, 1.82, 1.83 gcc4-builtin-apply.patch, 1.1, NONE gcc4-macrospace.patch, 1.1, NONE
- Next message (by thread): rpms/gcc4/FC-3 gcc4-c++-pr10606-revert.patch,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-cvs-commits
mailing list