File tree Expand file tree Collapse file tree 15 files changed +70
-10
lines changed Expand file tree Collapse file tree 15 files changed +70
-10
lines changed Original file line number Diff line number Diff line change 11#! /bin/sh
22
3- gcc -Wno-macro-redefined -U __clang_major__ -D __GNUC__=4 -D __GNUC_MINOR__=9 -D __GNUC_PATCHLEVEL__=1 $*
3+ gcc -Wno-macro-redefined -U __clang_major__ -D __GNUC__=4 -D __GNUC_MINOR__=2 -D __GNUC_PATCHLEVEL__=1 " $@ "
44
Original file line number Diff line number Diff line change 1+ #! /bin/sh
2+
3+ gcc -Wno-macro-redefined -U __clang_major__ -D __GNUC__=5 -D __GNUC_MINOR__=0 -D __GNUC_PATCHLEVEL__=0 " $@ "
Original file line number Diff line number Diff line change 11#! /bin/sh
22
3- gcc -Wno-macro-redefined -U __clang_major__ -D __GNUC__=7 -D __GNUC_MINOR__=0 -D __GNUC_PATCHLEVEL__=0 $*
3+ gcc -Wno-macro-redefined -U __clang_major__ -D __GNUC__=7 -D __GNUC_MINOR__=0 -D __GNUC_PATCHLEVEL__=0 " $@ "
44
Original file line number Diff line number Diff line change 1- typedef double _Float64 ;
1+ // None of these types should be defined when emulating gcc-4:
22
3+ typedef float _Float32 ;
4+ typedef double _Float32x ;
5+ typedef double _Float64 ;
6+ typedef long double _Float64x ;
7+ typedef long double _Float128 ;
8+ typedef long double _Float128x ;
Original file line number Diff line number Diff line change 1+ // These types should *not* be provided when emulating gcc-5:
2+ typedef float _Float32 ;
3+ typedef double _Float32x ;
4+ typedef double _Float64 ;
5+ typedef long double _Float64x ;
6+ typedef long double _Float128x ;
7+
8+ // But this type should:
9+ _Float128 f128 ;
Original file line number Diff line number Diff line change 1- _Float64 some_var ;
2-
1+ // All these types should be provided when emulating gcc-7:
2+ _Float32 f32 ;
3+ _Float32x f32x ;
4+ _Float64 f64 ;
5+ _Float64x f64x ;
6+ _Float128 f128 ;
7+ _Float128x f128x ;
Original file line number Diff line number Diff line change 1+ CORE
2+ gcc-5.c
3+ --native-compiler ./fake-gcc-5
4+ ^EXIT=0$
5+ ^SIGNAL=0$
6+ --
7+ ^CONVERSION ERROR$
Original file line number Diff line number Diff line change 1- #if defined(__clang__ )
2- #elif defined(__GNUC__ )
1+ #if defined(__GNUC__ ) && !defined(__clang__ )
2+
3+ #include <features.h> // For __GNUC_PREREQ
4+
5+ #ifdef __x86_64__
6+ #define FLOAT128_MINOR_VERSION 3
7+ #else
8+ #define FLOAT128_MINOR_VERSION 5
9+ #endif
10+
311#if __GNUC__ >= 7
412#define HAS_FLOATN
13+ #elif __GNUC_PREREQ (4 , FLOAT128_MINOR_VERSION )
14+ #define HAS_FLOAT128
515#endif
16+
617#endif
718
819#ifndef HAS_FLOATN
920typedef float _Float32 ;
1021typedef double _Float32x ;
1122typedef double _Float64 ;
1223typedef long double _Float64x ;
13- typedef long double _Float128 ;
1424typedef long double _Float128x ;
1525#endif
1626
27+ #if !defined(HAS_FLOATN ) && !defined(HAS_FLOAT128 )
28+ typedef long double _Float128 ;
29+ #endif
30+
1731int main (int argc , char * * argv ) {
1832}
Original file line number Diff line number Diff line change @@ -76,6 +76,7 @@ bool ansi_c_languaget::parse(
7676 ansi_c_parser.set_message_handler (get_message_handler ());
7777 ansi_c_parser.for_has_scope =config.ansi_c .for_has_scope ;
7878 ansi_c_parser.ts_18661_3_Floatn_types =config.ansi_c .ts_18661_3_Floatn_types ;
79+ ansi_c_parser.Float128_type = config.ansi_c .Float128_type ;
7980 ansi_c_parser.cpp98 =false ; // it's not C++
8081 ansi_c_parser.cpp11 =false ; // it's not C++
8182 ansi_c_parser.mode =config.ansi_c .mode ;
Original file line number Diff line number Diff line change @@ -36,7 +36,8 @@ class ansi_c_parsert:public parsert
3636 cpp98 (false ),
3737 cpp11 (false ),
3838 for_has_scope (false ),
39- ts_18661_3_Floatn_types(false )
39+ ts_18661_3_Floatn_types(false ),
40+ Float128_type(false )
4041 {
4142 }
4243
@@ -81,6 +82,9 @@ class ansi_c_parsert:public parsert
8182 // ISO/IEC TS 18661-3:2015
8283 bool ts_18661_3_Floatn_types;
8384
85+ // Does the compiler version emulated provide _Float128?
86+ bool Float128_type;
87+
8488 typedef ansi_c_identifiert identifiert;
8589 typedef ansi_c_scopet scopet;
8690
You can’t perform that action at this time.
0 commit comments