https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115278
Jorn Wolfgang Rennecke <amylaar at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amylaar at gcc dot gnu.org --- Comment #12 from Jorn Wolfgang Rennecke <amylaar at gcc dot gnu.org> --- On a newlib based toolchain with gcc 14.2, the test fails: Excess errors: /home/amylaar/riscy-ip/gcc14/gcc/trunk/gcc/gcc/testsuite/g++.dg/vect/pr115278.cc:24:28: error: invalid conversion from 'volatile unsigned int*' to 'volatile uint32_t*' {aka 'volatile long unsigned int*'} [-fpermissive] g++.dg/vect/pr115278.cc -std=c++14 : dump file does not exist excerpt from the preprocessed file: # 37 "/home/amylaar/riscy-ip/gcc14/gcc/trunk/gcc/newlib/libc/include/machine/_default_types.h" 3 4 extern "C" { ... # 77 "/home/amylaar/riscy-ip/gcc14/gcc/trunk/gcc/newlib/libc/include/machine/_default_types.h" 3 4 typedef long int __int32_t; typedef long unsigned int __uint32_t; ... # 15 "/home/amylaar/riscy-ip/gcc14/gcc/trunk/gcc/newlib/libc/include/sys/_stdint.h" 3 4 extern "C" { ... typedef __uint32_t uint32_t ; I tried to add -fpermissive, but that still gives a warning that ends up as excess errors. There doesn't seem to be any specific option to suppress this warning, just -w. So, should we add: // { dg-additional-options "-fpermissive -w" { target newlib } } or should we do something like: Index: g++.dg/vect/pr115278.cc =================================================================== --- g++.dg/vect/pr115278.cc (revision 6673) +++ g++.dg/vect/pr115278.cc (working copy) @@ -1,6 +1,7 @@ // { dg-do compile } // { dg-require-effective-target c++11 } // { dg-additional-options "-fdump-tree-optimized" } +// { dg-additional-options "-fpermissive" { target newlib } } #include <cstdint> @@ -21,7 +22,7 @@ BitfieldStructUnion(uint32_t value_low, uint32_t value_high) : value_low(value_low), value_high(value_high) {} }; -volatile uint32_t *WRITE = (volatile unsigned*)0x42; +volatile uint32_t *WRITE = (volatile unsigned*)0x42; // { dg-warning "invalid conversion" { target newlib } } void buggy() { for (int i = 0; i < runs; i++) {