aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2016-12-02 12:20:42 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2016-12-02 12:20:42 +0000
commitcc9037a6e93f50efae6494a849c09a7ffa4b253f (patch)
treeb3b2507ea996745e577a332a6189812f7b13b5d2
parentefa68ffca9f9032e795ae84c5642038bd613c253 (diff)
downloadgcc-cc9037a6e93f50efae6494a849c09a7ffa4b253f.zip
gcc-cc9037a6e93f50efae6494a849c09a7ffa4b253f.tar.gz
gcc-cc9037a6e93f50efae6494a849c09a7ffa4b253f.tar.bz2
re PR middle-end/78328 (wrong wording for unbounded alloc case in -Walloca-larger-than note)
PR middle-end/78328 * gimple-ssa-warn-alloca.c (alloca_call_type): Handle VR_ANTI_RANGE. From-SVN: r243174
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple-ssa-warn-alloca.c2
-rw-r--r--gcc/testsuite/gcc.dg/Walloca-12.c11
3 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 03387cf..afac973 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-12-02 Aldy Hernandez <aldyh@redhat.com>
+
+ PR middle-end/78328
+ * gimple-ssa-warn-alloca.c (alloca_call_type): Handle
+ VR_ANTI_RANGE.
+
2016-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/s390.c (s390_save_gprs_to_fprs): Fix RTL sharing
diff --git a/gcc/gimple-ssa-warn-alloca.c b/gcc/gimple-ssa-warn-alloca.c
index e75f2fa..ae379f9 100644
--- a/gcc/gimple-ssa-warn-alloca.c
+++ b/gcc/gimple-ssa-warn-alloca.c
@@ -339,6 +339,8 @@ alloca_call_type (gimple *stmt, bool is_vla, tree *invalid_casted_type)
{
// Fall through.
}
+ else if (range_type == VR_ANTI_RANGE)
+ return alloca_type_and_limit (ALLOCA_UNBOUNDED);
else if (range_type != VR_VARYING)
return
alloca_type_and_limit (ALLOCA_BOUND_MAYBE_LARGE, max);
diff --git a/gcc/testsuite/gcc.dg/Walloca-12.c b/gcc/testsuite/gcc.dg/Walloca-12.c
new file mode 100644
index 0000000..5d71cda
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Walloca-12.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-Walloca-larger-than=128 -O2" } */
+
+void f (void*);
+
+void g (unsigned int n)
+{
+ if (n == 7)
+ n = 11;
+ f (__builtin_alloca (n)); /* { dg-warning "unbounded use of 'alloca'" } */
+}