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.1.2-19
Date: Mon, 29 Jun 2026 12:23:21 GMT [thread overview]
Message-ID: <178273580127.1.3262248417146125089.rpms-gcc-34b340a5bbb9@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gcc
Branch : rhel-f41-base
Commit : 34b340a5bbb9629c8c16c3990d47412e53d4463f
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date : 2007-08-21T19:33:58+00:00
Stats : +291/-78 in 7 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/34b340a5bbb9629c8c16c3990d47412e53d4463f?branch=rhel-f41-base
Log:
4.1.2-19
---
diff --git a/.cvsignore b/.cvsignore
index c43a214..fd72f71 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-gcc-4.1.2-20070816.tar.bz2
+gcc-4.1.2-20070821.tar.bz2
diff --git a/gcc41-ppc-tramp.patch b/gcc41-ppc-tramp.patch
new file mode 100644
index 0000000..145b628
--- /dev/null
+++ b/gcc41-ppc-tramp.patch
@@ -0,0 +1,34 @@
+2007-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/tramp.asm: Include config.h.
+ Check __PIC__ or __pic__ macro instead of SHARED.
+
+--- gcc/config/rs6000/tramp.asm.jj 2006-10-05 00:28:33.000000000 +0200
++++ gcc/config/rs6000/tramp.asm 2007-08-20 23:20:52.000000000 +0200
+@@ -1,6 +1,6 @@
+ /* Special support for trampolines
+ *
+- * Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1996, 1997, 2000, 2007 Free Software Foundation, Inc.
+ * Written By Michael Meissner
+ *
+ * This file is free software; you can redistribute it and/or modify it
+@@ -37,7 +37,8 @@
+
+ .file "tramp.asm"
+ .section ".text"
+- #include "ppc-asm.h"
++#include "ppc-asm.h"
++#include "config.h"
+
+ #ifndef __powerpc64__
+ .type trampoline_initial,@object
+@@ -105,7 +106,7 @@ FUNC_START(__trampoline_setup)
+ blr
+
+ .Labort:
+-#if defined SHARED && defined HAVE_AS_REL16
++#if (defined __PIC__ || defined __pic__) && defined HAVE_AS_REL16
+ bcl 20,31,1f
+ 1: mflr r30
+ addis r30,r30,_GLOBAL_OFFSET_TABLE_-1b@ha
diff --git a/gcc41-pr32912.patch b/gcc41-pr32912.patch
new file mode 100644
index 0000000..9a9f865
--- /dev/null
+++ b/gcc41-pr32912.patch
@@ -0,0 +1,138 @@
+2007-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/32912
+ * fold-const.c (fold_binary): Only optimize X | ~X and X ^ ~X for
+ integral types.
+
+ * gcc.dg/pr32912-1.c: New test.
+ * gcc.dg/pr32912-2.c: New test.
+
+--- gcc/fold-const.c.jj 2007-08-13 15:11:18.000000000 +0200
++++ gcc/fold-const.c 2007-08-20 15:49:05.000000000 +0200
+@@ -8079,6 +8079,7 @@ fold_binary (enum tree_code code, tree t
+
+ /* ~X | X is -1. */
+ if (TREE_CODE (arg0) == BIT_NOT_EXPR
++ && INTEGRAL_TYPE_P (TREE_TYPE (arg1))
+ && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
+ {
+ t1 = build_int_cst (type, -1);
+@@ -8088,6 +8089,7 @@ fold_binary (enum tree_code code, tree t
+
+ /* X | ~X is -1. */
+ if (TREE_CODE (arg1) == BIT_NOT_EXPR
++ && INTEGRAL_TYPE_P (TREE_TYPE (arg0))
+ && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
+ {
+ t1 = build_int_cst (type, -1);
+@@ -8175,6 +8177,7 @@ fold_binary (enum tree_code code, tree t
+
+ /* ~X ^ X is -1. */
+ if (TREE_CODE (arg0) == BIT_NOT_EXPR
++ && INTEGRAL_TYPE_P (TREE_TYPE (arg1))
+ && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
+ {
+ t1 = build_int_cst (type, -1);
+@@ -8184,6 +8187,7 @@ fold_binary (enum tree_code code, tree t
+
+ /* X ^ ~X is -1. */
+ if (TREE_CODE (arg1) == BIT_NOT_EXPR
++ && INTEGRAL_TYPE_P (TREE_TYPE (arg0))
+ && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
+ {
+ t1 = build_int_cst (type, -1);
+--- gcc/testsuite/gcc.dg/pr32912-1.c.jj 2007-08-20 14:43:05.000000000 +0200
++++ gcc/testsuite/gcc.dg/pr32912-1.c 2007-08-20 14:43:23.000000000 +0200
+@@ -0,0 +1,44 @@
++/* PR middle-end/32912 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++extern void abort (void);
++
++typedef int __m128i __attribute__ ((__vector_size__ (16)));
++
++__m128i a, b, c, d, e, f;
++
++void
++foo (__m128i x)
++{
++ a = x ^ ~x;
++ b = ~x ^ x;
++ c = x | ~x;
++ d = ~x | x;
++ e = x & ~x;
++ f = ~x & x;
++}
++
++int
++main (void)
++{
++ union { __m128i v; int i[sizeof (__m128i) / sizeof (int)]; } u;
++ int i;
++
++ for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++)
++ u.i[i] = i * 49 - 36;
++ foo (u.v);
++#define check(x, val) \
++ u.v = (x); \
++ for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++) \
++ if (u.i[i] != (val)) \
++ abort ()
++
++ check (a, ~0);
++ check (b, ~0);
++ check (c, ~0);
++ check (d, ~0);
++ check (e, 0);
++ check (f, 0);
++ return 0;
++}
+--- gcc/testsuite/gcc.dg/pr32912-2.c.jj 2007-08-20 15:58:47.000000000 +0200
++++ gcc/testsuite/gcc.dg/pr32912-2.c 2007-08-20 15:55:32.000000000 +0200
+@@ -0,0 +1,45 @@
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++extern void abort (void);
++
++typedef int __m128i __attribute__ ((__vector_size__ (16)));
++
++__m128i a, b, c, d, e, f;
++
++__m128i
++foo (void)
++{
++ __m128i x = { 0x11111111, 0x22222222, 0x44444444 };
++ return x;
++}
++
++__m128i
++bar (void)
++{
++ __m128i x = { 0x11111111, 0x22222222, 0x44444444 };
++ return ~x;
++}
++
++int
++main (void)
++{
++ union { __m128i v; int i[sizeof (__m128i) / sizeof (int)]; } u, v;
++ int i;
++
++ u.v = foo ();
++ v.v = bar ();
++ for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++)
++ {
++ if (u.i[i] != ~v.i[i])
++ abort ();
++ if (i < 3)
++ {
++ if (u.i[i] != (0x11111111 << i))
++ abort ();
++ }
++ else if (u.i[i])
++ abort ();
++ }
++ return 0;
++}
diff --git a/gcc41-pr32992.patch b/gcc41-pr32992.patch
deleted file mode 100644
index efdf41b..0000000
--- a/gcc41-pr32992.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-2007-08-13 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/32992
- * typeck.c (check_return_expr): Don't NRV optimize vars in
- anonymous unions.
- * decl.c (finish_function): Comment fix.
-
- * g++.dg/opt/nrv14.C: New test.
-
---- gcc/cp/typeck.c.jj 2007-08-13 15:10:19.000000000 +0200
-+++ gcc/cp/typeck.c 2007-08-13 18:00:15.000000000 +0200
-@@ -6446,6 +6446,7 @@ check_return_expr (tree retval, bool *no
- && TREE_CODE (retval) == VAR_DECL
- && DECL_CONTEXT (retval) == current_function_decl
- && ! TREE_STATIC (retval)
-+ && ! DECL_HAS_VALUE_EXPR_P (retval)
- && (DECL_ALIGN (retval)
- >= DECL_ALIGN (DECL_RESULT (current_function_decl)))
- && same_type_p ((TYPE_MAIN_VARIANT
---- gcc/cp/decl.c.jj 2007-08-13 15:10:19.000000000 +0200
-+++ gcc/cp/decl.c 2007-08-13 18:09:33.000000000 +0200
-@@ -11566,7 +11566,7 @@ finish_function (int flags)
- gcc_assert (stmts_are_full_exprs_p ());
-
- /* Set up the named return value optimization, if we can. Candidate
-- variables are selected in check_return_value. */
-+ variables are selected in check_return_expr. */
- if (current_function_return_value)
- {
- tree r = current_function_return_value;
---- gcc/testsuite/g++.dg/opt/nrv14.C.jj 2007-08-13 18:07:09.000000000 +0200
-+++ gcc/testsuite/g++.dg/opt/nrv14.C 2007-08-13 18:07:46.000000000 +0200
-@@ -0,0 +1,39 @@
-+// PR c++/32992
-+// { dg-do run }
-+// { dg-options "-O2" }
-+
-+extern "C" void abort (void);
-+
-+struct A
-+{
-+ long int a1;
-+ long int a2;
-+ long int a3;
-+};
-+
-+struct B
-+{
-+ long int f[3];
-+ operator A ()
-+ {
-+ union
-+ {
-+ long int t[3];
-+ A a;
-+ };
-+ for (int i = 0; i < 3; i++)
-+ t[i] = f[i];
-+ return a;
-+ }
-+};
-+
-+int
-+main ()
-+{
-+ B b = { {1, 3, 5} };
-+ A a = b;
-+
-+ if (a.a1 != b.f[0] || a.a2 != b.f[1] || a.a3 != b.f[2])
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc41-rh253102.patch b/gcc41-rh253102.patch
new file mode 100644
index 0000000..d4cad4f
--- /dev/null
+++ b/gcc41-rh253102.patch
@@ -0,0 +1,89 @@
+2007-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * decl.c (variable_decl): Don't share charlen structs if
+ length == NULL.
+ * trans-decl.c (create_function_arglist): Assert
+ f->sym->ts.cl->backend_decl is NULL instead of unsharing
+ charlen struct here.
+
+ * gfortran.dg/assumed_charlen_sharing.f90: New test.
+
+--- gcc/fortran/decl.c.jj 2007-02-20 22:38:20.000000000 +0100
++++ gcc/fortran/decl.c 2007-08-21 20:50:33.000000000 +0200
+@@ -1086,10 +1086,11 @@ variable_decl (int elem)
+ break;
+
+ /* Non-constant lengths need to be copied after the first
+- element. */
++ element. Also copy assumed lengths. */
+ case MATCH_NO:
+- if (elem > 1 && current_ts.cl->length
+- && current_ts.cl->length->expr_type != EXPR_CONSTANT)
++ if (elem > 1
++ && (current_ts.cl->length == NULL
++ || current_ts.cl->length->expr_type != EXPR_CONSTANT))
+ {
+ cl = gfc_get_charlen ();
+ cl->next = gfc_current_ns->cl_list;
+--- gcc/fortran/trans-decl.c.jj 2007-03-12 08:28:13.000000000 +0100
++++ gcc/fortran/trans-decl.c 2007-08-21 20:50:33.000000000 +0200
+@@ -1417,25 +1417,8 @@ create_function_arglist (gfc_symbol * sy
+ if (!f->sym->ts.cl->length)
+ {
+ TREE_USED (length) = 1;
+- if (!f->sym->ts.cl->backend_decl)
+- f->sym->ts.cl->backend_decl = length;
+- else
+- {
+- /* there is already another variable using this
+- gfc_charlen node, build a new one for this variable
+- and chain it into the list of gfc_charlens.
+- This happens for e.g. in the case
+- CHARACTER(*)::c1,c2
+- since CHARACTER declarations on the same line share
+- the same gfc_charlen node. */
+- gfc_charlen *cl;
+-
+- cl = gfc_get_charlen ();
+- cl->backend_decl = length;
+- cl->next = f->sym->ts.cl->next;
+- f->sym->ts.cl->next = cl;
+- f->sym->ts.cl = cl;
+- }
++ gcc_assert (!f->sym->ts.cl->backend_decl);
++ f->sym->ts.cl->backend_decl = length;
+ }
+
+ hidden_typelist = TREE_CHAIN (hidden_typelist);
+--- gcc/testsuite/gfortran.dg/assumed_charlen_sharing.f90.jj 2007-08-21 08:29:57.000000000 +0200
++++ gcc/testsuite/gfortran.dg/assumed_charlen_sharing.f90 2007-08-21 08:29:57.000000000 +0200
+@@ -0,0 +1,29 @@
++! This testcase was miscompiled, because ts.cl
++! in function bar was initially shared between both
++! dummy arguments. Although it was later unshared,
++! all expressions which copied ts.cl from bar2
++! before that used incorrectly bar1's length
++! instead of bar2.
++! { dg-do run }
++
++subroutine foo (foo1, foo2)
++ implicit none
++ integer, intent(in) :: foo2
++ character(*), intent(in) :: foo1(foo2)
++end subroutine foo
++
++subroutine bar (bar1, bar2)
++ implicit none
++ character(*), intent(in) :: bar1, bar2
++
++ call foo ((/ bar2 /), 1)
++end subroutine bar
++
++program test
++ character(80) :: str1
++ character(5) :: str2
++
++ str1 = 'String'
++ str2 = 'Strng'
++ call bar (str2, str1)
++end program test
diff --git a/gcc41.spec b/gcc41.spec
index 0a78ce0..ad87ad2 100644
--- a/gcc41.spec
+++ b/gcc41.spec
@@ -1,6 +1,6 @@
-%define DATE 20070816
+%define DATE 20070821
%define gcc_version 4.1.2
-%define gcc_release 18
+%define gcc_release 19
%define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64
%define include_gappletviewer 1
@@ -140,8 +140,10 @@ Patch23: gcc41-pr28690.patch
Patch24: gcc41-rh247256.patch
Patch25: gcc41-pr22244.patch
Patch26: gcc41-pr32678.patch
-Patch27: gcc41-pr32992.patch
+Patch27: gcc41-pr32912.patch
Patch28: gcc41-sparc-niagara.patch
+Patch29: gcc41-ppc-tramp.patch
+Patch30: gcc41-rh253102.patch
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
@@ -451,8 +453,10 @@ which are required to run programs compiled with the GNAT.
%patch24 -p0 -b .rh247256~
%patch25 -p0 -b .pr22244~
%patch26 -p0 -b .pr32678~
-%patch27 -p0 -b .pr32992~
+%patch27 -p0 -b .pr32912~
%patch28 -p0 -b .sparc-niagara~
+%patch29 -p0 -b .ppc-tramp~
+%patch30 -p0 -b .rh253102~
sed -i -e 's/4\.1\.3/4.1.2/' gcc/BASE-VER gcc/version.c
sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
@@ -745,6 +749,17 @@ EOF
fi
done
+# Nuke bits/stdc++.h.gch dirs
+# 1) there is no bits/stdc++.h header installed, so when gch file can't be
+# used, compilation fails
+# 2) sometimes it is hard to match the exact options used for building
+# libstdc++-v3 or they aren't desirable
+# 3) there are multilib issues, conflicts etc. with this
+# 4) it is huge
+# People can always precompile on their own whatever they want, but
+# shipping this for everybody is unnecessary.
+rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
+
%ifarch sparc sparc64
ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
$RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
@@ -1576,6 +1591,15 @@ fi
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog
+* Tue Aug 21 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-19
+- update from gcc-4_1-branch (-r127528:127672)
+ - PR c++/32112
+- fix ppc32 libgcc.a(tramp.o), so that binaries using trampolines
+ aren't forced to use bss PLT
+- fix a fortran charlen sharing bug (#253102)
+- fix ICE with X|~X or X^~X with vectors (PR middle-end/32912)
+- nuke bits/stdc++.gch directories from libstdc++-devel (#253304)
+
* Thu Aug 16 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-18
- update from gcc-4_1-branch (-r126830:127528)
- PR c++/17763
diff --git a/sources b/sources
index 216d6cb..941bcb0 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-599a243fcc5e34eac99032611e91618b gcc-4.1.2-20070816.tar.bz2
+65778706d6b9c029a06fca968a45ab7f gcc-4.1.2-20070821.tar.bz2
reply other threads:[~2026-06-29 12:23 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=178273580127.1.3262248417146125089.rpms-gcc-34b340a5bbb9@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