aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2022-01-03 13:47:53 +0100
committerJakub Jelinek <jakub@redhat.com>2022-01-03 13:47:53 +0100
commit91031bffa42fdea3c985727d042cd1882a64be9c (patch)
tree77c152759b6dbb0787713ed52737e8461731a4f7 /gcc/tree-ssa-structalias.c
parent814c221c9eb350dc636556738f37aa73ebba8fdc (diff)
downloadgcc-91031bffa42fdea3c985727d042cd1882a64be9c.zip
gcc-91031bffa42fdea3c985727d042cd1882a64be9c.tar.gz
gcc-91031bffa42fdea3c985727d042cd1882a64be9c.tar.bz2
symtab: Fold &a == &b to 0 if folding_initializer [PR94716]
On Thu, Dec 09, 2021 at 06:09:12PM -0500, Jason Merrill wrote: > For the more general comparison of decls like your a != b example above I > think clang is in the right; in manifestly constant-evaluated context > (folding_initializer) we should return that they are unequal and prevent a > later alias declaration, like we do for comparison to 0 in > maybe_nonzero_address. It's possible that this gives a wrong answer based > on something in another translation unit, but that's unlikely, and taking > that chance seems better than rejecting code that needs a constant answer. I agree. This is an incremental patch to do that. 2022-01-03 Jakub Jelinek <jakub@redhat.com> PR c++/94716 gcc/ * symtab.c: Include fold-const.h. (symtab_node::equal_address_to): If folding_initializer is true, handle it like memory_accessed. Simplify. gcc/testsuite/ * gcc.dg/init-compare-1.c: New test. * g++.dg/cpp0x/constexpr-compare1.C: New test. * g++.dg/cpp1y/constexpr-94716.C: New test. * g++.dg/cpp1z/constexpr-compare1.C: New test.
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
0 files changed, 0 insertions, 0 deletions