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: 8.0.1-0.15
Date: Mon, 29 Jun 2026 12:27:52 GMT [thread overview]
Message-ID: <178273607296.1.12478709430267515385.rpms-gcc-16819750d265@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gcc
Branch : rhel-f41-base
Commit : 16819750d2655346a60ea748688343ca73798465
Author : Jakub Jelinek <jakub@redhat.com>
Date : 2018-02-21T00:51:11+01:00
Stats : +207/-4 in 4 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/16819750d2655346a60ea748688343ca73798465?branch=rhel-f41-base
Log:
8.0.1-0.15
---
diff --git a/.gitignore b/.gitignore
index bdc3de8..4cd8033 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,4 @@
/gcc-8.0.1-20180207.tar.xz
/gcc-8.0.1-20180210.tar.xz
/gcc-8.0.1-20180218.tar.xz
+/gcc-8.0.1-20180220.tar.xz
diff --git a/gcc.spec b/gcc.spec
index 3352a13..d7b77f2 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,10 +1,10 @@
-%global DATE 20180218
-%global SVNREV 257796
+%global DATE 20180220
+%global SVNREV 257865
%global gcc_version 8.0.1
%global gcc_major 8
# 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 0.14
+%global gcc_release 0.15
%global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
%global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
%global _unpackaged_files_terminate_build 0
@@ -235,6 +235,7 @@ Patch9: gcc8-aarch64-async-unw-tables.patch
Patch10: gcc8-foffload-default.patch
Patch11: gcc8-Wno-format-security.patch
Patch12: gcc8-rh1512529-aarch64.patch
+Patch13: gcc8-pr84478.patch
Patch1000: nvptx-tools-no-ptxas.patch
Patch1001: nvptx-tools-build.patch
@@ -794,6 +795,7 @@ to NVidia PTX capable devices if available.
%patch10 -p0 -b .foffload-default~
%patch11 -p0 -b .Wno-format-security~
%patch12 -p0 -b .rh1512529-aarch64~
+%patch13 -p0 -b .pr84478~
cd nvptx-tools-%{nvptx_tools_gitrev}
%patch1000 -p1 -b .nvptx-tools-no-ptxas~
@@ -3052,6 +3054,18 @@ fi
%endif
%changelog
+* Tue Feb 20 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.15
+- update from the trunk
+ - PRs c++/84348, c++/84429, c++/84430, c++/84444, c++/84445, c++/84446,
+ c++/84448, c++/84449, c++/84455, c++/84488, c/81272, c/84310,
+ driver/83193, fortran/35339, fortran/48890, fortran/83823,
+ middle-end/79257, middle-end/82004, middle-end/82123,
+ middle-end/84095, middle-end/84406, other/80589, sanitizer/82183,
+ target/79747, target/84148, target/84460, tree-optimization/81592,
+ tree-optimization/82491, tree-optimization/84419,
+ tree-optimization/84452
+- fix strlen value range computation (#1546964, PR tree-optimization/84478)
+
* Sun Feb 18 2018 Jakub Jelinek <jakub@redhat.com> 8.0.1-0.14
- update from the trunk
- PRs ada/84277, bootstrap/82939, bootstrap/84405, c++/79064, c++/79626,
diff --git a/gcc8-pr84478.patch b/gcc8-pr84478.patch
new file mode 100644
index 0000000..6bdb9a5
--- /dev/null
+++ b/gcc8-pr84478.patch
@@ -0,0 +1,188 @@
+2018-02-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/84478
+ * gimple-fold.c (get_range_strlen): Make minlen const and assume it
+ can't be NULL. Add type 3 support which is conservatively correct
+ in PHIs. Formatting and comment capitalization fixes. Add warning
+ that the 2 argument get_range_strlen is only usable for warnings.
+ (gimple_fold_builtin_strlen): Use the 6 arg get_range_strlen overload
+ rather than 2 arg, use it only if it returns true and flexarray is
+ false, pass 3 as type to it.
+
+ * gcc.c-torture/execute/pr84478.c: New test.
+
+--- gcc/gimple-fold.c.jj 2018-02-19 19:57:03.424279589 +0100
++++ gcc/gimple-fold.c 2018-02-20 16:21:34.583020305 +0100
+@@ -1283,10 +1283,11 @@ gimple_fold_builtin_memset (gimple_stmt_
+ value of ARG in LENGTH[0] and LENGTH[1], respectively.
+ If ARG is an SSA name variable, follow its use-def chains. When
+ TYPE == 0, if LENGTH[1] is not equal to the length we determine or
+- if we are unable to determine the length or value, return False.
++ if we are unable to determine the length or value, return false.
+ VISITED is a bitmap of visited variables.
+ TYPE is 0 if string length should be obtained, 1 for maximum string
+- length and 2 for maximum value ARG can have.
++ length and 2 for maximum value ARG can have, 3 is like 1, but provide
++ conservatively correct rather than optimistic answer.
+ When FUZZY is set and the length of a string cannot be determined,
+ the function instead considers as the maximum possible length the
+ size of a character array it may refer to.
+@@ -1302,9 +1303,8 @@ get_range_strlen (tree arg, tree length[
+ tree var, val = NULL_TREE;
+ gimple *def_stmt;
+
+- /* The minimum and maximum length. The MAXLEN pointer stays unchanged
+- but MINLEN may be cleared during the execution of the function. */
+- tree *minlen = length;
++ /* The minimum and maximum length. */
++ tree *const minlen = length;
+ tree *const maxlen = length + 1;
+
+ if (TREE_CODE (arg) != SSA_NAME)
+@@ -1445,12 +1445,11 @@ get_range_strlen (tree arg, tree length[
+ if (!val)
+ return false;
+
+- if (minlen
+- && (!*minlen
+- || (type > 0
+- && TREE_CODE (*minlen) == INTEGER_CST
+- && TREE_CODE (val) == INTEGER_CST
+- && tree_int_cst_lt (val, *minlen))))
++ if (!*minlen
++ || (type > 0
++ && TREE_CODE (*minlen) == INTEGER_CST
++ && TREE_CODE (val) == INTEGER_CST
++ && tree_int_cst_lt (val, *minlen)))
+ *minlen = val;
+
+ if (*maxlen)
+@@ -1503,18 +1502,16 @@ get_range_strlen (tree arg, tree length[
+ {
+ tree op2 = gimple_assign_rhs2 (def_stmt);
+ tree op3 = gimple_assign_rhs3 (def_stmt);
+- return get_range_strlen (op2, length, visited, type, fuzzy, flexp)
+- && get_range_strlen (op3, length, visited, type, fuzzy, flexp);
++ return (get_range_strlen (op2, length, visited, type, fuzzy, flexp)
++ && get_range_strlen (op3, length, visited, type, fuzzy,
++ flexp));
+ }
+ return false;
+
+ case GIMPLE_PHI:
+- {
+- /* All the arguments of the PHI node must have the same constant
+- length. */
+- unsigned i;
+-
+- for (i = 0; i < gimple_phi_num_args (def_stmt); i++)
++ /* All the arguments of the PHI node must have the same constant
++ length. */
++ for (unsigned i = 0; i < gimple_phi_num_args (def_stmt); i++)
+ {
+ tree arg = gimple_phi_arg (def_stmt, i)->def;
+
+@@ -1529,13 +1526,12 @@ get_range_strlen (tree arg, tree length[
+
+ if (!get_range_strlen (arg, length, visited, type, fuzzy, flexp))
+ {
+- if (fuzzy)
++ if (fuzzy && type != 3)
+ *maxlen = build_all_ones_cst (size_type_node);
+ else
+ return false;
+ }
+ }
+- }
+ return true;
+
+ default:
+@@ -1554,7 +1550,10 @@ get_range_strlen (tree arg, tree length[
+ Return true if the range of the string lengths has been obtained
+ from the upper bound of an array at the end of a struct. Such
+ an array may hold a string that's longer than its upper bound
+- due to it being used as a poor-man's flexible array member. */
++ due to it being used as a poor-man's flexible array member.
++
++ This function should be only used for warning code, as it doesn't
++ handle PHIs in a conservatively correct way. */
+
+ bool
+ get_range_strlen (tree arg, tree minmaxlen[2])
+@@ -3533,8 +3532,12 @@ gimple_fold_builtin_strlen (gimple_stmt_
+ wide_int minlen;
+ wide_int maxlen;
+
+- tree lenrange[2];
+- if (!get_range_strlen (gimple_call_arg (stmt, 0), lenrange)
++ tree lenrange[2] = { NULL_TREE, NULL_TREE };
++ bitmap visited = NULL;
++ bool flexarray = false;
++ if (get_range_strlen (gimple_call_arg (stmt, 0), lenrange, &visited,
++ 3, true, &flexarray)
++ && !flexarray
+ && lenrange[0] && TREE_CODE (lenrange[0]) == INTEGER_CST
+ && lenrange[1] && TREE_CODE (lenrange[1]) == INTEGER_CST)
+ {
+@@ -3554,6 +3557,9 @@ gimple_fold_builtin_strlen (gimple_stmt_
+ maxlen = wi::to_wide (max_object_size (), prec) - 2;
+ }
+
++ if (visited)
++ BITMAP_FREE (visited);
++
+ if (minlen == maxlen)
+ {
+ lenrange[0] = force_gimple_operand_gsi (gsi, lenrange[0], true, NULL,
+--- gcc/testsuite/gcc.c-torture/execute/pr84478.c.jj 2018-02-20 16:32:00.683086212 +0100
++++ gcc/testsuite/gcc.c-torture/execute/pr84478.c 2018-02-20 16:31:33.497081640 +0100
+@@ -0,0 +1,49 @@
++/* PR tree-optimization/84478 */
++
++long poolptr;
++unsigned char *strpool;
++static const char *poolfilearr[] = {
++ "mu",
++ "",
++#define A "x",
++#define B A "xx", A A "xxx", A A A A A
++#define C B B B B B B B B B B
++#define D C C C C C C C C C C
++ D C C C C C C C B B B
++ ((void *)0)
++};
++
++__attribute__((noipa)) long
++makestring (void)
++{
++ return 1;
++}
++
++__attribute__((noipa)) long
++loadpoolstrings (long spare_size)
++{
++ const char *s;
++ long g = 0;
++ int i = 0, j = 0;
++ while ((s = poolfilearr[j++]))
++ {
++ int l = __builtin_strlen (s);
++ i += l;
++ if (i >= spare_size) return 0;
++ while (l-- > 0) strpool[poolptr++] = *s++;
++ g = makestring ();
++ }
++ return g;
++}
++
++int
++main ()
++{
++ strpool = __builtin_malloc (4000);
++ if (!strpool)
++ return 0;
++ asm volatile ("" : : : "memory");
++ volatile int r = loadpoolstrings (4000);
++ __builtin_free (strpool);
++ return 0;
++}
diff --git a/sources b/sources
index 353b05a..3af03f0 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (gcc-8.0.1-20180218.tar.xz) = a230134977b5137b19d7a40f8997da98d39e7653b3b009c68ed830d08fc5cbc76c0ba97ecc91501ba2bca899d46230f61881c8cc20277453d9ab06906f463cbd
+SHA512 (gcc-8.0.1-20180220.tar.xz) = 9bd9bf073086bbeef85e15bd7abeb8754a1f6abe9cb98a6826e4c147ed7407f38721357e79cd842d8803e55fac8b050ac5cd59ed19f1cd30b5133d67f271d7c2
SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) = 94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) = a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1
reply other threads:[~2026-06-29 12:27 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=178273607296.1.12478709430267515385.rpms-gcc-16819750d265@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