On Wed, Feb 26, 2020 at 11:42:54AM +0100, Jan Hubicka wrote: > 2020-02-26 Jan Hubicka <hubi...@ucw.cz> > > PR middle-end/92152 > * alias.c (ends_tbaa_access_path_p): Break out from ... > (component_uses_parent_alias_set_from): ... here. > * alias.h (ends_tbaa_access_path_p): Declare. > * tree-ssa-alias.c (access_path_may_continue_p): Break out from ...; > handle trailing arrays past end of tbaa access path. > (aliasing_component_refs_p): ... here; likewise. > (nonoverlapping_refs_since_match_p): Track TBAA segment of the access > path; disambiguate also past end of it. > (nonoverlapping_component_refs_p): Use only TBAA segment of the access > path. > > gcc/testsuite/ChangeLog: > > 2020-02-26 Jan Hubicka <hubi...@ucw.cz> > > * gcc.dg/tree-ssa/alias-access-path-12.c: New testcase. > * g++.dg/torture/pr92152.C: New testcase.
This test FAILs on 32-bit targets: .../gcc/testsuite/g++.dg/torture/pr92152.C: In constructor 'HPHP::jit::VregSet::VregSet()': .../gcc/testsuite/g++.dg/torture/pr92152.C:17:47: warning: unsigned conversion from 'long long int' to 'uint64_t' {aka 'long unsigned int'} changes value from '281474976710656' to '0' [-Woverflow] The fix is obvious, use unsigned long long which is 64-bit on all current targets, and use real size_t. Fixed thusly, tested on x86_64-linux -m32/-m64 with both the above changes reverted (where it now has only execution FAILs at some -O* levels on both arches, while previously it also FAILed at all optimization levels with -m32) and on current trunk (where previously it FAILed similarly and now it passes), committed to trunk as obvious. 2020-02-28 Jakub Jelinek <ja...@redhat.com> PR middle-end/92152 * g++.dg/torture/pr92152.C (size_t): Use decltype (sizeof (0)) instead of hardcoding unsigned long. (uint64_t): Use unsigned long long instead of unsigned long. --- gcc/testsuite/g++.dg/torture/pr92152.C.jj 2020-02-28 09:33:40.656403598 +0100 +++ gcc/testsuite/g++.dg/torture/pr92152.C 2020-02-28 09:39:42.047992711 +0100 @@ -1,6 +1,6 @@ /* { dg-do run } */ -using size_t = unsigned long; -using uint64_t = unsigned long; +using size_t = decltype (sizeof (0)); +using uint64_t = unsigned long long; namespace HPHP { Jakub