FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
compiler_clang.hpp
Go to the documentation of this file.
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
16#if !defined(FEAT_COMPILER) && defined(__clang__)
17
18// compute linear sortable clang version
19#define FEAT_COMPILER_CLANG (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
20
21// define compiler string
22#define FEAT_COMPILER ("clang " __clang_version__)
23
24#if(__clang_major__ >= 15)
25#define FEAT_DISABLE_WARNINGS _Pragma("clang diagnostic push") \
26 _Pragma("clang diagnostic ignored \"-Wall\"")
27 _Pragma("clang diagnostic ignored \"-Wunused-variable\"") \
28 _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \
29 _Pragma("clang diagnostic ignored \"-Wsign-compare\"") \
30 _Pragma("clang diagnostic ignored \"-Wconversion\"") \
31 _Pragma("clang diagnostic ignored \"-Wmismatched-tags\"") \
32 _Pragma("clang diagnostic ignored \"-Wignored-qualifiers\"") \
33 _Pragma("clang diagnostic ignored \"-Wcast-qual\"") \
34 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
35 _Pragma("clang diagnostic ignored \"-Wshadow\"") \
36 _Pragma("clang diagnostic ignored \"-Wundef\"") \
37 _Pragma("clang diagnostic ignored \"-Wimplicit-fallthrough\"") \
38 _Pragma("clang diagnostic ignored \"-Wcomma\"") \
39 _Pragma("clang diagnostic ignored \"-Wextra-semi\"") \
40 _Pragma("clang diagnostic ignored \"-Wextra-semi-stmt\"") \
41 _Pragma("clang diagnostic ignored \"-Wc++98-compat-extra-semi\"") \
42 _Pragma("clang diagnostic ignored \"-Wdeprecated-builtins\"") \
43 _Pragma("clang diagnostic ignored \"-Wsign-conversion\"")
44#elif(__clang_major__ >= 8)
45#define FEAT_DISABLE_WARNINGS _Pragma("clang diagnostic push") \
46 _Pragma("clang diagnostic ignored \"-Wunused-variable\"") \
47 _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \
48 _Pragma("clang diagnostic ignored \"-Wsign-compare\"") \
49 _Pragma("clang diagnostic ignored \"-Wconversion\"") \
50 _Pragma("clang diagnostic ignored \"-Wmismatched-tags\"") \
51 _Pragma("clang diagnostic ignored \"-Wignored-qualifiers\"") \
52 _Pragma("clang diagnostic ignored \"-Wcast-qual\"") \
53 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
54 _Pragma("clang diagnostic ignored \"-Wshadow\"") \
55 _Pragma("clang diagnostic ignored \"-Wundef\"") \
56 _Pragma("clang diagnostic ignored \"-Wimplicit-fallthrough\"") \
57 _Pragma("clang diagnostic ignored \"-Wcomma\"") \
58 _Pragma("clang diagnostic ignored \"-Wextra-semi\"") \
59 _Pragma("clang diagnostic ignored \"-Wextra-semi-stmt\"") \
60 _Pragma("clang diagnostic ignored \"-Wc++98-compat-extra-semi\"")
61#elif(__clang_major__ >= 4)
62#define FEAT_DISABLE_WARNINGS _Pragma("clang diagnostic push") \
63 _Pragma("clang diagnostic ignored \"-Wunused-variable\"") \
64 _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \
65 _Pragma("clang diagnostic ignored \"-Wsign-compare\"") \
66 _Pragma("clang diagnostic ignored \"-Wconversion\"") \
67 _Pragma("clang diagnostic ignored \"-Wmismatched-tags\"") \
68 _Pragma("clang diagnostic ignored \"-Wignored-qualifiers\"") \
69 _Pragma("clang diagnostic ignored \"-Wcast-qual\"") \
70 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
71 _Pragma("clang diagnostic ignored \"-Wshadow\"") \
72 _Pragma("clang diagnostic ignored \"-Wundef\"") \
73 _Pragma("clang diagnostic ignored \"-Wimplicit-fallthrough\"") \
74 _Pragma("clang diagnostic ignored \"-Wcomma\"")
75#else
76#define FEAT_DISABLE_WARNINGS _Pragma("clang diagnostic push") \
77 _Pragma("clang diagnostic ignored \"-Wunused-variable\"") \
78 _Pragma("clang diagnostic ignored \"-Wconversion\"") \
79 _Pragma("clang diagnostic ignored \"-Wmismatched-tags\"") \
80 _Pragma("clang diagnostic ignored \"-Wignored-qualifiers\"")
81#endif
82
83#define FEAT_RESTORE_WARNINGS _Pragma("clang diagnostic pop")
84
85#define FEAT_PRAGMA_IVDEP _Pragma("omp simd")
86
87// define the noinline specifier
88#define NOINLINE __attribute__((noinline))
89
90#define FORCE_INLINE inline __attribute__((always_inline))
91
92#endif // !defined(FEAT_COMPILER) && defined(__clang__)