aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2022-06-14 11:10:13 +0200
committerRichard Biener <rguenther@suse.de>2022-06-14 12:52:49 +0200
commite07a876c07601e1f3a27420f7d055d20193c362c (patch)
tree62a5f28fc39366fd4d5c94cc457fa33e178abf9b
parent90467f0ad649d0817f9e034596a0fb85605b55af (diff)
downloadgcc-e07a876c07601e1f3a27420f7d055d20193c362c.zip
gcc-e07a876c07601e1f3a27420f7d055d20193c362c.tar.gz
gcc-e07a876c07601e1f3a27420f7d055d20193c362c.tar.bz2
tree-optimization/105946 - avoid accessing excess args from uninit diag
uninit diagnostics uses passing via reference and access attributes but that iterates over function type arguments which can in some cases appearantly outrun the actual arguments leading to ICEs. The following simply ignores not present arguments. 2022-06-14 Richard Biener <rguenther@suse.de> PR tree-optimization/105946 * tree-ssa-uninit.cc (maybe_warn_pass_by_reference): Do not look at arguments not specified in the function call.
-rw-r--r--gcc/tree-ssa-uninit.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-ssa-uninit.cc b/gcc/tree-ssa-uninit.cc
index b48fcf1..f326f17 100644
--- a/gcc/tree-ssa-uninit.cc
+++ b/gcc/tree-ssa-uninit.cc
@@ -797,6 +797,9 @@ maybe_warn_pass_by_reference (gcall *stmt, wlimits &wlims)
{
++argno;
+ if (argno > nargs)
+ break;
+
if (!POINTER_TYPE_P (argtype))
continue;