The 10/05/2020 17:28, Szabolcs Nagy via Gcc-patches wrote: > The 10/05/2020 12:52, Vaseeharan Vinayagamoorthy wrote: > > Hi, > > > > After this patch, I am noticing that some glibc crypto tests get stuck in > > scanf which goes into busy loop. > > > > My build/host/target setup is: > > Build: aarch64-none-linux-gnu > > Host: aarch64-none-linux-gnu > > Target: aarch64-none-linux-gnu > > i can reproduce this on aarch64, i'm looking at it: > > if i compile glibc with gcc trunk after this commit i see > > $ ./testrun.sh crypt/cert < $glibcsrc/crypt/cert.input > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > K: 0000000000000000 P: 0000000000000000 C: 0000000000000000 Encrypt FAIL > ... > > it just keeps printing this. > > same test binary with glibc code compiled with an > older gcc works, so something in glibc gets miscompiled. > > i will have to do more digging to figure out what.
minimal reproducer: #include <stdio.h> int main() { int r,t; r = sscanf("01", "%2x", &t); printf("scanf: %d %02x\n", r, t); return 0; } should print scanf: 1 01 but when glibc is compiled with gcc trunk on aarch64 it prints scanf: 0 00 i will continute the debugging from here tomorrow. > > On 27/09/2020, 22:46, "Gcc-patches on behalf of Jan Hubicka" > > <gcc-patches-boun...@gcc.gnu.org on behalf of hubi...@ucw.cz> wrote: > > > > Hi, > > this patch fixes a pasto in modref_summary::useful_p that made > > ipa-modref to give up on tracking stores when all load info got lost. > > > > Bootstrapped/regtested x86_64-linux, comitted. > > > > gcc/ChangeLog: > > > > 2020-09-27 Jan Hubicka <hubi...@ucw.cz> > > > > * ipa-modref.c (modref_summary::useful_p): Fix testing of stores. > > > > diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c > > index 728c6c1523d..6225552e41a 100644 > > --- a/gcc/ipa-modref.c > > +++ b/gcc/ipa-modref.c > > @@ -135,7 +135,7 @@ modref_summary::useful_p (int ecf_flags) > > return true; > > if (ecf_flags & ECF_PURE) > > return false; > > - return stores && !loads->every_base; > > + return stores && !stores->every_base; > > } > > > > /* Dump A to OUT. */ > >