public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gcc] rhel-f41-base: 4.7.2-8
Date: Mon, 29 Jun 2026 12:25:37 GMT [thread overview]
Message-ID: <178273593726.1.8624851147640743332.rpms-gcc-171e01f80697@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gcc
Branch : rhel-f41-base
Commit : 171e01f80697baa2723c835450b4549de6318ed8
Author : Jakub Jelinek <jakub@redhat.com>
Date : 2012-11-09T12:58:44+01:00
Stats : +265/-182 in 6 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/171e01f80697baa2723c835450b4549de6318ed8?branch=rhel-f41-base
Log:
4.7.2-8
---
diff --git a/.gitignore b/.gitignore
index 83b4ef6..84a6258 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,3 +46,4 @@
/gcc-4.7.2-20121009.tar.bz2
/gcc-4.7.2-20121015.tar.bz2
/gcc-4.7.2-20121105.tar.bz2
+/gcc-4.7.2-20121109.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index 24e549a..222f3b1 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20121105
-%global SVNREV 193180
+%global DATE 20121109
+%global SVNREV 193356
%global gcc_version 4.7.2
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 7
+%global gcc_release 8
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -84,6 +84,9 @@ BuildRequires: binutils >= 2.20.51.0.2-12
BuildRequires: glibc-static
BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils
BuildRequires: systemtap-sdt-devel >= 1.3
+%if %{build_go}
+BuildRequires: hostname
+%endif
# For VTA guality testing
BuildRequires: gdb
%if %{build_java}
@@ -185,7 +188,8 @@ Patch14: gcc47-ppl-0.10.patch
Patch15: gcc47-libitm-fno-exceptions.patch
Patch16: gcc47-rh837630.patch
Patch17: gcc47-arm-hfp-ldso.patch
-Patch18: gcc47-c++-new-check-opt.patch
+Patch18: gcc47-pr55137.patch
+Patch19: gcc47-pr55236.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@@ -690,7 +694,8 @@ package or when debugging this package.
%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7
%patch17 -p0 -b .arm-hfp-ldso~
%endif
-%patch18 -p0 -b .c++-new-check-opt~
+%patch18 -p0 -b .pr55137~
+%patch19 -p0 -b .pr55236~
%if 0%{?_enable_debug_packages}
cat > split-debuginfo.sh <<\EOF
@@ -2664,6 +2669,17 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
+* Fri Nov 9 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-8
+- update from the 4.7 branch
+ - PRs fortran/54917, libstdc++/28811, libstdc++/54482, libstdc++/55028,
+ libstdc++/55215, middle-end/55219, target/55204,
+ tree-optimization/54986
+- further debug info quality improvements
+- fix reassociation (PR c++/55137)
+- fix range test optimization with -fwrapv (PR tree-optimization/55236)
+- add BuildRequires hostname (#875001)
+- __cxa_vec_new[23] overflow checking (#875009)
+
* Mon Nov 5 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-7
- update from the 4.7 branch
- PRs c++/54984, c++/54988, debug/54828, libstdc++/55047, libstdc++/55123,
diff --git a/gcc47-c++-new-check-opt.patch b/gcc47-c++-new-check-opt.patch
deleted file mode 100644
index 9454141..0000000
--- a/gcc47-c++-new-check-opt.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-2012-10-31 Florian Weimer <fweimer@redhat.com>
-
- * init.c (build_new_1): Do not check for arithmetic overflow if
- inner array size is 1.
-
- * g++.dg/init/new40.C: New.
-
---- gcc/cp/init.c (revision 193033)
-+++ gcc/cp/init.c (working copy)
-@@ -2176,6 +2176,8 @@ build_new_1 (VEC(tree,gc) **placement, t
- double_int inner_nelts_count = double_int_one;
- tree inner_nelts = NULL_TREE;
- tree alloc_call, alloc_expr;
-+ /* Size of the inner array elements. */
-+ double_int inner_size;
- /* The address returned by the call to "operator new". This node is
- a VAR_DECL and is therefore reusable. */
- tree alloc_node;
-@@ -2318,8 +2320,6 @@ build_new_1 (VEC(tree,gc) **placement, t
- double_int max_size
- = double_int_lshift (double_int_one, TYPE_PRECISION (sizetype) - 1,
- HOST_BITS_PER_DOUBLE_INT, false);
-- /* Size of the inner array elements. */
-- double_int inner_size;
- /* Maximum number of outer elements which can be allocated. */
- double_int max_outer_nelts;
- tree max_outer_nelts_tree;
-@@ -2438,7 +2438,15 @@ build_new_1 (VEC(tree,gc) **placement, t
- if (array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type))
- size = size_binop (PLUS_EXPR, size, cookie_size);
- else
-- cookie_size = NULL_TREE;
-+ {
-+ cookie_size = NULL_TREE;
-+ /* No size arithmetic necessary, so the size check is
-+ not needed. */
-+ if (outer_nelts_check != NULL
-+ && double_int_one_p (inner_size)
-+ && inner_nelts == NULL_TREE)
-+ outer_nelts_check = NULL_TREE;
-+ }
- /* Perform the overflow check. */
- if (outer_nelts_check != NULL_TREE)
- size = fold_build3 (COND_EXPR, sizetype, outer_nelts_check,
-@@ -2474,7 +2482,15 @@ build_new_1 (VEC(tree,gc) **placement, t
- /* Use a global operator new. */
- /* See if a cookie might be required. */
- if (!(array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type)))
-- cookie_size = NULL_TREE;
-+ {
-+ cookie_size = NULL_TREE;
-+ /* No size arithmetic necessary, so the size check is
-+ not needed. */
-+ if (outer_nelts_check != NULL
-+ && double_int_one_p (inner_size)
-+ && inner_nelts == NULL_TREE)
-+ outer_nelts_check = NULL_TREE;
-+ }
-
- alloc_call = build_operator_new_call (fnname, placement,
- &size, &cookie_size,
---- gcc/testsuite/g++.dg/init/new40.C (revision 0)
-+++ gcc/testsuite/g++.dg/init/new40.C (working copy)
-@@ -0,0 +1,112 @@
-+// Testcase for overflow handling in operator new[].
-+// Optimization of unnecessary overflow checks.
-+// { dg-do run }
-+
-+#include <assert.h>
-+#include <stdlib.h>
-+#include <stdexcept>
-+
-+static size_t magic_allocation_size
-+ = 1 + (size_t (1) << (sizeof (size_t) * 8 - 1));
-+
-+struct exc : std::bad_alloc {
-+};
-+
-+static size_t expected_size;
-+
-+struct pod_with_new {
-+ char ch;
-+ void *operator new[] (size_t sz)
-+ {
-+ if (sz != expected_size)
-+ abort ();
-+ throw exc ();
-+ }
-+};
-+
-+struct with_new {
-+ char ch;
-+ with_new () { }
-+ ~with_new () { }
-+ void *operator new[] (size_t sz)
-+ {
-+ if (sz != size_t (-1))
-+ abort ();
-+ throw exc ();
-+ }
-+};
-+
-+struct non_pod {
-+ char ch;
-+ non_pod () { }
-+ ~non_pod () { }
-+};
-+
-+void *
-+operator new (size_t sz) _GLIBCXX_THROW (std::bad_alloc)
-+{
-+ if (sz != expected_size)
-+ abort ();
-+ throw exc ();
-+}
-+
-+int
-+main ()
-+{
-+ if (sizeof (pod_with_new) == 1)
-+ expected_size = magic_allocation_size;
-+ else
-+ expected_size = -1;
-+
-+ try {
-+ new pod_with_new[magic_allocation_size];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ if (sizeof (with_new) == 1)
-+ expected_size = magic_allocation_size;
-+ else
-+ expected_size = -1;
-+
-+ try {
-+ new with_new[magic_allocation_size];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ expected_size = magic_allocation_size;
-+ try {
-+ new char[magic_allocation_size];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ expected_size = -1;
-+
-+ try {
-+ new pod_with_new[magic_allocation_size][2];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ try {
-+ new with_new[magic_allocation_size][2];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ try {
-+ new char[magic_allocation_size][2];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ try {
-+ new non_pod[magic_allocation_size];
-+ abort ();
-+ } catch (exc &) {
-+ }
-+
-+ return 0;
-+}
diff --git a/gcc47-pr55137.patch b/gcc47-pr55137.patch
new file mode 100644
index 0000000..0595ac5
--- /dev/null
+++ b/gcc47-pr55137.patch
@@ -0,0 +1,180 @@
+2012-11-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/55137
+ * fold-const.c (fold_binary_loc) <associate>: Don't introduce
+ TREE_OVERFLOW through reassociation. If type doesn't have defined
+ overflow, but one or both of the operands do, use the wrapping type
+ for reassociation and only convert to type at the end.
+
+ * g++.dg/opt/pr55137.C: New test.
+ * gcc.c-torture/execute/pr55137.c: New test.
+
+--- gcc/fold-const.c.jj 2012-11-07 09:16:41.929494183 +0100
++++ gcc/fold-const.c 2012-11-07 09:47:12.227710542 +0100
+@@ -10309,6 +10309,7 @@ fold_binary_loc (location_t loc,
+ {
+ tree var0, con0, lit0, minus_lit0;
+ tree var1, con1, lit1, minus_lit1;
++ tree atype = type;
+ bool ok = true;
+
+ /* Split both trees into variables, constants, and literals. Then
+@@ -10324,11 +10325,25 @@ fold_binary_loc (location_t loc,
+ if (code == MINUS_EXPR)
+ code = PLUS_EXPR;
+
+- /* With undefined overflow we can only associate constants with one
+- variable, and constants whose association doesn't overflow. */
++ /* With undefined overflow prefer doing association in a type
++ which wraps on overflow, if that is one of the operand types. */
+ if ((POINTER_TYPE_P (type) && POINTER_TYPE_OVERFLOW_UNDEFINED)
+ || (INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_WRAPS (type)))
+ {
++ if (INTEGRAL_TYPE_P (TREE_TYPE (arg0))
++ && TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg0)))
++ atype = TREE_TYPE (arg0);
++ else if (INTEGRAL_TYPE_P (TREE_TYPE (arg1))
++ && TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg1)))
++ atype = TREE_TYPE (arg1);
++ gcc_assert (TYPE_PRECISION (atype) == TYPE_PRECISION (type));
++ }
++
++ /* With undefined overflow we can only associate constants with one
++ variable, and constants whose association doesn't overflow. */
++ if ((POINTER_TYPE_P (atype) && POINTER_TYPE_OVERFLOW_UNDEFINED)
++ || (INTEGRAL_TYPE_P (atype) && !TYPE_OVERFLOW_WRAPS (atype)))
++ {
+ if (var0 && var1)
+ {
+ tree tmp0 = var0;
+@@ -10343,16 +10358,6 @@ fold_binary_loc (location_t loc,
+ if (!operand_equal_p (tmp0, tmp1, 0))
+ ok = false;
+ }
+-
+- if (ok && lit0 && lit1)
+- {
+- tree tmp0 = fold_convert (type, lit0);
+- tree tmp1 = fold_convert (type, lit1);
+-
+- if (!TREE_OVERFLOW (tmp0) && !TREE_OVERFLOW (tmp1)
+- && TREE_OVERFLOW (fold_build2 (code, type, tmp0, tmp1)))
+- ok = false;
+- }
+ }
+
+ /* Only do something if we found more than two objects. Otherwise,
+@@ -10363,10 +10368,16 @@ fold_binary_loc (location_t loc,
+ + (lit0 != 0) + (lit1 != 0)
+ + (minus_lit0 != 0) + (minus_lit1 != 0))))
+ {
+- var0 = associate_trees (loc, var0, var1, code, type);
+- con0 = associate_trees (loc, con0, con1, code, type);
+- lit0 = associate_trees (loc, lit0, lit1, code, type);
+- minus_lit0 = associate_trees (loc, minus_lit0, minus_lit1, code, type);
++ bool any_overflows = false;
++ if (lit0) any_overflows |= TREE_OVERFLOW (lit0);
++ if (lit1) any_overflows |= TREE_OVERFLOW (lit1);
++ if (minus_lit0) any_overflows |= TREE_OVERFLOW (minus_lit0);
++ if (minus_lit1) any_overflows |= TREE_OVERFLOW (minus_lit1);
++ var0 = associate_trees (loc, var0, var1, code, atype);
++ con0 = associate_trees (loc, con0, con1, code, atype);
++ lit0 = associate_trees (loc, lit0, lit1, code, atype);
++ minus_lit0 = associate_trees (loc, minus_lit0, minus_lit1,
++ code, atype);
+
+ /* Preserve the MINUS_EXPR if the negative part of the literal is
+ greater than the positive part. Otherwise, the multiplicative
+@@ -10380,38 +10391,45 @@ fold_binary_loc (location_t loc,
+ && tree_int_cst_lt (lit0, minus_lit0))
+ {
+ minus_lit0 = associate_trees (loc, minus_lit0, lit0,
+- MINUS_EXPR, type);
++ MINUS_EXPR, atype);
+ lit0 = 0;
+ }
+ else
+ {
+ lit0 = associate_trees (loc, lit0, minus_lit0,
+- MINUS_EXPR, type);
++ MINUS_EXPR, atype);
+ minus_lit0 = 0;
+ }
+ }
++
++ /* Don't introduce overflows through reassociation. */
++ if (!any_overflows
++ && ((lit0 && TREE_OVERFLOW (lit0))
++ || (minus_lit0 && TREE_OVERFLOW (minus_lit0))))
++ return NULL_TREE;
++
+ if (minus_lit0)
+ {
+ if (con0 == 0)
+ return
+ fold_convert_loc (loc, type,
+ associate_trees (loc, var0, minus_lit0,
+- MINUS_EXPR, type));
++ MINUS_EXPR, atype));
+ else
+ {
+ con0 = associate_trees (loc, con0, minus_lit0,
+- MINUS_EXPR, type);
++ MINUS_EXPR, atype);
+ return
+ fold_convert_loc (loc, type,
+ associate_trees (loc, var0, con0,
+- PLUS_EXPR, type));
++ PLUS_EXPR, atype));
+ }
+ }
+
+- con0 = associate_trees (loc, con0, lit0, code, type);
++ con0 = associate_trees (loc, con0, lit0, code, atype);
+ return
+ fold_convert_loc (loc, type, associate_trees (loc, var0, con0,
+- code, type));
++ code, atype));
+ }
+ }
+
+--- gcc/testsuite/g++.dg/opt/pr55137.C.jj 2012-11-07 09:31:45.027160654 +0100
++++ gcc/testsuite/g++.dg/opt/pr55137.C 2012-11-07 09:31:45.028160649 +0100
+@@ -0,0 +1,4 @@
++// PR c++/55137
++// { dg-do compile }
++
++enum E { F = -1 + (int) (sizeof (int) - 1) };
+--- gcc/testsuite/gcc.c-torture/execute/pr55137.c.jj 2012-11-07 09:44:11.226768063 +0100
++++ gcc/testsuite/gcc.c-torture/execute/pr55137.c 2012-11-07 09:44:24.380691303 +0100
+@@ -0,0 +1,30 @@
++/* PR c++/55137 */
++
++extern void abort (void);
++
++int
++foo (unsigned int x)
++{
++ return ((int) (x + 1U) + 1) < (int) x;
++}
++
++int
++bar (unsigned int x)
++{
++ return (int) (x + 1U) + 1;
++}
++
++int
++baz (unsigned int x)
++{
++ return x + 1U;
++}
++
++int
++main ()
++{
++ if (foo (__INT_MAX__) != (bar (__INT_MAX__) < __INT_MAX__)
++ || foo (__INT_MAX__) != ((int) baz (__INT_MAX__) + 1 < __INT_MAX__))
++ abort ();
++ return 0;
++}
diff --git a/gcc47-pr55236.patch b/gcc47-pr55236.patch
new file mode 100644
index 0000000..e661544
--- /dev/null
+++ b/gcc47-pr55236.patch
@@ -0,0 +1,62 @@
+2012-11-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/55236
+ * fold-const.c (make_range_step) <case NEGATE_EXPR>: For -fwrapv
+ and signed ARG0_TYPE, force low and high to be non-NULL.
+
+ * gcc.dg/pr55236.c: New test.
+
+--- gcc/fold-const.c.jj 2012-11-07 11:24:34.000000000 +0100
++++ gcc/fold-const.c 2012-11-08 16:54:38.978339040 +0100
+@@ -3880,6 +3880,17 @@ make_range_step (location_t loc, enum tr
+ return arg0;
+
+ case NEGATE_EXPR:
++ /* If flag_wrapv and ARG0_TYPE is signed, make sure
++ low and high are non-NULL, then normalize will DTRT. */
++ if (!TYPE_UNSIGNED (arg0_type)
++ && !TYPE_OVERFLOW_UNDEFINED (arg0_type))
++ {
++ if (low == NULL_TREE)
++ low = TYPE_MIN_VALUE (arg0_type);
++ if (high == NULL_TREE)
++ high = TYPE_MAX_VALUE (arg0_type);
++ }
++
+ /* (-x) IN [a,b] -> x in [-b, -a] */
+ n_low = range_binop (MINUS_EXPR, exp_type,
+ build_int_cst (exp_type, 0),
+--- gcc/testsuite/gcc.dg/pr55236.c.jj 2012-11-08 16:40:49.171781137 +0100
++++ gcc/testsuite/gcc.dg/pr55236.c 2012-11-08 16:41:20.044578919 +0100
+@@ -0,0 +1,31 @@
++/* PR tree-optimization/55236 */
++/* { dg-do run } */
++/* { dg-options "-O2 -fwrapv" } */
++
++extern void abort ();
++
++__attribute__((noinline, noclone)) void
++foo (int i)
++{
++ if (i > 0)
++ abort ();
++ i = -i;
++ if (i < 0)
++ return;
++ abort ();
++}
++
++__attribute__((noinline, noclone)) void
++bar (int i)
++{
++ if (i > 0 || (-i) >= 0)
++ abort ();
++}
++
++int
++main ()
++{
++ foo (-__INT_MAX__ - 1);
++ bar (-__INT_MAX__ - 1);
++ return 0;
++}
diff --git a/sources b/sources
index 8173142..7dd2612 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
-7d9235cf09e4c74dfcda089836d26c2e gcc-4.7.2-20121105.tar.bz2
+2136a229e204d8a4425e21034e56c706 gcc-4.7.2-20121109.tar.bz2
reply other threads:[~2026-06-29 12:25 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=178273593726.1.8624851147640743332.rpms-gcc-171e01f80697@fedoraproject.org \
--to=jakub@redhat.com \
--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