Loading...
Searching...
No Matches
Go to the documentation of this file.
4#define FL_STRINGIFY2(x) #x
5#define FL_STRINGIFY(x) FL_STRINGIFY2(x)
9 #define FL_DISABLE_WARNING_PUSH _Pragma("clang diagnostic push")
10 #define FL_DISABLE_WARNING_POP _Pragma("clang diagnostic pop")
12 #define FL_DISABLE_WARNING(warning) _Pragma(FL_STRINGIFY(clang diagnostic ignored "-W" #warning))
14#elif defined(__GNUC__) && (__GNUC__*100 + __GNUC_MINOR__) >= 406
15 #define FL_DISABLE_WARNING_PUSH _Pragma("GCC diagnostic push")
16 #define FL_DISABLE_WARNING_POP _Pragma("GCC diagnostic pop")
18 #define FL_DISABLE_WARNING(warning) _Pragma(FL_STRINGIFY(GCC diagnostic ignored "-W" #warning))
20 #define FL_DISABLE_WARNING_PUSH
21 #define FL_DISABLE_WARNING_POP
22 #define FL_DISABLE_WARNING(warning)
28 #define FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS \
29 FL_DISABLE_WARNING(global-constructors)
30 #define FL_DISABLE_WARNING_SELF_ASSIGN_OVERLOADED \
31 FL_DISABLE_WARNING(self-assign-overloaded)
33 #define FL_DISABLE_FORMAT_TRUNCATION
34 #define FL_DISABLE_WARNING_NULL_DEREFERENCE FL_DISABLE_WARNING(null-dereference)
35 #define FL_DISABLE_WARNING_IMPLICIT_FALLTHROUGH
36 #define FL_DISABLE_WARNING_UNUSED_PARAMETER
37 #define FL_DISABLE_WARNING_RETURN_TYPE
38 #define FL_DISABLE_WARNING_IMPLICIT_INT_CONVERSION FL_DISABLE_WARNING(implicit-int-conversion)
39 #define FL_DISABLE_WARNING_FLOAT_CONVERSION FL_DISABLE_WARNING(float-conversion)
40 #define FL_DISABLE_WARNING_SIGN_CONVERSION FL_DISABLE_WARNING(sign-conversion)
41 #define FL_DISABLE_WARNING_SHORTEN_64_TO_32 FL_DISABLE_WARNING(shorten-64-to-32)
42#elif defined(__GNUC__) && (__GNUC__*100 + __GNUC_MINOR__) >= 406
44 #define FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS
46 #define FL_DISABLE_WARNING_SELF_ASSIGN_OVERLOADED
48 #define FL_DISABLE_FORMAT_TRUNCATION \
49 FL_DISABLE_WARNING(format-truncation)
50 #define FL_DISABLE_WARNING_NULL_DEREFERENCE
51 #define FL_DISABLE_WARNING_UNUSED_PARAMETER \
52 FL_DISABLE_WARNING(unused-parameter)
53 #define FL_DISABLE_WARNING_RETURN_TYPE \
54 FL_DISABLE_WARNING(return-type)
57 #if (__GNUC__*100 + __GNUC_MINOR__) >= 700
58 #define FL_DISABLE_WARNING_IMPLICIT_FALLTHROUGH FL_DISABLE_WARNING(implicit-fallthrough)
60 #define FL_DISABLE_WARNING_IMPLICIT_FALLTHROUGH
63 #define FL_DISABLE_WARNING_FLOAT_CONVERSION
64 #define FL_DISABLE_WARNING_SIGN_CONVERSION
65 #define FL_DISABLE_WARNING_IMPLICIT_INT_CONVERSION
67 #define FL_DISABLE_WARNING_SHORTEN_64_TO_32
69 #define FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS
70 #define FL_DISABLE_WARNING_SELF_ASSIGN_OVERLOADED
71 #define FL_DISABLE_FORMAT_TRUNCATION
72 #define FL_DISABLE_WARNING_NULL_DEREFERENCE
73 #define FL_DISABLE_WARNING_UNUSED_PARAMETER
74 #define FL_DISABLE_WARNING_RETURN_TYPE
75 #define FL_DISABLE_WARNING_IMPLICIT_INT_CONVERSION
76 #define FL_DISABLE_WARNING_FLOAT_CONVERSION
77 #define FL_DISABLE_WARNING_SIGN_CONVERSION
78 #define FL_DISABLE_WARNING_SHORTEN_64_TO_32
85 #define FL_FAST_MATH_BEGIN \
86 _Pragma("clang diagnostic push") \
87 _Pragma("STDC FP_CONTRACT ON")
89 #define FL_FAST_MATH_END _Pragma("clang diagnostic pop")
91#elif defined(__GNUC__)
92 #define FL_FAST_MATH_BEGIN \
93 _Pragma("GCC push_options") \
94 _Pragma("GCC optimize (\"fast-math\")") \
95 _Pragma("GCC optimize (\"tree-vectorize\")") \
96 _Pragma("GCC optimize (\"unroll-loops\")")
98 #define FL_FAST_MATH_END _Pragma("GCC pop_options")
100#elif defined(_MSC_VER)
101 #define FL_FAST_MATH_BEGIN __pragma(float_control(precise, off))
102 #define FL_FAST_MATH_END __pragma(float_control(precise, on))
104 #define FL_FAST_MATH_BEGIN
105 #define FL_FAST_MATH_END
109#if defined(__clang__)
110 #define FL_OPTIMIZATION_LEVEL_O3_BEGIN \
111 _Pragma("clang diagnostic push")
113 #define FL_OPTIMIZATION_LEVEL_O3_END _Pragma("clang diagnostic pop")
115#elif defined(__GNUC__)
116 #define FL_OPTIMIZATION_LEVEL_O3_BEGIN \
117 _Pragma("GCC push_options") \
118 _Pragma("GCC optimize (\"O3\")")
120 #define FL_OPTIMIZATION_LEVEL_O3_END _Pragma("GCC pop_options")
122 #define FL_OPTIMIZATION_LEVEL_O3_BEGIN
123 #define FL_OPTIMIZATION_LEVEL_O3_END
127#if defined(__clang__)
128 #define FL_OPTIMIZATION_LEVEL_O0_BEGIN \
129 _Pragma("clang diagnostic push")
131 #define FL_OPTIMIZATION_LEVEL_O0_END _Pragma("clang diagnostic pop")
133#elif defined(__GNUC__)
134 #define FL_OPTIMIZATION_LEVEL_O0_BEGIN \
135 _Pragma("GCC push_options") \
136 _Pragma("GCC optimize (\"O0\")")
138 #define FL_OPTIMIZATION_LEVEL_O0_END _Pragma("GCC pop_options")
140 #define FL_OPTIMIZATION_LEVEL_O0_BEGIN
141 #define FL_OPTIMIZATION_LEVEL_O0_END
145#define FL_WEAK __attribute__((weak))