On 10 October 2016 at 11:53, Richard Biener <richard.guent...@gmail.com> wrote: > On Sun, Sep 25, 2016 at 11:08 AM, Tom de Vries <tom_devr...@mentor.com> wrote: >> Hi, >> >> this patch fixes PR77558, an ice-on-invalid-code 6/7 regression. >> >> The fix for PR71602 introduced the invalid-code test-case >> c-c++-common/va-arg-va-list-type.c: >> ... >> __builtin_va_list *pap; >> >> void >> fn1 (void) >> { >> __builtin_va_arg (pap, double); /* { dg-error "first argument to 'va_arg' >> not of type 'va_list'" } */ >> } >> ... >> >> The test-case passes for x86_64, but fails for aarch64 and ICEs for arm. >> >> The ICE happens because the patch for PR71602 is incomplete. The patch tries >> to be more strict about returning a canonical va_list only for actual >> va_lists, but doesn't implement this for structure va_list types, such as we >> have for arm, aarch64 and alpha. >> >> This patch adds the missing part, and fixes the ICE. >> >> OK for trunk, 6-branch? > > Ok. >
Hi Tom, It seems your patch broke the gcc-6 branch. I'm seeing build failures (arm*/aarch64* targets): /tmp/4929309_2.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc2/./gcc/xgcc -B/tmp/4929309_2.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm -none-linux-gnueabi/gcc2/./gcc/ -B/tmp/4929309_2.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-linux-gnueabi/bin/ -B/tmp/4929309_2.tmpdir/aci-gcc-fsf/buil ds/gcc-fsf-gccsrc/tools/arm-none-linux-gnueabi/lib/ -isystem /tmp/4929309_2.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-linux-gnueabi/include -isystem / tmp/4929309_2.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-linux-gnueabi/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wal l -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -fno-inline -g -DIN_LIBGCC2 -fbuilding-lib gcc -fno-stack-protector -fPIC -fno-inline -I. -I. -I../.././gcc -I/tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc -I/tmp/4929309_2.tmpdir/aci-gcc -fsf/sources/gcc-fsf/gccsrc/libgcc/. -I/tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/../gcc -I/tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gc csrc/libgcc/../include -DHAVE_CC_TLS -o _gcov_execlp.o -MT _gcov_execlp.o -MD -MP -MF _gcov_execlp.dep -DL_gcov_execlp -c /tmp/4929309_2.tmpdir/aci-gcc-fsf/source s/gcc-fsf/gccsrc/libgcc/libgcov-interface.c In file included from /tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/../gcc/tsystem.h:84:0, from /tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/libgcov.h:41, from /tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/libgcov-interface.c:26: /tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/libgcov-interface.c: In function '__gcov_execl': /tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/libgcov-interface.c:204:22: error: first argument to 'va_arg' not of type 'va_list' while (va_arg (ap, char *)) ^ /tmp/4929309_2.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/libgcov-interface.c:211:27: error: first argument to 'va_arg' not of type 'va_list' args[i] = va_arg (aq, char *); ^ make[2]: *** [_gcov_execl.o] Error 1 Christophe > Richard. > >> Thanks, >> - Tom