rpms/gcc/devel gcc4-pr20961.patch, NONE, 1.1 gcc4-pr21085.patch, NONE, 1.1 gcc4-pr21329.patch, NONE, 1.1 gcc4-fortran-pr15080.patch, 1.1, 1.2 gcc4-java-awt-thread-init.patch, 1.1, 1.2 gcc4.spec, 1.34, 1.35 gcc4-chk-pr21265.patch, 1.1, NONE gcc4-pr21239.patch, 1.1, NONE gcc4-pr21265.patch, 1.1, NONE gcc4-pr21297.patch, 1.1, NONE
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Thu May 5 21:10:23 UTC 2005
- Previous message (by thread): rpms/chkconfig/devel .cvsignore, 1.21, 1.22 chkconfig.spec, 1.24, 1.25 sources, 1.22, 1.23
- Next message (by thread): rpms/gcc/devel .cvsignore,1.87,1.88 sources,1.89,1.90
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: jakub
Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv28051
Modified Files:
gcc4-fortran-pr15080.patch gcc4-java-awt-thread-init.patch
gcc4.spec
Added Files:
gcc4-pr20961.patch gcc4-pr21085.patch gcc4-pr21329.patch
Removed Files:
gcc4-chk-pr21265.patch gcc4-pr21239.patch gcc4-pr21265.patch
gcc4-pr21297.patch
Log Message:
4.0.0-4
gcc4-pr20961.patch:
testsuite/g++.dg/ext/weak3.C | 17 +++++++++++++++++
varasm.c | 16 +++++++++++++++-
2 files changed, 32 insertions(+), 1 deletion(-)
--- NEW FILE gcc4-pr20961.patch ---
2005-05-05 Jakub Jelinek <jakub at redhat.com>
PR c++/20961
* varasm.c (merge_weak): Remove NEWDECL from WEAK_DECLS chain
if both NEWDECL and OLDDECL are already weak.
* g++.dg/ext/weak3.C: New test.
--- gcc/varasm.c.jj 2005-04-29 09:18:11.000000000 +0200
+++ gcc/varasm.c 2005-05-05 20:07:37.000000000 +0200
@@ -4303,7 +4303,21 @@ void
merge_weak (tree newdecl, tree olddecl)
{
if (DECL_WEAK (newdecl) == DECL_WEAK (olddecl))
- return;
+ {
+ if (DECL_WEAK (newdecl) && SUPPORTS_WEAK)
+ {
+ tree *pwd;
+ /* We put the NEWDECL on the weak_decls list at some point
+ and OLDDECL as well. Keep just OLDDECL on the list. */
+ for (pwd = &weak_decls; *pwd; pwd = &TREE_CHAIN (*pwd))
+ if (TREE_VALUE (*pwd) == newdecl)
+ {
+ *pwd = TREE_CHAIN (*pwd);
+ break;
+ }
+ }
+ return;
+ }
if (DECL_WEAK (newdecl))
{
--- gcc/testsuite/g++.dg/ext/weak3.C.jj 2005-05-05 20:10:34.000000000 +0200
+++ gcc/testsuite/g++.dg/ext/weak3.C 2005-05-05 20:12:24.000000000 +0200
@@ -0,0 +1,17 @@
+// PR c++/20961
+// Test for #pragma weak and __attribute__((weak)) being used together.
+// { dg-do compile }
+// { dg-require-weak "" }
+// { dg-options "" }
+
+// { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?_Z3foov" } }
+
+int foo ();
+#pragma weak foo
+
+int
+__attribute__((weak))
+foo ()
+{
+ return 0;
+}
gcc4-pr21085.patch:
fold-const.c | 1 +
testsuite/gcc.dg/pr21085.c | 9 +++++++++
2 files changed, 10 insertions(+)
--- NEW FILE gcc4-pr21085.patch ---
2005-04-18 James A. Morrison <phython at gcc.gnu.org>
PR tree-optimization/21085
* fold-const (fold_binary): Don't change X % -C to X % C if C has
overflowed.
* gcc.dg/pr21085.c: New test.
--- gcc/fold-const.c 18 Apr 2005 15:18:07 -0000 1.563
+++ gcc/fold-const.c 19 Apr 2005 02:35:52 -0000 1.564
@@ -8504,6 +8504,7 @@ fold_binary (enum tree_code code, tree t
if (code == TRUNC_MOD_EXPR
&& !TYPE_UNSIGNED (type)
&& TREE_CODE (arg1) == INTEGER_CST
+ && !TREE_CONSTANT_OVERFLOW (arg1)
&& TREE_INT_CST_HIGH (arg1) < 0
&& !flag_trapv
/* Avoid this transformation if C is INT_MIN, i.e. C == -C. */
--- gcc/testsuite/gcc.dg/pr21085.c 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/pr21085.c 19 Apr 2005 02:36:04 -0000 1.1
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* This used to cause excessive use, or a stack overflow, depending on which
+ came first. */
+void foo (void)
+{
+ int maxstringlen = 1;
+ int limit = 0, maxblock = 0, maxblockrem = 0;
+ maxblockrem = (maxstringlen) % (2147483647 + 1); /* { dg-warning "overflow" } */
+}
gcc4-pr21329.patch:
i386.c | 58 +++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 43 insertions(+), 15 deletions(-)
--- NEW FILE gcc4-pr21329.patch ---
2005-05-05 Denis Vlasenko <vda at port.imtp.ilyichevsk.odessa.ua>
Jakub Jelinek <jakub at redhat.com>
PR target/21329
* config/i386/i386.c (ix86_expand_movmem): Don't use rep; movsb
for -Os if (movsl;)*(movsw;)?(movsb;)? sequence is shorter.
Don't use rep; movs{l,q} if the repetition count is really small,
instead use a sequence of movs{l,q} instructions.
--- gcc/config/i386/i386.c.jj 2005-05-03 18:19:45.000000000 +0200
+++ gcc/config/i386/i386.c 2005-05-05 15:36:58.000000000 +0200
@@ -11285,9 +11285,20 @@ ix86_expand_movmem (rtx dst, rtx src, rt
src = replace_equiv_address_nv (src, srcreg);
/* When optimizing for size emit simple rep ; movsb instruction for
- counts not divisible by 4. */
+ counts not divisible by 4, except when (movsl;)*(movsw;)?(movsb;)?
+ sequence is shorter than mov{b,l} $count, %{ecx,cl}; rep; movsb.
+ Sice of (movsl;)*(movsw;)?(movsb;)? sequence is
+ count / 4 + (count & 3), the other sequence is either 4 or 7 bytes,
+ but we don't know whether upper 24 (resp. 56) bits of %ecx will be
+ known to be zero or not. The rep; movsb sequence causes higher
+ register preasure though, so take that into account. */
- if ((!optimize || optimize_size) && (count == 0 || (count & 0x03)))
+ if ((!optimize || optimize_size)
+ && (count == 0
+ || ((count & 0x03)
+ && (!optimize_size
+ || count > 5 * 4
+ || (count & 3) + count / 4 > 6))))
{
emit_insn (gen_cld ());
countreg = ix86_zero_extend_to_Pmode (count_exp);
@@ -11313,19 +11324,36 @@ ix86_expand_movmem (rtx dst, rtx src, rt
emit_insn (gen_cld ());
if (count & ~(size - 1))
{
- countreg = copy_to_mode_reg (counter_mode,
- GEN_INT ((count >> (size == 4 ? 2 : 3))
- & (TARGET_64BIT ? -1 : 0x3fffffff)));
- countreg = ix86_zero_extend_to_Pmode (countreg);
-
- destexp = gen_rtx_ASHIFT (Pmode, countreg,
- GEN_INT (size == 4 ? 2 : 3));
- srcexp = gen_rtx_PLUS (Pmode, destexp, srcreg);
- destexp = gen_rtx_PLUS (Pmode, destexp, destreg);
-
- emit_insn (gen_rep_mov (destreg, dst, srcreg, src,
- countreg, destexp, srcexp));
- offset = count & ~(size - 1);
+ if ((TARGET_SINGLE_STRINGOP || optimize_size) && count < 5 * 4)
+ {
+ enum machine_mode movs_mode = size == 4 ? SImode : DImode;
+
+ while (offset < (count & ~(size - 1)))
+ {
+ srcmem = adjust_automodify_address_nv (src, movs_mode,
+ srcreg, offset);
+ dstmem = adjust_automodify_address_nv (dst, movs_mode,
+ destreg, offset);
+ emit_insn (gen_strmov (destreg, dstmem, srcreg, srcmem));
+ offset += size;
+ }
+ }
+ else
+ {
+ countreg = GEN_INT ((count >> (size == 4 ? 2 : 3))
+ & (TARGET_64BIT ? -1 : 0x3fffffff));
+ countreg = copy_to_mode_reg (counter_mode, countreg);
+ countreg = ix86_zero_extend_to_Pmode (countreg);
+
+ destexp = gen_rtx_ASHIFT (Pmode, countreg,
+ GEN_INT (size == 4 ? 2 : 3));
+ srcexp = gen_rtx_PLUS (Pmode, destexp, srcreg);
+ destexp = gen_rtx_PLUS (Pmode, destexp, destreg);
+
+ emit_insn (gen_rep_mov (destreg, dst, srcreg, src,
+ countreg, destexp, srcexp));
+ offset = count & ~(size - 1);
+ }
}
if (size == 8 && (count & 0x04))
{
gcc4-fortran-pr15080.patch:
trans-stmt.c | 111 +++++++++++++++++++++++++++--------------------------------
1 files changed, 52 insertions(+), 59 deletions(-)
Index: gcc4-fortran-pr15080.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4-fortran-pr15080.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc4-fortran-pr15080.patch 3 May 2005 23:37:28 -0000 1.1
+++ gcc4-fortran-pr15080.patch 5 May 2005 21:10:21 -0000 1.2
@@ -43,7 +43,7 @@
/* Increment the count1. */
- tmp = fold (build2 (PLUS_EXPR, TREE_TYPE (count1), count1, size));
+ tmp = fold (build2 (PLUS_EXPR, TREE_TYPE (count1), count1,
-+ gfc_index_one_node));
++ gfc_index_one_node));
gfc_add_modify_expr (&block, count1, tmp);
+
tmp = gfc_finish_block (&block);
@@ -153,7 +153,15 @@
tmp = build3_v (COND_EXPR, wheremaskexpr, tmp, build_empty_stmt ());
}
-@@ -1721,10 +1709,10 @@ generate_loop_for_rhs_to_temp (gfc_expr
+@@ -1718,13 +1706,18 @@ generate_loop_for_rhs_to_temp (gfc_expr
+ if (lss == gfc_ss_terminator)
+ {
+ gfc_add_block_to_block (&block, &body1);
++
++ /* Increment count1. */
++ tmp = fold (build2 (PLUS_EXPR, TREE_TYPE (count1), count1,
++ gfc_index_one_node));
++ gfc_add_modify_expr (&block, count1, tmp);
}
else
{
@@ -167,7 +175,7 @@
/* Increment count3. */
if (count3)
-@@ -1742,11 +1730,8 @@ generate_loop_for_rhs_to_temp (gfc_expr
+@@ -1742,11 +1735,8 @@ generate_loop_for_rhs_to_temp (gfc_expr
gfc_cleanup_loop (&loop);
/* TODO: Reuse lss and rss when copying temp->lhs. Need to be careful
@@ -180,7 +188,7 @@
tmp = gfc_finish_block (&block);
return tmp;
-@@ -1824,7 +1809,7 @@ compute_inner_temp_size (gfc_expr *expr1
+@@ -1824,7 +1814,7 @@ compute_inner_temp_size (gfc_expr *expr1
static tree
compute_overall_iter_number (forall_info *nested_forall_info, tree inner_size,
@@ -189,7 +197,7 @@
{
tree tmp, number;
stmtblock_t body;
-@@ -1834,6 +1819,8 @@ compute_overall_iter_number (forall_info
+@@ -1834,6 +1824,8 @@ compute_overall_iter_number (forall_info
gfc_add_modify_expr (block, number, gfc_index_zero_node);
gfc_start_block (&body);
@@ -198,7 +206,7 @@
if (nested_forall_info)
tmp = build2 (PLUS_EXPR, gfc_array_index_type, number,
inner_size);
-@@ -1858,8 +1845,8 @@ compute_overall_iter_number (forall_info
+@@ -1858,8 +1850,8 @@ compute_overall_iter_number (forall_info
static tree
allocate_temp_for_forall_nest (forall_info * nested_forall_info, tree type,
@@ -209,7 +217,7 @@
{
tree unit;
tree temp1;
-@@ -1867,7 +1854,8 @@ allocate_temp_for_forall_nest (forall_in
+@@ -1867,7 +1859,8 @@ allocate_temp_for_forall_nest (forall_in
tree bytesize, size;
/* Calculate the total size of temporary needed in forall construct. */
@@ -219,7 +227,7 @@
unit = TYPE_SIZE_UNIT (type);
bytesize = fold (build2 (MULT_EXPR, gfc_array_index_type, size, unit));
-@@ -1893,17 +1881,16 @@ gfc_trans_assign_need_temp (gfc_expr * e
+@@ -1893,17 +1886,16 @@ gfc_trans_assign_need_temp (gfc_expr * e
tree type;
tree inner_size;
gfc_ss *lss, *rss;
@@ -241,7 +249,7 @@
/* Count is the wheremask index. */
if (wheremask)
-@@ -1919,15 +1906,17 @@ gfc_trans_assign_need_temp (gfc_expr * e
+@@ -1919,15 +1911,17 @@ gfc_trans_assign_need_temp (gfc_expr * e
/* Calculate the size of temporary needed in the assignment. Return loop, lss
and rss which are used in function generate_loop_for_rhs_to_temp(). */
@@ -262,7 +270,7 @@
/* Initialize the maskindexes. */
forall_tmp = nested_forall_info;
-@@ -1941,8 +1930,8 @@ gfc_trans_assign_need_temp (gfc_expr * e
+@@ -1941,8 +1935,8 @@ gfc_trans_assign_need_temp (gfc_expr * e
}
/* Generate codes to copy rhs to the temporary . */
@@ -273,7 +281,7 @@
/* Generate body and loops according to the information in
nested_forall_info. */
-@@ -1968,8 +1957,7 @@ gfc_trans_assign_need_temp (gfc_expr * e
+@@ -1968,8 +1962,7 @@ gfc_trans_assign_need_temp (gfc_expr * e
gfc_add_modify_expr (block, count, gfc_index_zero_node);
/* Generate codes to copy the temporary to lhs. */
@@ -283,7 +291,7 @@
/* Generate body and loops according to the information in
nested_forall_info. */
-@@ -2022,8 +2010,8 @@ gfc_trans_pointer_assign_need_temp (gfc_
+@@ -2022,8 +2015,8 @@ gfc_trans_pointer_assign_need_temp (gfc_
/* Allocate temporary for nested forall construct according to the
information in nested_forall_info and inner_size. */
@@ -294,7 +302,7 @@
gfc_start_block (&body);
gfc_init_se (&lse, NULL);
lse.expr = gfc_build_array_ref (tmp1, count);
-@@ -2112,7 +2100,7 @@ gfc_trans_pointer_assign_need_temp (gfc_
+@@ -2112,7 +2105,7 @@ gfc_trans_pointer_assign_need_temp (gfc_
/* Allocate temporary for nested forall construct. */
tmp1 = allocate_temp_for_forall_nest (nested_forall_info, parmtype,
@@ -303,7 +311,7 @@
gfc_start_block (&body);
gfc_init_se (&lse, NULL);
lse.expr = gfc_build_array_ref (tmp1, count);
-@@ -2582,7 +2570,7 @@ gfc_evaluate_where_mask (gfc_expr * me,
+@@ -2582,7 +2575,7 @@ gfc_evaluate_where_mask (gfc_expr * me,
/* Allocate temporary for where mask. */
tmp = allocate_temp_for_forall_nest (nested_forall_info, boolean_type_node,
@@ -312,7 +320,7 @@
/* Record the temporary address in order to free it later. */
if (ptemp1)
{
-@@ -2595,7 +2583,7 @@ gfc_evaluate_where_mask (gfc_expr * me,
+@@ -2595,7 +2588,7 @@ gfc_evaluate_where_mask (gfc_expr * me,
/* Allocate temporary for !mask. */
ntmp = allocate_temp_for_forall_nest (nested_forall_info, boolean_type_node,
gcc4-java-awt-thread-init.patch:
gnu_java_awt_peer_gtk_GtkToolkit.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
Index: gcc4-java-awt-thread-init.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4-java-awt-thread-init.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc4-java-awt-thread-init.patch 28 Apr 2005 17:32:52 -0000 1.1
+++ gcc4-java-awt-thread-init.patch 5 May 2005 21:10:21 -0000 1.2
@@ -1,13 +1,17 @@
---- libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c.jj 2005-04-08 11:59:39.223115951 -0400
-+++ libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c 2005-04-08 12:00:19.634845783 -0400
-@@ -275,10 +275,13 @@
+2005-05-03 Thomas Fitzsimmons <fitzsim at redhat.com>
+
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (init_glib_threads): Check if threading system is already
+ initialized.
+
+--- libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c 22 Feb 2005 06:13:03 -0000 1.5
++++ libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c 3 May 2005 23:53:27 -0000 1.6
+@@ -275,10 +275,22 @@ init_glib_threads(JNIEnv *env, jint port
}
(*env)->GetJavaVM( env, &the_vm );
- if (portableNativeSync)
- g_thread_init ( &portable_native_sync_jni_functions );
-- else
-- g_thread_init ( NULL );
+ if (!g_thread_supported ())
+ {
+ if (portableNativeSync)
@@ -15,6 +19,16 @@
+ else
+ g_thread_init ( NULL );
+ }
+ else
+- g_thread_init ( NULL );
++ {
++ /* Warn if portable native sync is desired but the threading
++ system is already initialized. In that case we can't
++ override the threading implementation with our portable
++ native sync functions. */
++ if (portableNativeSync)
++ g_printerr ("peer warning: portable native sync disabled.\n");
++ }
/* Debugging progress message; uncomment if needed: */
/* printf("called gthread init\n"); */
Index: gcc4.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4.spec,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- gcc4.spec 3 May 2005 23:37:28 -0000 1.34
+++ gcc4.spec 5 May 2005 21:10:21 -0000 1.35
@@ -1,6 +1,6 @@
-%define DATE 20050504
+%define DATE 20050505
%define gcc_version 4.0.0
-%define gcc_release 3
+%define gcc_release 4
%define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} alpha ia64 x86_64 s390
@@ -84,14 +84,13 @@
Patch12: gcc4-libstdc++-mt-alloc.patch
Patch13: gcc4-struct-layout.patch
Patch14: gcc4-ppc32-hwint32.patch
-Patch15: gcc4-pr21239.patch
-Patch16: gcc4-pr21297.patch
+Patch15: gcc4-pr20961.patch
+Patch16: gcc4-pr21085.patch
Patch17: gcc4-gfortran-namelist.patch
Patch18: gcc4-java-awt-thread-init.patch
Patch19: gcc4-java-x509-extension.patch
Patch20: gcc4-pr21330.patch
-Patch21: gcc4-pr21265.patch
-Patch22: gcc4-chk-pr21265.patch
+Patch21: gcc4-pr21329.patch
%define _gnu %{nil}
%ifarch sparc
@@ -415,14 +414,13 @@
%patch12 -p0 -b .libstdc++-mt-alloc~
%patch13 -p0 -b .struct-layout~
#%patch14 -p0 -b .ppc32-hwint32~
-%patch15 -p0 -b .pr21239~
-%patch16 -p0 -b .pr21297~
+%patch15 -p0 -b .pr20961~
+%patch16 -p0 -b .pr21085~
%patch17 -p0 -b .gfortran-namelist~
%patch18 -p0 -b .java-awt-thread-init~
%patch19 -p0 -b .java-x509-extension~
%patch20 -p0 -b .pr21330~
-%patch21 -p0 -b .pr21265~
-%patch22 -p0 -b .chk-pr21265~
+%patch21 -p0 -b .pr21329~
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
@@ -1417,6 +1415,13 @@
%endif
%changelog
+* Thu May 5 2005 Jakub Jelinek <jakub at redhat.com> 4.0.0-4
+- update from CVS
+ - PRs libgcj/21372, target/21284
+- fix fold ICE (James A. Morrison, PR tree-optimization/21085)
+- fix weak decl merging (PR c++/20961)
+- optimize i386/x86-64 movmem sequences (PR target/21329)
+
* Wed May 4 2005 Jakub Jelinek <jakub at redhat.com> 4.0.0-3
- update from CVS
- PRs middle-end/19985, bootstrap/20633, c++/15875, c++/19542, c/15698,
--- gcc4-chk-pr21265.patch DELETED ---
--- gcc4-pr21239.patch DELETED ---
--- gcc4-pr21265.patch DELETED ---
--- gcc4-pr21297.patch DELETED ---
- Previous message (by thread): rpms/chkconfig/devel .cvsignore, 1.21, 1.22 chkconfig.spec, 1.24, 1.25 sources, 1.22, 1.23
- Next message (by thread): rpms/gcc/devel .cvsignore,1.87,1.88 sources,1.89,1.90
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-cvs-commits
mailing list