tree-optimization/103987 - guard DSE modref query
This adds a missing guard for a pointer to the DSE modref query, otherwise we can end up invoking APIs desired to only work on pointers on non-pointers when there are mismatches between declared and actual arguments of functions in the program. 2022-01-18 Richard Biener <rguenther@suse.de> PR tree-optimization/103987 * tree-ssa-dse.cc (dse_optimize_call): Properly guard modref query with a pointer check. * gcc.dg/torture/pr103987.c: New testcase.
This commit is contained in:
parent
4288b57aff
commit
3ed40db0f1
2 changed files with 18 additions and 2 deletions
13
gcc/testsuite/gcc.dg/torture/pr103987.c
Normal file
13
gcc/testsuite/gcc.dg/torture/pr103987.c
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
|
||||||
|
void foo();
|
||||||
|
|
||||||
|
void bar(int i)
|
||||||
|
{
|
||||||
|
foo (i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void foo(int *p)
|
||||||
|
{
|
||||||
|
*p = 0;
|
||||||
|
}
|
|
@ -43,6 +43,7 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "cgraph.h"
|
#include "cgraph.h"
|
||||||
#include "ipa-modref-tree.h"
|
#include "ipa-modref-tree.h"
|
||||||
#include "ipa-modref.h"
|
#include "ipa-modref.h"
|
||||||
|
#include "target.h"
|
||||||
|
|
||||||
/* This file implements dead store elimination.
|
/* This file implements dead store elimination.
|
||||||
|
|
||||||
|
@ -1190,10 +1191,12 @@ dse_optimize_call (gimple_stmt_iterator *gsi, sbitmap live_bytes)
|
||||||
{
|
{
|
||||||
tree arg = access_node.get_call_arg (stmt);
|
tree arg = access_node.get_call_arg (stmt);
|
||||||
|
|
||||||
if (!arg)
|
if (!arg || !POINTER_TYPE_P (TREE_TYPE (arg)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (integer_zerop (arg) && flag_delete_null_pointer_checks)
|
if (integer_zerop (arg)
|
||||||
|
&& !targetm.addr_space.zero_address_valid
|
||||||
|
(TYPE_ADDR_SPACE (TREE_TYPE (arg))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ao_ref ref;
|
ao_ref ref;
|
||||||
|
|
Loading…
Add table
Reference in a new issue