Skip to content

Commit b815a39

Browse files
authored
[Flang] Move non-common headers to FortranSupport (#124416)
Move non-common files from FortranCommon to FortranSupport (analogous to LLVMSupport) such that * declarations and definitions that are only used by the Flang compiler, but not by the runtime, are moved to FortranSupport * declarations and definitions that are used by both ("common"), the compiler and the runtime, remain in FortranCommon * generic STL-like/ADT/utility classes and algorithms remain in FortranCommon This allows a for cleaner separation between compiler and runtime components, which are compiled differently. For instance, runtime sources must not use STL's `<optional>` which causes problems with CUDA support. Instead, the surrogate header `flang/Common/optional.h` must be used. This PR fixes this for `fast-int-sel.h`. Declarations in include/Runtime are also used by both, but are header-only. `ISO_Fortran_binding_wrapper.h`, a header used by compiler and runtime, is also moved into FortranCommon.
1 parent f48d9e9 commit b815a39

File tree

133 files changed

+268
-256
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+268
-256
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
/*===-- include/flang/ISO_Fortran_binding_wrapper.h ---------------*- C++ -*-===
1+
/*===-- include/flang/Common/ISO_Fortran_binding_wrapper.h --------*- C++ -*-===
22
*
33
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44
* See https://llvm.org/LICENSE.txt for license information.
55
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
*
7-
* ===-----------------------------------------------------------------------===
8-
*/
7+
*===----------------------------------------------------------------------===*/
98

10-
#ifndef FORTRAN_ISO_FORTRAN_BINDING_WRAPPER_H_
11-
#define FORTRAN_ISO_FORTRAN_BINDING_WRAPPER_H_
9+
#ifndef FORTRAN_COMMON_ISO_FORTRAN_BINDING_WRAPPER_H_
10+
#define FORTRAN_COMMON_ISO_FORTRAN_BINDING_WRAPPER_H_
1211

1312
/* A thin wrapper around flang/include/ISO_Fortran_binding.h
1413
* This header file must be included when ISO_Fortran_binding.h
@@ -23,17 +22,17 @@
2322

2423
/* clang-format off */
2524
#include <stddef.h>
26-
#include "Common/api-attrs.h"
25+
#include "api-attrs.h"
2726
#ifdef __cplusplus
2827
namespace Fortran {
2928
namespace ISO {
3029
#define FORTRAN_ISO_NAMESPACE_ ::Fortran::ISO
3130
#endif /* __cplusplus */
32-
#include "ISO_Fortran_binding.h"
31+
#include "flang/ISO_Fortran_binding.h"
3332
#ifdef __cplusplus
3433
} // namespace ISO
3534
} // namespace Fortran
3635
#endif /* __cplusplus */
3736
/* clang-format on */
3837

39-
#endif /* FORTRAN_ISO_FORTRAN_BINDING_WRAPPER_H_ */
38+
#endif /* FORTRAN_COMMON_ISO_FORTRAN_BINDING_WRAPPER_H_ */

flang/include/flang/Common/erfc-scaled.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
#ifndef FORTRAN_COMMON_ERFC_SCALED_H_
1010
#define FORTRAN_COMMON_ERFC_SCALED_H_
1111

12+
#include <cmath>
13+
#include <limits>
14+
1215
namespace Fortran::common {
1316
template <typename T> inline T ErfcScaled(T arg) {
1417
// Coefficients for approximation to erfc in the first interval.

flang/include/flang/Common/fast-int-set.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#ifndef FORTRAN_COMMON_FAST_INT_SET_H_
2525
#define FORTRAN_COMMON_FAST_INT_SET_H_
2626

27-
#include <optional>
27+
#include "optional.h"
2828

2929
namespace Fortran::common {
3030

@@ -83,9 +83,9 @@ template <int N> class FastIntSet {
8383
}
8484
}
8585

86-
std::optional<int> PopValue() {
86+
optional<int> PopValue() {
8787
if (IsEmpty()) {
88-
return std::nullopt;
88+
return nullopt;
8989
} else {
9090
return value_[--size_];
9191
}

flang/include/flang/Common/format.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
#ifndef FORTRAN_COMMON_FORMAT_H_
1010
#define FORTRAN_COMMON_FORMAT_H_
1111

12+
#include "Fortran-consts.h"
1213
#include "enum-set.h"
13-
#include "flang/Common/Fortran-consts.h"
1414
#include <cstring>
1515

1616
// Define a FormatValidator class template to validate a format expression

flang/include/flang/Common/optional.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#ifndef FORTRAN_COMMON_OPTIONAL_H
2727
#define FORTRAN_COMMON_OPTIONAL_H
2828

29-
#include "flang/Common/api-attrs.h"
29+
#include "api-attrs.h"
3030
#include <optional>
3131
#include <type_traits>
3232

flang/include/flang/Common/real.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// The various representations are distinguished by their binary precisions
1414
// (number of explicit significand bits and any implicit MSB in the fraction).
1515

16-
#include "flang/Common/api-attrs.h"
16+
#include "api-attrs.h"
1717
#include <cinttypes>
1818

1919
namespace Fortran::common {

flang/include/flang/Common/reference-wrapper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#ifndef FORTRAN_COMMON_REFERENCE_WRAPPER_H
2626
#define FORTRAN_COMMON_REFERENCE_WRAPPER_H
2727

28-
#include "flang/Common/api-attrs.h"
28+
#include "api-attrs.h"
2929
#include <functional>
3030
#include <type_traits>
3131

flang/include/flang/Common/restorer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
#ifndef FORTRAN_COMMON_RESTORER_H_
2020
#define FORTRAN_COMMON_RESTORER_H_
21+
#include "api-attrs.h"
2122
#include "idioms.h"
22-
#include "flang/Common/api-attrs.h"
2323
namespace Fortran::common {
2424
template <typename A> class Restorer {
2525
public:

flang/include/flang/Common/target-rounding.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
#ifndef FORTRAN_COMMON_TARGET_ROUNDING_H_
1010
#define FORTRAN_COMMON_TARGET_ROUNDING_H_
1111

12-
#include "flang/Common/Fortran-consts.h"
13-
#include "flang/Common/enum-set.h"
12+
#include "Fortran-consts.h"
13+
#include "enum-set.h"
1414

1515
namespace Fortran::common {
1616

flang/include/flang/Common/template.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
#ifndef FORTRAN_COMMON_TEMPLATE_H_
1010
#define FORTRAN_COMMON_TEMPLATE_H_
1111

12+
#include "idioms.h"
1213
#include "variant.h"
13-
#include "flang/Common/idioms.h"
1414
#include <functional>
1515
#include <optional>
1616
#include <tuple>

flang/include/flang/Common/uint128.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
#define AVOID_NATIVE_UINT128_T 0
2020
#endif
2121

22+
#include "api-attrs.h"
2223
#include "leading-zero-bit-count.h"
23-
#include "flang/Common/api-attrs.h"
2424
#include <cstdint>
2525
#include <type_traits>
2626

flang/include/flang/Common/visit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
#ifndef FORTRAN_COMMON_VISIT_H_
2222
#define FORTRAN_COMMON_VISIT_H_
2323

24+
#include "api-attrs.h"
2425
#include "variant.h"
25-
#include "flang/Common/api-attrs.h"
2626
#include <type_traits>
2727

2828
namespace Fortran::common {

flang/include/flang/Evaluate/call.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
#include "constant.h"
1414
#include "formatting.h"
1515
#include "type.h"
16-
#include "flang/Common/Fortran.h"
1716
#include "flang/Common/indirection.h"
1817
#include "flang/Common/reference.h"
1918
#include "flang/Parser/char-block.h"
2019
#include "flang/Semantics/attr.h"
20+
#include "flang/Support/Fortran.h"
2121
#include <optional>
2222
#include <vector>
2323

flang/include/flang/Evaluate/characteristics.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818
#include "shape.h"
1919
#include "tools.h"
2020
#include "type.h"
21-
#include "flang/Common/Fortran-features.h"
22-
#include "flang/Common/Fortran.h"
2321
#include "flang/Common/enum-set.h"
2422
#include "flang/Common/idioms.h"
2523
#include "flang/Common/indirection.h"
2624
#include "flang/Parser/char-block.h"
2725
#include "flang/Semantics/symbol.h"
26+
#include "flang/Support/Fortran-features.h"
27+
#include "flang/Support/Fortran.h"
2828
#include <optional>
2929
#include <string>
3030
#include <variant>

flang/include/flang/Evaluate/common.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
#ifndef FORTRAN_EVALUATE_COMMON_H_
1010
#define FORTRAN_EVALUATE_COMMON_H_
1111

12-
#include "flang/Common/Fortran-features.h"
13-
#include "flang/Common/Fortran.h"
14-
#include "flang/Common/default-kinds.h"
1512
#include "flang/Common/enum-set.h"
1613
#include "flang/Common/idioms.h"
1714
#include "flang/Common/indirection.h"
1815
#include "flang/Common/restorer.h"
1916
#include "flang/Common/target-rounding.h"
2017
#include "flang/Parser/char-block.h"
2118
#include "flang/Parser/message.h"
19+
#include "flang/Support/Fortran-features.h"
20+
#include "flang/Support/Fortran.h"
21+
#include "flang/Support/default-kinds.h"
2222
#include <cinttypes>
2323
#include <map>
2424
#include <set>

flang/include/flang/Evaluate/constant.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
#include "formatting.h"
1313
#include "type.h"
14-
#include "flang/Common/default-kinds.h"
1514
#include "flang/Common/reference.h"
15+
#include "flang/Support/default-kinds.h"
1616
#include <map>
1717
#include <vector>
1818

flang/include/flang/Evaluate/expression.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
#include "formatting.h"
2222
#include "type.h"
2323
#include "variable.h"
24-
#include "flang/Common/Fortran.h"
2524
#include "flang/Common/idioms.h"
2625
#include "flang/Common/indirection.h"
2726
#include "flang/Common/template.h"
2827
#include "flang/Parser/char-block.h"
28+
#include "flang/Support/Fortran.h"
2929
#include <algorithm>
3030
#include <list>
3131
#include <tuple>

flang/include/flang/Evaluate/intrinsics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
#include "call.h"
1313
#include "characteristics.h"
1414
#include "type.h"
15-
#include "flang/Common/default-kinds.h"
1615
#include "flang/Parser/char-block.h"
1716
#include "flang/Parser/message.h"
17+
#include "flang/Support/default-kinds.h"
1818
#include <memory>
1919
#include <optional>
2020
#include <string>

flang/include/flang/Evaluate/target.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
#ifndef FORTRAN_EVALUATE_TARGET_H_
1313
#define FORTRAN_EVALUATE_TARGET_H_
1414

15-
#include "flang/Common/Fortran.h"
1615
#include "flang/Common/enum-class.h"
1716
#include "flang/Common/enum-set.h"
1817
#include "flang/Common/target-rounding.h"
1918
#include "flang/Evaluate/common.h"
19+
#include "flang/Support/Fortran.h"
2020
#include <cstdint>
2121

2222
namespace Fortran::evaluate {

flang/include/flang/Evaluate/type.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
#include "integer.h"
2323
#include "logical.h"
2424
#include "real.h"
25-
#include "flang/Common/Fortran-features.h"
26-
#include "flang/Common/Fortran.h"
2725
#include "flang/Common/idioms.h"
2826
#include "flang/Common/real.h"
2927
#include "flang/Common/template.h"
28+
#include "flang/Support/Fortran-features.h"
29+
#include "flang/Support/Fortran.h"
3030
#include <cinttypes>
3131
#include <optional>
3232
#include <string>

flang/include/flang/Frontend/CompilerInvocation.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
#ifndef FORTRAN_FRONTEND_COMPILERINVOCATION_H
1414
#define FORTRAN_FRONTEND_COMPILERINVOCATION_H
1515

16-
#include "flang/Common/LangOptions.h"
1716
#include "flang/Frontend/CodeGenOptions.h"
1817
#include "flang/Frontend/FrontendOptions.h"
1918
#include "flang/Frontend/PreprocessorOptions.h"
2019
#include "flang/Frontend/TargetOptions.h"
2120
#include "flang/Lower/LoweringOptions.h"
2221
#include "flang/Parser/parsing.h"
2322
#include "flang/Semantics/semantics.h"
23+
#include "flang/Support/LangOptions.h"
2424
#include "mlir/Support/Timing.h"
2525
#include "clang/Basic/Diagnostic.h"
2626
#include "clang/Basic/DiagnosticOptions.h"

flang/include/flang/Frontend/FrontendOptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
#ifndef FORTRAN_FRONTEND_FRONTENDOPTIONS_H
1414
#define FORTRAN_FRONTEND_FRONTENDOPTIONS_H
1515

16-
#include "flang/Common/Fortran-features.h"
1716
#include "flang/Lower/EnvironmentDefault.h"
1817
#include "flang/Parser/characters.h"
1918
#include "flang/Parser/unparse.h"
19+
#include "flang/Support/Fortran-features.h"
2020
#include "llvm/ADT/StringRef.h"
2121
#include "llvm/Support/MemoryBuffer.h"
2222
#include <cstdint>

flang/include/flang/ISO_Fortran_binding.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* it does so by means of a wrapper header that establishes namespaces and
1515
* a macro for extra function attributes (RT_API_ATTRS).
1616
*/
17-
#ifndef FORTRAN_ISO_FORTRAN_BINDING_WRAPPER_H_
17+
#ifndef FORTRAN_COMMON_ISO_FORTRAN_BINDING_WRAPPER_H_
1818
#include <stddef.h>
1919
#define FORTRAN_ISO_NAMESPACE_
2020
#endif

flang/include/flang/Lower/AbstractConverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
#ifndef FORTRAN_LOWER_ABSTRACTCONVERTER_H
1414
#define FORTRAN_LOWER_ABSTRACTCONVERTER_H
1515

16-
#include "flang/Common/Fortran.h"
1716
#include "flang/Lower/LoweringOptions.h"
1817
#include "flang/Lower/PFTDefs.h"
1918
#include "flang/Optimizer/Builder/BoxValue.h"
2019
#include "flang/Optimizer/Dialect/FIRAttr.h"
2120
#include "flang/Semantics/symbol.h"
21+
#include "flang/Support/Fortran.h"
2222
#include "mlir/IR/Builders.h"
2323
#include "mlir/IR/BuiltinOps.h"
2424
#include "mlir/IR/Operation.h"

flang/include/flang/Lower/Bridge.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#ifndef FORTRAN_LOWER_BRIDGE_H
1414
#define FORTRAN_LOWER_BRIDGE_H
1515

16-
#include "flang/Common/Fortran.h"
1716
#include "flang/Frontend/CodeGenOptions.h"
1817
#include "flang/Frontend/TargetOptions.h"
1918
#include "flang/Lower/AbstractConverter.h"
@@ -22,6 +21,7 @@
2221
#include "flang/Lower/StatementContext.h"
2322
#include "flang/Optimizer/Builder/FIRBuilder.h"
2423
#include "flang/Optimizer/Dialect/Support/KindMapping.h"
24+
#include "flang/Support/Fortran.h"
2525
#include "mlir/IR/BuiltinOps.h"
2626
#include "mlir/IR/OwningOpRef.h"
2727
#include <set>

flang/include/flang/Lower/ConvertType.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
#ifndef FORTRAN_LOWER_CONVERT_TYPE_H
2222
#define FORTRAN_LOWER_CONVERT_TYPE_H
2323

24-
#include "flang/Common/Fortran.h"
2524
#include "flang/Evaluate/type.h"
25+
#include "flang/Support/Fortran.h"
2626
#include "mlir/IR/BuiltinTypes.h"
2727

2828
namespace mlir {

flang/include/flang/Lower/LoweringOptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#ifndef FLANG_LOWER_LOWERINGOPTIONS_H
1616
#define FLANG_LOWER_LOWERINGOPTIONS_H
1717

18-
#include "flang/Common/MathOptionsBase.h"
18+
#include "flang/Support/MathOptionsBase.h"
1919

2020
namespace Fortran::lower {
2121

flang/include/flang/Optimizer/Builder/FIRBuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
#ifndef FORTRAN_OPTIMIZER_BUILDER_FIRBUILDER_H
1717
#define FORTRAN_OPTIMIZER_BUILDER_FIRBUILDER_H
1818

19-
#include "flang/Common/MathOptionsBase.h"
2019
#include "flang/Optimizer/Dialect/FIROps.h"
2120
#include "flang/Optimizer/Dialect/FIROpsSupport.h"
2221
#include "flang/Optimizer/Dialect/FIRType.h"
2322
#include "flang/Optimizer/Dialect/Support/FIRContext.h"
2423
#include "flang/Optimizer/Dialect/Support/KindMapping.h"
24+
#include "flang/Support/MathOptionsBase.h"
2525
#include "mlir/IR/Builders.h"
2626
#include "mlir/IR/BuiltinOps.h"
2727
#include "llvm/ADT/DenseMap.h"

flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
#ifndef FORTRAN_OPTIMIZER_BUILDER_RUNTIME_RTBUILDER_H
1818
#define FORTRAN_OPTIMIZER_BUILDER_RUNTIME_RTBUILDER_H
1919

20-
#include "flang/Common/Fortran.h"
2120
#include "flang/Common/uint128.h"
2221
#include "flang/Optimizer/Builder/FIRBuilder.h"
2322
#include "flang/Optimizer/Dialect/FIRDialect.h"
2423
#include "flang/Optimizer/Dialect/FIRType.h"
2524
#include "flang/Runtime/reduce.h"
25+
#include "flang/Support/Fortran.h"
2626
#include "mlir/IR/BuiltinTypes.h"
2727
#include "mlir/IR/MLIRContext.h"
2828
#include "llvm/ADT/SmallVector.h"

flang/include/flang/Optimizer/CodeGen/DescriptorModel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#ifndef OPTIMIZER_DESCRIPTOR_MODEL_H
2323
#define OPTIMIZER_DESCRIPTOR_MODEL_H
2424

25-
#include "flang/ISO_Fortran_binding_wrapper.h"
25+
#include "flang/Common/ISO_Fortran_binding_wrapper.h"
2626
#include "flang/Runtime/descriptor-consts.h"
2727
#include "mlir/Dialect/LLVMIR/LLVMTypes.h"
2828
#include "mlir/IR/BuiltinTypes.h"

0 commit comments

Comments
 (0)