public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/gcc] rhel-f41-base: 4.3.0-0.4
Date: Mon, 29 Jun 2026 12:23:34 GMT [thread overview]
Message-ID: <178273581436.1.4291256406749802154.rpms-gcc-26315c4d94e9@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gcc
Branch : rhel-f41-base
Commit : 26315c4d94e9b39d25d3a3dd010316fedb0c4b31
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date : 2007-12-20T17:17:48+00:00
Stats : +517/-438 in 14 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/26315c4d94e9b39d25d3a3dd010316fedb0c4b31?branch=rhel-f41-base
Log:
4.3.0-0.4
---
diff --git a/.cvsignore b/.cvsignore
index 7e16d86..c425e14 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
-gcc-4.3.0-20071212.tar.bz2
+gcc-4.3.0-20071220.tar.bz2
fastjar-0.95.tar.gz
diff --git a/gcc43-ada-profiledbootstrap.patch b/gcc43-ada-profiledbootstrap.patch
deleted file mode 100644
index d7ff04e..0000000
--- a/gcc43-ada-profiledbootstrap.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- gcc/ada/Make-lang.in.jj 2007-12-07 14:47:58.000000000 +0100
-+++ gcc/ada/Make-lang.in 2007-12-14 13:20:46.000000000 +0100
-@@ -286,11 +286,11 @@ TARGET_ADA_SRCS =
- # Since the RTL should be built with the latest compiler, remove the
- # stamp target in the parent directory whenever gnat1 is rebuilt
- gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBDEPS)
-- $(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS)
-+ $(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(ALL_CFLAGS) $(LIBS) $(SYSLIBS)
- $(RM) stamp-gnatlib2 stamp-tools
-
- gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS)
-- $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS)
-+ $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(ALL_CFLAGS) $(LIBS) $(SYSLIBS)
-
- # use cross-gcc
- gnat-cross: force
diff --git a/gcc43-libjava-gcjpath.patch b/gcc43-libjava-gcjpath.patch
deleted file mode 100644
index 461cc4b..0000000
--- a/gcc43-libjava-gcjpath.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- libjava/classpath/configure.ac (revision 130691)
-+++ libjava/classpath/configure.ac (working copy)
-@@ -294,14 +294,14 @@ CLASSPATH_TOOLEXECLIBDIR
- dnl -----------------------------------------------------------
- dnl Sets the native libraries installation dir
- dnl -----------------------------------------------------------
--dnl GCJ LOCAL: default to ${toolexeclibdir}/gcj-${gcc_version}-${libgcj_soversion}
-+dnl GCJ LOCAL: default to ${toolexeclibdir}/gcj-${gcc_version}
- AC_ARG_WITH([native-libdir],
- [AS_HELP_STRING(--with-native-libdir,sets the installation directory for native libraries [default='${libdir}/${PACKAGE}'])],
- [
- nativeexeclibdir=${withval}
- ],
- [
-- nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[[^#]].*:/ { print $1 }' ${srcdir}/../libtool-version`
-+ nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`
- ])
-
- AC_SUBST(nativeexeclibdir)
---- libjava/classpath/configure (revision 130691)
-+++ libjava/classpath/configure (working copy)
-@@ -4771,7 +4771,7 @@ if test "${with_native_libdir+set}" = se
-
- else
-
-- nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[^#].*:/ { print $1 }' ${srcdir}/../libtool-version`
-+ nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`
-
- fi;
-
diff --git a/gcc43-libjava-test.patch b/gcc43-libjava-test.patch
deleted file mode 100644
index 957796d..0000000
--- a/gcc43-libjava-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- libjava/testsuite/Makefile.am 2007-02-07 13:07:16.000000000 +0100
-+++ libjava/testsuite/Makefile.am 2007-12-08 10:58:02.000000000 +0100
-@@ -43,7 +43,7 @@ if JAVA_MAINTAINER_MODE
- testdep="libjava.loader/MyLoader.java";; \
- libjava.jni/register2.java) \
- ;; \
-- libjava.jni/*.java) \
-+ libjava.jni/*.java|libjava.jvmti/interp/*.java) \
- genheader=-jni;; \
- libjava.jvmti/*.java|libjava.cni/*.java) \
- genheader=-cni;; \
---- libjava/testsuite/Makefile.in 2007-09-04 23:09:37.000000000 +0200
-+++ libjava/testsuite/Makefile.in 2007-12-08 10:58:25.000000000 +0100
-@@ -558,7 +558,7 @@ compile-tests:
- @JAVA_MAINTAINER_MODE_TRUE@ testdep="libjava.loader/MyLoader.java";; \
- @JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/register2.java) \
- @JAVA_MAINTAINER_MODE_TRUE@ ;; \
--@JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/*.java) \
-+@JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/*.java|libjava.jvmti/interp/*.java) \
- @JAVA_MAINTAINER_MODE_TRUE@ genheader=-jni;; \
- @JAVA_MAINTAINER_MODE_TRUE@ libjava.jvmti/*.java|libjava.cni/*.java) \
- @JAVA_MAINTAINER_MODE_TRUE@ genheader=-cni;; \
diff --git a/gcc43-pr29484.patch b/gcc43-pr29484.patch
new file mode 100644
index 0000000..09a371e
--- /dev/null
+++ b/gcc43-pr29484.patch
@@ -0,0 +1,159 @@
+2007-12-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/29484
+ * tree-inline.c (inline_forbidden_p_2): New function.
+ (inline_forbidden_p): Disallow inlining if some static var
+ has an address of a local LABEL_DECL in its initializer.
+
+ * gcc.c-torture/execute/20071220-1.c: New test.
+ * gcc.c-torture/execute/20071220-2.c: New test.
+
+--- gcc/tree-inline.c.jj 2007-12-04 16:39:22.000000000 +0100
++++ gcc/tree-inline.c 2007-12-20 13:46:18.000000000 +0100
+@@ -1951,6 +1951,27 @@ inline_forbidden_p_1 (tree *nodep, int *
+ return NULL_TREE;
+ }
+
++static tree
++inline_forbidden_p_2 (tree *nodep, int *walk_subtrees,
++ void *fnp)
++{
++ tree node = *nodep;
++ tree fn = (tree) fnp;
++
++ if (TREE_CODE (node) == LABEL_DECL && DECL_CONTEXT (node) == fn)
++ {
++ inline_forbidden_reason
++ = G_("function %q+F can never be inlined "
++ "because it saves address of local label in a static variable");
++ return node;
++ }
++
++ if (TYPE_P (node))
++ *walk_subtrees = 0;
++
++ return NULL_TREE;
++}
++
+ /* Return subexpression representing possible alloca call, if any. */
+ static tree
+ inline_forbidden_p (tree fndecl)
+@@ -1959,16 +1980,31 @@ inline_forbidden_p (tree fndecl)
+ block_stmt_iterator bsi;
+ basic_block bb;
+ tree ret = NULL_TREE;
++ struct function *fun = DECL_STRUCT_FUNCTION (fndecl);
++ tree step;
+
+- FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (fndecl))
++ FOR_EACH_BB_FN (bb, fun)
+ for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
+ {
+ ret = walk_tree_without_duplicates (bsi_stmt_ptr (bsi),
+- inline_forbidden_p_1, fndecl);
++ inline_forbidden_p_1, fndecl);
+ if (ret)
+ goto egress;
+ }
+
++ for (step = fun->unexpanded_var_list; step; step = TREE_CHAIN (step))
++ {
++ tree decl = TREE_VALUE (step);
++ if (TREE_CODE (decl) == VAR_DECL
++ && TREE_STATIC (decl)
++ && !DECL_EXTERNAL (decl)
++ && DECL_INITIAL (decl))
++ ret = walk_tree_without_duplicates (&DECL_INITIAL (decl),
++ inline_forbidden_p_2, fndecl);
++ if (ret)
++ goto egress;
++ }
++
+ egress:
+ input_location = saved_loc;
+ return ret;
+--- gcc/testsuite/gcc.c-torture/execute/20071220-1.c.jj 2007-12-20 14:29:04.000000000 +0100
++++ gcc/testsuite/gcc.c-torture/execute/20071220-1.c 2007-12-20 14:28:12.000000000 +0100
+@@ -0,0 +1,40 @@
++/* PR tree-optimization/29484 */
++
++extern void abort (void);
++
++void *__attribute__((noinline))
++baz (void **lab)
++{
++ asm volatile ("" : "+r" (lab));
++ return *lab;
++}
++
++static inline
++int bar (void)
++{
++ static void *b[] = { &&addr };
++ void *p = baz (b);
++ goto *p;
++addr:
++ return 17;
++}
++
++int __attribute__((noinline))
++f1 (void)
++{
++ return bar ();
++}
++
++int __attribute__((noinline))
++f2 (void)
++{
++ return bar ();
++}
++
++int
++main (void)
++{
++ if (f1 () != 17 || f1 () != 17 || f2 () != 17 || f2 () != 17)
++ abort ();
++ return 0;
++}
+--- gcc/testsuite/gcc.c-torture/execute/20071220-2.c.jj 2007-12-20 14:29:13.000000000 +0100
++++ gcc/testsuite/gcc.c-torture/execute/20071220-2.c 2007-12-20 14:28:30.000000000 +0100
+@@ -0,0 +1,39 @@
++/* PR tree-optimization/29484 */
++
++extern void abort (void);
++
++void *__attribute__((noinline))
++baz (void **lab)
++{
++ asm volatile ("" : "+r" (lab));
++ return *lab;
++}
++
++static inline
++int bar (void)
++{
++ static void *b[] = { &&addr };
++ baz (b);
++addr:
++ return 17;
++}
++
++int __attribute__((noinline))
++f1 (void)
++{
++ return bar ();
++}
++
++int __attribute__((noinline))
++f2 (void)
++{
++ return bar ();
++}
++
++int
++main (void)
++{
++ if (f1 () != 17 || f1 () != 17 || f2 () != 17 || f2 () != 17)
++ abort ();
++ return 0;
++}
diff --git a/gcc43-pr29978.patch b/gcc43-pr29978.patch
deleted file mode 100644
index 05cef20..0000000
--- a/gcc43-pr29978.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-2007-12-14 Jakub Jelinek <jakub@redhat.com>
-
- PR target/29978
- * config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
- DImode comparisons against constant with all 1's in the lower word.
-
- * gcc.target/i386/pr29978.c: New test.
-
---- gcc/config/i386/i386.c.jj 2007-12-14 00:26:23.000000000 +0100
-+++ gcc/config/i386/i386.c 2007-12-14 14:14:51.000000000 +0100
-@@ -12093,16 +12093,28 @@ ix86_expand_branch (enum rtx_code code,
-
- /* Otherwise, if we are doing less-than or greater-or-equal-than,
- op1 is a constant and the low word is zero, then we can just
-- examine the high word. */
-+ examine the high word. Similarly for low word -1 and
-+ less-or-equal-than or greater-than. */
-
-- if (CONST_INT_P (hi[1]) && lo[1] == const0_rtx)
-+ if (CONST_INT_P (hi[1]))
- switch (code)
- {
- case LT: case LTU: case GE: case GEU:
-- ix86_compare_op0 = hi[0];
-- ix86_compare_op1 = hi[1];
-- ix86_expand_branch (code, label);
-- return;
-+ if (lo[1] == const0_rtx)
-+ {
-+ ix86_compare_op0 = hi[0];
-+ ix86_compare_op1 = hi[1];
-+ ix86_expand_branch (code, label);
-+ return;
-+ }
-+ case LE: case LEU: case GT: case GTU:
-+ if (lo[1] == constm1_rtx)
-+ {
-+ ix86_compare_op0 = hi[0];
-+ ix86_compare_op1 = hi[1];
-+ ix86_expand_branch (code, label);
-+ return;
-+ }
- default:
- break;
- }
---- gcc/testsuite/gcc.target/i386/pr29978.c.jj 2007-12-14 14:26:17.000000000 +0100
-+++ gcc/testsuite/gcc.target/i386/pr29978.c 2007-12-14 14:26:04.000000000 +0100
-@@ -0,0 +1,16 @@
-+/* PR target/29978 */
-+/* { dg-do compile } */
-+/* { dg-options "-Os" } */
-+
-+void g ();
-+
-+void
-+f (long long v)
-+{
-+ if (v > 0xfffffffffLL)
-+ g ();
-+ g ();
-+}
-+
-+/* Verify there are no redundant jumps jl .L2; jle .L2 */
-+/* { dg-final { scan-assembler-not "jl\[^e\]*\\.L" { target ilp32 } } } */
diff --git a/gcc43-pr32636.patch b/gcc43-pr32636.patch
deleted file mode 100644
index 4222ddf..0000000
--- a/gcc43-pr32636.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-2007-12-11 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/32636
- * df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
- regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
-
---- gcc/df-scan.c.jj 2007-10-26 13:45:44.000000000 +0200
-+++ gcc/df-scan.c 2007-12-11 22:24:21.000000000 +0100
-@@ -3530,12 +3530,12 @@ df_get_entry_block_def_set (bitmap entry
- bitmap_set_bit (entry_block_defs, STATIC_CHAIN_REGNUM);
- #endif
- #endif
--
-- r = targetm.calls.struct_value_rtx (current_function_decl, true);
-- if (r && REG_P (r))
-- bitmap_set_bit (entry_block_defs, REGNO (r));
- }
-
-+ r = targetm.calls.struct_value_rtx (current_function_decl, true);
-+ if (r && REG_P (r))
-+ bitmap_set_bit (entry_block_defs, REGNO (r));
-+
- if ((!reload_completed) || frame_pointer_needed)
- {
- /* Any reference to any pseudo before reload is a potential
diff --git a/gcc43-pr34003.patch b/gcc43-pr34003.patch
deleted file mode 100644
index 25b283b..0000000
--- a/gcc43-pr34003.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-2007-12-13 Jakub Jelinek <jakub@redhat.com>
-
- PR bootstrap/34003
- * c-decl.c (merge_decls): Copy RTL from olddecl to newdecl.
- * config/pa/pa.c (pa_encode_section_info): If !first, preserve
- SYMBOL_FLAG_REFERENCED flag.
-
- * gcc.dg/pr34003-1.c: New test.
- * gcc.dg/pr34003-2.c: New.
-
---- gcc/c-decl.c.jj 2007-11-26 22:14:08.000000000 +0100
-+++ gcc/c-decl.c 2007-12-13 20:11:33.000000000 +0100
-@@ -1670,6 +1670,9 @@ merge_decls (tree newdecl, tree olddecl,
- }
- }
-
-+ /* Keep the old rtl since we can safely use it. */
-+ if (HAS_RTL_P (olddecl))
-+ COPY_DECL_RTL (olddecl, newdecl);
-
- /* Merge the type qualifiers. */
- if (TREE_READONLY (newdecl))
---- gcc/config/pa/pa.c.jj 2007-12-13 18:56:21.000000000 +0100
-+++ gcc/config/pa/pa.c 2007-12-13 20:32:04.000000000 +0100
-@@ -7834,6 +7834,12 @@ hppa_encode_label (rtx sym)
- static void
- pa_encode_section_info (tree decl, rtx rtl, int first)
- {
-+ int old_referenced = 0;
-+
-+ if (!first && MEM_P (rtl) && GET_CODE (XEXP (rtl, 0)) == SYMBOL_REF)
-+ old_referenced
-+ = SYMBOL_REF_FLAGS (XEXP (rtl, 0)) & SYMBOL_FLAG_REFERENCED;
-+
- default_encode_section_info (decl, rtl, first);
-
- if (first && TEXT_SPACE_P (decl))
-@@ -7842,6 +7848,8 @@ pa_encode_section_info (tree decl, rtx r
- if (TREE_CODE (decl) == FUNCTION_DECL)
- hppa_encode_label (XEXP (rtl, 0));
- }
-+ else if (old_referenced)
-+ SYMBOL_REF_FLAGS (XEXP (rtl, 0)) |= old_referenced;
- }
-
- /* This is sort of inverse to pa_encode_section_info. */
---- gcc/testsuite/gcc.dg/pr34003-1.c.jj 2007-12-13 21:07:51.000000000 +0100
-+++ gcc/testsuite/gcc.dg/pr34003-1.c 2007-12-13 21:07:15.000000000 +0100
-@@ -0,0 +1,8 @@
-+/* PR bootstrap/34003 */
-+/* { dg-do link } */
-+/* { dg-options "-O0" } */
-+/* { dg-additional-sources "pr34003-2.c" } */
-+
-+extern void foo (void);
-+int bar (void) { foo (); return 1; }
-+extern void foo (void);
---- gcc/testsuite/gcc.dg/pr34003-2.c.jj 2007-12-13 21:07:59.000000000 +0100
-+++ gcc/testsuite/gcc.dg/pr34003-2.c 2007-12-13 21:09:35.000000000 +0100
-@@ -0,0 +1,20 @@
-+/* PR bootstrap/34003 */
-+/* { dg-do compile } */
-+/* { dg-options "-O0" } */
-+
-+extern void abort (void);
-+
-+int seen = 0;
-+
-+void foo (void)
-+{
-+ ++seen;
-+}
-+
-+int main (void)
-+{
-+ extern int bar (void);
-+ if (bar () != 1 || seen != 1)
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc43-pr34281.patch b/gcc43-pr34281.patch
new file mode 100644
index 0000000..b1fa5c8
--- /dev/null
+++ b/gcc43-pr34281.patch
@@ -0,0 +1,92 @@
+2007-12-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/34281
+ * config/arm/arm.c (arm_setup_incoming_varargs): If last named
+ argument needs double word alignment and cum->nregs is odd, account
+ for the inserted padding.
+
+ * gcc.c-torture/execute/20071213-1.c: New test.
+
+--- gcc/config/arm/arm.c.jj 2007-12-11 00:23:29.000000000 +0100
++++ gcc/config/arm/arm.c 2007-12-13 15:26:01.000000000 +0100
+@@ -17765,14 +17765,20 @@ arm_output_load_gr (rtx *operands)
+
+ static void
+ arm_setup_incoming_varargs (CUMULATIVE_ARGS *cum,
+- enum machine_mode mode ATTRIBUTE_UNUSED,
+- tree type ATTRIBUTE_UNUSED,
++ enum machine_mode mode,
++ tree type,
+ int *pretend_size,
+ int second_time ATTRIBUTE_UNUSED)
+ {
++ int nregs = cum->nregs;
++ if (nregs & 1
++ && ARM_DOUBLEWORD_ALIGN
++ && arm_needs_doubleword_align (mode, type))
++ nregs++;
++
+ cfun->machine->uses_anonymous_args = 1;
+- if (cum->nregs < NUM_ARG_REGS)
+- *pretend_size = (NUM_ARG_REGS - cum->nregs) * UNITS_PER_WORD;
++ if (nregs < NUM_ARG_REGS)
++ *pretend_size = (NUM_ARG_REGS - nregs) * UNITS_PER_WORD;
+ }
+
+ /* Return nonzero if the CONSUMER instruction (a store) does not need
+--- gcc/testsuite/gcc.c-torture/execute/20071213-1.c.jj 2007-12-13 16:47:49.000000000 +0100
++++ gcc/testsuite/gcc.c-torture/execute/20071213-1.c 2007-12-13 16:47:12.000000000 +0100
+@@ -0,0 +1,53 @@
++/* PR target/34281 */
++
++#include <stdarg.h>
++
++extern void abort (void);
++
++void
++h (int x, va_list ap)
++{
++ switch (x)
++ {
++ case 1:
++ if (va_arg (ap, int) != 3 || va_arg (ap, int) != 4)
++ abort ();
++ return;
++ case 5:
++ if (va_arg (ap, int) != 9 || va_arg (ap, int) != 10)
++ abort ();
++ return;
++ default:
++ abort ();
++ }
++}
++
++void
++f1 (int i, long long int j, ...)
++{
++ va_list ap;
++ va_start (ap, j);
++ h (i, ap);
++ if (i != 1 || j != 2)
++ abort ();
++ va_end (ap);
++}
++
++void
++f2 (int i, int j, int k, long long int l, ...)
++{
++ va_list ap;
++ va_start (ap, l);
++ h (i, ap);
++ if (i != 5 || j != 6 || k != 7 || l != 8)
++ abort ();
++ va_end (ap);
++}
++
++int
++main ()
++{
++ f1 (1, 2, 3, 4);
++ f2 (5, 6, 7, 8, 9, 10);
++ return 0;
++}
diff --git a/gcc43-pr34427.patch b/gcc43-pr34427.patch
deleted file mode 100644
index ac6cf71..0000000
--- a/gcc43-pr34427.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-2007-12-12 Jakub Jelinek <jakub@redhat.com>
-
- PR libfortran/34427
-
- Revert:
- 2007-12-08 Tobias Burnus <burnus@net-b.de>
-
- PR fortran/34319
- * io/list_read.c (parse_real, read_real): Support NaN/Infinity.
-
- * gfortran.dg/nan_3.f90: New.
-
---- libgfortran/io/list_read.c (revision 130708)
-+++ libgfortran/io/list_read.c (revision 130707)
-@@ -1078,12 +1078,7 @@ parse_real (st_parameter_dt *dtp, void *
- }
-
- if (!isdigit (c) && c != '.')
-- {
-- if (c == 'i' || c == 'I' || c == 'n' || c == 'N')
-- goto inf_nan;
-- else
-- goto bad;
-- }
-+ goto bad;
-
- push_char (dtp, c);
-
-@@ -1141,13 +1136,7 @@ parse_real (st_parameter_dt *dtp, void *
-
- exp2:
- if (!isdigit (c))
-- {
-- if (c == 'i' || c == 'I' || c == 'n' || c == 'N')
-- goto inf_nan;
-- else
-- goto bad;
-- }
--
-+ goto bad;
- push_char (dtp, c);
-
- for (;;)
-@@ -1177,41 +1166,6 @@ parse_real (st_parameter_dt *dtp, void *
-
- return m;
-
-- inf_nan:
-- /* Match INF and Infinity. */
-- if ((c == 'i' || c == 'I')
-- && ((c = next_char (dtp)) == 'n' || c == 'N')
-- && ((c = next_char (dtp)) == 'f' || c == 'F'))
-- {
-- c = next_char (dtp);
-- if ((c != 'i' && c != 'I')
-- || ((c == 'i' || c == 'I')
-- && ((c = next_char (dtp)) == 'n' || c == 'N')
-- && ((c = next_char (dtp)) == 'i' || c == 'I')
-- && ((c = next_char (dtp)) == 't' || c == 'T')
-- && ((c = next_char (dtp)) == 'y' || c == 'Y')
-- && (c = next_char (dtp))))
-- {
-- if (is_separator (c))
-- unget_char (dtp, c);
-- push_char (dtp, 'i');
-- push_char (dtp, 'n');
-- push_char (dtp, 'f');
-- goto done;
-- }
-- } /* Match NaN. */
-- else if (((c = next_char (dtp)) == 'a' || c == 'A')
-- && ((c = next_char (dtp)) == 'n' || c == 'N')
-- && (c = next_char (dtp)))
-- {
-- if (is_separator (c))
-- unget_char (dtp, c);
-- push_char (dtp, 'n');
-- push_char (dtp, 'a');
-- push_char (dtp, 'n');
-- goto done;
-- }
--
- bad:
-
- if (nml_bad_return (dtp, c))
-@@ -1339,12 +1293,6 @@ read_real (st_parameter_dt *dtp, int len
- eat_separator (dtp);
- return;
-
-- case 'i':
-- case 'I':
-- case 'n':
-- case 'N':
-- goto inf_nan;
--
- default:
- goto bad_real;
- }
-@@ -1419,12 +1367,7 @@ read_real (st_parameter_dt *dtp, int len
- }
-
- if (!isdigit (c) && c != '.')
-- {
-- if (c == 'i' || c == 'I' || c == 'n' || c == 'N')
-- goto inf_nan;
-- else
-- goto bad_real;
-- }
-+ goto bad_real;
-
- if (c == '.')
- {
-@@ -1521,37 +1464,6 @@ read_real (st_parameter_dt *dtp, int len
- dtp->u.p.saved_type = BT_REAL;
- return;
-
-- inf_nan:
-- /* Match INF and Infinity. */
-- if ((c == 'i' || c == 'I')
-- && ((c = next_char (dtp)) == 'n' || c == 'N')
-- && ((c = next_char (dtp)) == 'f' || c == 'F'))
-- {
-- c = next_char (dtp);
-- if (is_separator (c)
-- || ((c == 'i' || c == 'I')
-- && ((c = next_char (dtp)) == 'n' || c == 'N')
-- && ((c = next_char (dtp)) == 'i' || c == 'I')
-- && ((c = next_char (dtp)) == 't' || c == 'T')
-- && ((c = next_char (dtp)) == 'y' || c == 'Y')
-- && (c = next_char (dtp)) && is_separator (c)))
-- {
-- push_char (dtp, 'i');
-- push_char (dtp, 'n');
-- push_char (dtp, 'f');
-- goto done;
-- }
-- } /* Match NaN. */
-- else if (((c = next_char (dtp)) == 'a' || c == 'A')
-- && ((c = next_char (dtp)) == 'n' || c == 'N')
-- && (c = next_char (dtp)) && is_separator (c))
-- {
-- push_char (dtp, 'n');
-- push_char (dtp, 'a');
-- push_char (dtp, 'n');
-- goto done;
-- }
--
- bad_real:
-
- if (nml_bad_return (dtp, c))
---- gcc/testsuite/gfortran.dg/nan_3.f90 (revision 130708)
-+++ gcc/testsuite/gfortran.dg/nan_3.f90 (revision 130707)
-@@ -1,45 +0,0 @@
--! { dg-do run }
--! { dg-options "-fno-range-check" }
--! { dg-options "-fno-range-check -mieee" { target sh*-*-* } }
--!
--! PR fortran/34319
--!
--! Check support of INF/NaN for I/O.
--!
--program main
-- implicit none
-- real :: r
-- complex :: z
-- character(len=30) :: str
--
-- str = "nan"
-- read(str,*) r
-- if (.not.isnan(r)) call abort()
-- str = "(nan,4.0)"
-- read(str,*) z
-- if (.not.isnan(real(z)) .or. aimag(z) /= 4.0) call abort()
-- str = "(7.0,nan)"
-- read(str,*) z
-- if (.not.isnan(aimag(z)) .or. real(z) /= 7.0) call abort()
--
-- str = "inFinity"
-- read(str,*) r
-- if (r <= huge(r)) call abort()
-- str = "(+inFinity,4.0)"
-- read(str,*) z
-- if ((real(z) <= huge(r)) .or. aimag(z) /= 4.0) call abort()
-- str = "(7.0,-inFinity)"
-- read(str,*) z
-- if ((aimag(z) >= -huge(r)) .or. real(z) /= 7.0) call abort()
--
-- str = "inf"
-- read(str,*) r
-- if (r <= huge(r)) call abort()
-- str = "(+inf,4.0)"
-- read(str,*) z
-- if ((real(z) <= huge(r)) .or. aimag(z) /= 4.0) call abort()
-- str = "(7.0,-inf)"
-- read(str,*) z
-- if ((aimag(z) >= -huge(r)) .or. real(z) /= 7.0) call abort()
--
--end program main
diff --git a/gcc43-pr34448.patch b/gcc43-pr34448.patch
new file mode 100644
index 0000000..e698bce
--- /dev/null
+++ b/gcc43-pr34448.patch
@@ -0,0 +1,229 @@
+2007-12-17 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/34448
+ PR tree-optimization/34465
+ * gimplify.c (gimplify_init_constructor): Add new parameter
+ notify_temp_creation. Use it.
+ (gimplify_modify_expr_rhs): Take volatiles into account when
+ optimizing constructors.
+ Do not optimize constructors if gimplify_init_constructor will dump to
+ memory.
+ * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
+ * gcc.c-torture/compile/pr34448.c: New.
+
+--- gcc/gimplify.c (revision 130934)
++++ gcc/gimplify.c (local)
+@@ -3119,11 +3119,18 @@ gimplify_init_ctor_eval (tree object, VE
+
+ Note that we still need to clear any elements that don't have explicit
+ initializers, so if not all elements are initialized we keep the
+- original MODIFY_EXPR, we just remove all of the constructor elements. */
++ original MODIFY_EXPR, we just remove all of the constructor elements.
++
++ If NOTIFY_TEMP_CREATION is true, do not gimplify, just return
++ GS_ERROR if we would have to create a temporary when gimplifying
++ this constructor. Otherwise, return GS_OK.
++
++ If NOTIFY_TEMP_CREATION is false, just do the gimplification. */
+
+ static enum gimplify_status
+ gimplify_init_constructor (tree *expr_p, tree *pre_p,
+- tree *post_p, bool want_value)
++ tree *post_p, bool want_value,
++ bool notify_temp_creation)
+ {
+ tree object;
+ tree ctor = GENERIC_TREE_OPERAND (*expr_p, 1);
+@@ -3134,10 +3141,13 @@ gimplify_init_constructor (tree *expr_p,
+ if (TREE_CODE (ctor) != CONSTRUCTOR)
+ return GS_UNHANDLED;
+
+- ret = gimplify_expr (&GENERIC_TREE_OPERAND (*expr_p, 0), pre_p, post_p,
+- is_gimple_lvalue, fb_lvalue);
+- if (ret == GS_ERROR)
+- return ret;
++ if (!notify_temp_creation)
++ {
++ ret = gimplify_expr (&GENERIC_TREE_OPERAND (*expr_p, 0), pre_p, post_p,
++ is_gimple_lvalue, fb_lvalue);
++ if (ret == GS_ERROR)
++ return ret;
++ }
+ object = GENERIC_TREE_OPERAND (*expr_p, 0);
+
+ elts = CONSTRUCTOR_ELTS (ctor);
+@@ -3159,7 +3169,11 @@ gimplify_init_constructor (tree *expr_p,
+ individual elements. The exception is that a CONSTRUCTOR node
+ with no elements indicates zero-initialization of the whole. */
+ if (VEC_empty (constructor_elt, elts))
+- break;
++ {
++ if (notify_temp_creation)
++ return GS_OK;
++ break;
++ }
+
+ /* Fetch information about the constructor to direct later processing.
+ We might want to make static versions of it in various cases, and
+@@ -3175,6 +3189,8 @@ gimplify_init_constructor (tree *expr_p,
+ && TREE_READONLY (object)
+ && TREE_CODE (object) == VAR_DECL)
+ {
++ if (notify_temp_creation)
++ return GS_ERROR;
+ DECL_INITIAL (object) = ctor;
+ TREE_STATIC (object) = 1;
+ if (!DECL_NAME (object))
+@@ -3251,7 +3267,12 @@ gimplify_init_constructor (tree *expr_p,
+
+ if (size > 0 && !can_move_by_pieces (size, align))
+ {
+- tree new = create_tmp_var_raw (type, "C");
++ tree new;
++
++ if (notify_temp_creation)
++ return GS_ERROR;
++
++ new = create_tmp_var_raw (type, "C");
+
+ gimple_add_tmp_var (new);
+ TREE_STATIC (new) = 1;
+@@ -3273,6 +3294,9 @@ gimplify_init_constructor (tree *expr_p,
+ }
+ }
+
++ if (notify_temp_creation)
++ return GS_OK;
++
+ /* If there are nonzero elements, pre-evaluate to capture elements
+ overlapping with the lhs into temporaries. We must do this before
+ clearing to fetch the values before they are zeroed-out. */
+@@ -3312,6 +3336,9 @@ gimplify_init_constructor (tree *expr_p,
+ {
+ tree r, i;
+
++ if (notify_temp_creation)
++ return GS_OK;
++
+ /* Extract the real and imaginary parts out of the ctor. */
+ gcc_assert (VEC_length (constructor_elt, elts) == 2);
+ r = VEC_index (constructor_elt, elts, 0)->value;
+@@ -3348,6 +3375,9 @@ gimplify_init_constructor (tree *expr_p,
+ unsigned HOST_WIDE_INT ix;
+ constructor_elt *ce;
+
++ if (notify_temp_creation)
++ return GS_OK;
++
+ /* Go ahead and simplify constant constructors to VECTOR_CST. */
+ if (TREE_CONSTANT (ctor))
+ {
+@@ -3488,10 +3518,28 @@ gimplify_modify_expr_rhs (tree *expr_p,
+ constructor expression to the RHS of the MODIFY_EXPR. */
+ if (DECL_INITIAL (*from_p)
+ && TYPE_READONLY (TREE_TYPE (*from_p))
++ && !TREE_THIS_VOLATILE (*from_p)
+ && TREE_CODE (DECL_INITIAL (*from_p)) == CONSTRUCTOR)
+ {
+- *from_p = DECL_INITIAL (*from_p);
+- ret = GS_OK;
++ tree old_from = *from_p;
++
++ /* Move the constructor into the RHS. */
++ *from_p = DECL_INITIAL (*from_p);
++
++ /* Let's see if gimplify_init_constructor will need to put
++ it in memory. If so, revert the change. */
++ ret = gimplify_init_constructor (expr_p, NULL, NULL, false, true);
++ if (ret == GS_ERROR)
++ {
++ *from_p = old_from;
++ /* Fall through. */
++ }
++ else
++ {
++ *from_p = unshare_expr (*from_p);
++ ret = GS_OK;
++ break;
++ }
+ }
+ ret = GS_UNHANDLED;
+ break;
+@@ -3551,7 +3599,8 @@ gimplify_modify_expr_rhs (tree *expr_p,
+ case CONSTRUCTOR:
+ /* If we're initializing from a CONSTRUCTOR, break this into
+ individual MODIFY_EXPRs. */
+- return gimplify_init_constructor (expr_p, pre_p, post_p, want_value);
++ return gimplify_init_constructor (expr_p, pre_p, post_p, want_value,
++ false);
+
+ case COND_EXPR:
+ /* If we're assigning to a non-register type, push the assignment
+--- gcc/testsuite/gcc.c-torture/compile/pr34448.c (revision 130934)
++++ gcc/testsuite/gcc.c-torture/compile/pr34448.c (local)
+@@ -0,0 +1,34 @@
++/* { dg-do compile } */
++/* { dg-options "-O" } */
++
++typedef struct chunk_t chunk_t;
++struct chunk_t
++{
++ unsigned char *ptr;
++ long unsigned int len;
++};
++extern chunk_t asn1_wrap (chunk_t c, ...);
++typedef struct linked_list_t linked_list_t;
++chunk_t ietfAttr_list_encode (linked_list_t * list);
++extern linked_list_t *groups;
++static unsigned char ASN1_group_oid_str[] = {
++ 0x06
++};
++static const chunk_t ASN1_group_oid = {
++ ASN1_group_oid_str, sizeof (ASN1_group_oid_str)
++};
++static chunk_t
++build_attribute_type (const chunk_t type, chunk_t content)
++{
++ return type;
++}
++static chunk_t
++build_attributes (void)
++{
++ return asn1_wrap (build_attribute_type (ASN1_group_oid,
++ ietfAttr_list_encode (groups)));
++}
++void build_attr_cert (void)
++{
++ asn1_wrap (build_attributes ());
++}
+--- gcc/testsuite/gcc.dg/tree-ssa/pr32901.c (revision 130934)
++++ gcc/testsuite/gcc.dg/tree-ssa/pr32901.c (local)
+@@ -7,7 +7,7 @@ struct foo {
+ unsigned : 4;
+ };
+
+-extern struct foo thefoo;
++extern struct foo thefoo, theotherfoo;
+
+ void setup_foo(void)
+ {
+@@ -15,10 +15,16 @@ void setup_foo(void)
+ .a1 = 1,
+ .a2 = 5,
+ };
++ volatile const struct foo volinit = {
++ .a1 = 0,
++ .a2 = 6
++ };
+ thefoo = init;
++ theotherfoo = volinit;
+ }
+
+-/* { dg-final { scan-tree-dump-times "thefoo.0 = \{\}" 1 "gimple"} } */
+-/* { dg-final { scan-tree-dump-times "thefoo.0.a1 = 1" 1 "gimple"} } */
+-/* { dg-final { scan-tree-dump-times "thefoo.0.a2 = 5" 1 "gimple"} } */
++/* { dg-final { scan-tree-dump-times "thefoo.* = {}" 1 "gimple"} } */
++/* { dg-final { scan-tree-dump-times "thefoo.* = 1" 1 "gimple"} } */
++/* { dg-final { scan-tree-dump-times "thefoo.* = 5" 1 "gimple"} } */
++/* { dg-final { scan-tree-dump-times "theotherfoo = volinit" 1 "gimple"} } */
+ /* { dg-final { cleanup-tree-dump "gimple" } } */
diff --git a/gcc43-pr34535.patch b/gcc43-pr34535.patch
new file mode 100644
index 0000000..4a3d59f
--- /dev/null
+++ b/gcc43-pr34535.patch
@@ -0,0 +1,34 @@
+2007-12-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/34535
+ * tree-mudflap.c (mf_make_builtin): Make decl artificial
+ and don't emit debug info for it.
+
+ PR debug/34535
+ * cp-lang.c (cp_classify_record): Check TYPE_LANG_SPECIFIC
+ is non-NULL before testing CLASSTYPE_DECLARED_CLASS.
+
+--- gcc/cp/cp-lang.c.jj 2007-12-16 12:36:16.000000000 +0100
++++ gcc/cp/cp-lang.c 2007-12-20 10:58:19.000000000 +0100
+@@ -159,7 +159,7 @@ cxx_dwarf_name (tree t, int verbosity)
+ static enum classify_record
+ cp_classify_record (tree type)
+ {
+- if (CLASSTYPE_DECLARED_CLASS (type))
++ if (TYPE_LANG_SPECIFIC (type) && CLASSTYPE_DECLARED_CLASS (type))
+ return RECORD_IS_CLASS;
+
+ return RECORD_IS_STRUCT;
+--- gcc/tree-mudflap.c.jj 2007-08-13 15:11:18.000000000 +0200
++++ gcc/tree-mudflap.c 2007-12-20 11:15:01.000000000 +0100
+@@ -301,6 +301,10 @@ mf_make_builtin (enum tree_code category
+ TREE_PUBLIC (decl) = 1;
+ DECL_EXTERNAL (decl) = 1;
+ lang_hooks.decls.pushdecl (decl);
++ /* The decl was declared by the compiler. */
++ DECL_ARTIFICIAL (decl) = 1;
++ /* And we don't want debug info for it. */
++ DECL_IGNORED_P (decl) = 1;
+ return decl;
+ }
+
diff --git a/gcc43.spec b/gcc43.spec
index a2509ae..1cc02ce 100644
--- a/gcc43.spec
+++ b/gcc43.spec
@@ -328,7 +328,7 @@ Requires: libart_lgpl >= 2.1.0
%if %{build_java}
BuildRequires: gtk2-devel >= 2.4.0
BuildRequires: glib2-devel >= 2.4.0
-BuildRequires: firefox-devel
+BuildRequires: xulrunner-devel
BuildRequires: libart_lgpl-devel >= 2.1.0
BuildRequires: alsa-lib-devel
BuildRequires: libXtst-devel
diff --git a/sources b/sources
index c36fc95..1bfa2db 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-65ac33620b3605f6c612b8591d7f7fa1 gcc-4.3.0-20071212.tar.bz2
+c29e437a88678a93a9750caf304b69bc gcc-4.3.0-20071220.tar.bz2
92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz
next reply other threads:[~2026-06-29 12:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-29 12:23 Jakub Jelinek [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-06-29 12:23 [rpms/gcc] rhel-f41-base: 4.3.0-0.4 Jakub Jelinek
2026-06-29 12:23 Jakub Jelinek
2026-06-29 12:23 Jakub Jelinek
2026-06-29 12:23 Jakub Jelinek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178273581436.1.4291256406749802154.rpms-gcc-26315c4d94e9@fedoraproject.org \
--to=jakub@fedoraproject.org \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox