File tree Expand file tree Collapse file tree 3 files changed +33
-3
lines changed
regression/cbmc/ts18661_typedefs Expand file tree Collapse file tree 3 files changed +33
-3
lines changed Original file line number Diff line number Diff line change 1+ typedef float _Float32 ;
2+ typedef double _Float32x ;
3+ typedef double _Float64 ;
4+ typedef long double _Float64x ;
5+ typedef long double _Float128 ;
6+ typedef long double _Float128x ;
7+
8+ int main (int argc , char * * argv ) {
9+ }
Original file line number Diff line number Diff line change 1+ CORE
2+ main.c
3+
4+ ^EXIT=0$
5+ ^SIGNAL=0$
6+ ^VERIFICATION SUCCESSFUL$
7+ --
8+ ^warning: ignoring
Original file line number Diff line number Diff line change @@ -344,9 +344,22 @@ void ansi_c_convert_typet::write(typet &type)
344344 gcc_float64_cnt+gcc_float64x_cnt+
345345 gcc_float128_cnt+gcc_float128x_cnt>=2 )
346346 {
347- error ().source_location =source_location;
348- error () << " conflicting type modifiers" << eom;
349- throw 0 ;
347+ // Temporary workaround for our glibc versions that try to define TS 18661
348+ // types (for example, typedef float _Float32). This can be removed once
349+ // upgrade cbmc's GCC support to at least 7.0 (when glibc will expect us
350+ // to provide these types natively), or disable parsing them ourselves
351+ // when our preprocessor stage claims support <7.0.
352+ if (c_storage_spec.is_typedef )
353+ {
354+ warning ().source_location = source_location;
355+ warning () << " ignoring typedef for TS 18661 (_FloatNNx) type. If you need these, try using goto-cc instead." << eom;
356+ }
357+ else
358+ {
359+ error ().source_location =source_location;
360+ error () << " conflicting type modifiers" << eom;
361+ throw 0 ;
362+ }
350363 }
351364
352365 // _not_ the same as float, double, long double
You can’t perform that action at this time.
0 commit comments