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

Reply via email to