-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Reland [flang] In AllocMemOp lowering, convert types for calling malloc on 32-bit #130384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Apologies, wrong branch |
@llvm/pr-subscribers-flang-fir-hlfir @llvm/pr-subscribers-flang-codegen Author: R (ArcaneNibble) ChangesPrevious PR: #129308 Changes: I added Patch is 110.40 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/130384.diff 14 Files Affected:
diff --git a/flang-rt/lib/runtime/execute.cpp b/flang-rt/lib/runtime/execute.cpp
index f180da846a32c..da13f74d17884 100644
--- a/flang-rt/lib/runtime/execute.cpp
+++ b/flang-rt/lib/runtime/execute.cpp
@@ -21,7 +21,9 @@
#include "flang/Common/windows-include.h"
#else
#include <signal.h>
+#ifndef __wasi__
#include <sys/wait.h>
+#endif
#include <unistd.h>
#endif
@@ -65,6 +67,7 @@ void CheckAndStoreIntToDescriptor(
}
}
+#ifndef __wasi__
// If a condition occurs that would assign a nonzero value to CMDSTAT but
// the CMDSTAT variable is not present, error termination is initiated.
std::int64_t TerminationCheck(std::int64_t status, const Descriptor *cmdstat,
@@ -180,6 +183,7 @@ std::int64_t TerminationCheck(std::int64_t status, const Descriptor *cmdstat,
#endif
return exitStatusVal;
}
+#endif
void RTNAME(ExecuteCommandLine)(const Descriptor &command, bool wait,
const Descriptor *exitstat, const Descriptor *cmdstat,
@@ -202,6 +206,7 @@ void RTNAME(ExecuteCommandLine)(const Descriptor &command, bool wait,
RUNTIME_CHECK(terminator, IsValidCharDescriptor(cmdmsg));
}
+#ifndef __wasi__
if (wait) {
// either wait is not specified or wait is true: synchronous mode
std::int64_t status{std::system(newCmd)};
@@ -278,6 +283,9 @@ void RTNAME(ExecuteCommandLine)(const Descriptor &command, bool wait,
}
#endif
}
+#else
+ terminator.Crash("not supported on WASI");
+#endif
// Deallocate memory if EnsureNullTerminated dynamically allocated memory
if (newCmd != command.OffsetElement()) {
FreeMemory(newCmd);
diff --git a/flang-rt/lib/runtime/extensions.cpp b/flang-rt/lib/runtime/extensions.cpp
index 75195c33a6c21..eb016bd733e0e 100644
--- a/flang-rt/lib/runtime/extensions.cpp
+++ b/flang-rt/lib/runtime/extensions.cpp
@@ -61,7 +61,7 @@ extern "C" {
namespace Fortran::runtime {
gid_t RTNAME(GetGID)() {
-#ifdef _WIN32
+#if defined(_WIN32) || defined(__wasi__)
// Group IDs don't exist on Windows, return 1 to avoid errors
return 1;
#else
@@ -70,7 +70,7 @@ gid_t RTNAME(GetGID)() {
}
uid_t RTNAME(GetUID)() {
-#ifdef _WIN32
+#if defined(_WIN32) || defined(__wasi__)
// User IDs don't exist on Windows, return 1 to avoid errors
return 1;
#else
diff --git a/flang-rt/lib/runtime/file.cpp b/flang-rt/lib/runtime/file.cpp
index 16e73db488727..8e2bc97ef7dac 100644
--- a/flang-rt/lib/runtime/file.cpp
+++ b/flang-rt/lib/runtime/file.cpp
@@ -31,6 +31,10 @@ void OpenFile::set_path(OwningPtr<char> &&path, std::size_t bytes) {
}
static int openfile_mkstemp(IoErrorHandler &handler) {
+#ifdef __wasi__
+ handler.SignalError("not supported on WASI");
+ return -1;
+#else
#ifdef _WIN32
const unsigned int uUnique{0};
// GetTempFileNameA needs a directory name < MAX_PATH-14 characters in length.
@@ -58,6 +62,7 @@ static int openfile_mkstemp(IoErrorHandler &handler) {
::unlink(path);
#endif
return fd;
+#endif
}
void OpenFile::Open(OpenStatus status, Fortran::common::optional<Action> action,
diff --git a/flang/include/flang/Optimizer/Builder/FIRBuilder.h b/flang/include/flang/Optimizer/Builder/FIRBuilder.h
index 1675c15363868..fe496d34813eb 100644
--- a/flang/include/flang/Optimizer/Builder/FIRBuilder.h
+++ b/flang/include/flang/Optimizer/Builder/FIRBuilder.h
@@ -43,9 +43,28 @@ class BoxValue;
inline mlir::Type getIntPtrType(mlir::OpBuilder &builder) {
// TODO: Delay the need of such type until codegen or find a way to use
// llvm::DataLayout::getPointerSizeInBits here.
+ // (Note: this is *only* used by MemoryUtils.cpp)
return builder.getI64Type();
}
+//===----------------------------------------------------------------------===//
+// MinimalCTargetInfo
+//===----------------------------------------------------------------------===//
+
+/// Minimal information needed to interface with C code on the target,
+/// for generating runtime calls.
+struct MinimalCTargetInfo {
+ unsigned char CharWidth;
+ unsigned char ShortWidth;
+ unsigned char IntWidth;
+ unsigned char LongWidth;
+ unsigned char LongLongWidth;
+ unsigned char DataPointerWidth;
+ unsigned char EnumWidth;
+
+ MinimalCTargetInfo(const llvm::Triple &T);
+};
+
//===----------------------------------------------------------------------===//
// FirOpBuilder
//===----------------------------------------------------------------------===//
@@ -57,7 +76,8 @@ class FirOpBuilder : public mlir::OpBuilder, public mlir::OpBuilder::Listener {
explicit FirOpBuilder(mlir::Operation *op, fir::KindMapping kindMap,
mlir::SymbolTable *symbolTable = nullptr)
: OpBuilder{op, /*listener=*/this}, kindMap{std::move(kindMap)},
- symbolTable{symbolTable} {
+ symbolTable{symbolTable},
+ cTargetInfo{fir::getTargetTriple(getModule())} {
auto fmi = mlir::dyn_cast<mlir::arith::ArithFastMathInterface>(*op);
if (fmi) {
// Set the builder with FastMathFlags attached to the operation.
@@ -67,17 +87,20 @@ class FirOpBuilder : public mlir::OpBuilder, public mlir::OpBuilder::Listener {
explicit FirOpBuilder(mlir::OpBuilder &builder, fir::KindMapping kindMap,
mlir::SymbolTable *symbolTable = nullptr)
: OpBuilder(builder), OpBuilder::Listener(), kindMap{std::move(kindMap)},
- symbolTable{symbolTable} {
+ symbolTable{symbolTable},
+ cTargetInfo{fir::getTargetTriple(getModule())} {
setListener(this);
}
explicit FirOpBuilder(mlir::OpBuilder &builder, mlir::ModuleOp mod)
: OpBuilder(builder), OpBuilder::Listener(),
- kindMap{getKindMapping(mod)} {
+ kindMap{getKindMapping(mod)},
+ cTargetInfo{fir::getTargetTriple(getModule())} {
setListener(this);
}
explicit FirOpBuilder(mlir::OpBuilder &builder, fir::KindMapping kindMap,
mlir::Operation *op)
- : OpBuilder(builder), OpBuilder::Listener(), kindMap{std::move(kindMap)} {
+ : OpBuilder(builder), OpBuilder::Listener(), kindMap{std::move(kindMap)},
+ cTargetInfo{fir::getTargetTriple(getModule())} {
setListener(this);
auto fmi = mlir::dyn_cast<mlir::arith::ArithFastMathInterface>(*op);
if (fmi) {
@@ -93,7 +116,8 @@ class FirOpBuilder : public mlir::OpBuilder, public mlir::OpBuilder::Listener {
: OpBuilder(other), OpBuilder::Listener(), kindMap{other.kindMap},
fastMathFlags{other.fastMathFlags},
integerOverflowFlags{other.integerOverflowFlags},
- symbolTable{other.symbolTable} {
+ symbolTable{other.symbolTable},
+ cTargetInfo{other.cTargetInfo} {
setListener(this);
}
@@ -101,7 +125,8 @@ class FirOpBuilder : public mlir::OpBuilder, public mlir::OpBuilder::Listener {
: OpBuilder(other), OpBuilder::Listener(),
kindMap{std::move(other.kindMap)}, fastMathFlags{other.fastMathFlags},
integerOverflowFlags{other.integerOverflowFlags},
- symbolTable{other.symbolTable} {
+ symbolTable{other.symbolTable},
+ cTargetInfo{other.cTargetInfo} {
setListener(this);
}
@@ -160,7 +185,45 @@ class FirOpBuilder : public mlir::OpBuilder, public mlir::OpBuilder::Listener {
/// Get the integer type whose bit width corresponds to the width of pointer
/// types, or is bigger.
- mlir::Type getIntPtrType() { return fir::getIntPtrType(*this); }
+ mlir::Type getIntPtrType() {
+ return getIntegerType(cTargetInfo.DataPointerWidth);
+ }
+
+ /// Get the integer type whose bit width corresponds to the width of
+ /// the `char` type in C
+ mlir::Type getCCharType() {
+ return getIntegerType(cTargetInfo.CharWidth);
+ }
+
+ /// Get the integer type whose bit width corresponds to the width of
+ /// the `short` type in C
+ mlir::Type getCShortType() {
+ return getIntegerType(cTargetInfo.ShortWidth);
+ }
+
+ /// Get the integer type whose bit width corresponds to the width of
+ /// the `int` type in C
+ mlir::Type getCIntType() {
+ return getIntegerType(cTargetInfo.IntWidth);
+ }
+
+ /// Get the integer type whose bit width corresponds to the width of
+ /// the `long` type in C
+ mlir::Type getCLongType() {
+ return getIntegerType(cTargetInfo.LongWidth);
+ }
+
+ /// Get the integer type whose bit width corresponds to the width of
+ /// the `long long` type in C
+ mlir::Type getCLongLongType() {
+ return getIntegerType(cTargetInfo.LongLongWidth);
+ }
+
+ /// Get the integer type whose bit width corresponds to the width of
+ /// enums in C
+ mlir::Type getCEnumType() {
+ return getIntegerType(cTargetInfo.EnumWidth);
+ }
/// Wrap `str` to a SymbolRefAttr.
mlir::SymbolRefAttr getSymbolRefAttr(llvm::StringRef str) {
@@ -619,6 +682,8 @@ class FirOpBuilder : public mlir::OpBuilder, public mlir::OpBuilder::Listener {
/// Stored via a unique_ptr rather than an optional so as not to bloat this
/// class when most instances won't ever need a data layout.
std::unique_ptr<mlir::DataLayout> dataLayout = nullptr;
+
+ MinimalCTargetInfo cTargetInfo;
};
} // namespace fir
diff --git a/flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h b/flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h
index 5158abaa31ed1..4021e8149fadf 100644
--- a/flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h
+++ b/flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h
@@ -51,17 +51,18 @@ class DerivedType;
namespace fir::runtime {
-using TypeBuilderFunc = mlir::Type (*)(mlir::MLIRContext *);
-using FuncTypeBuilderFunc = mlir::FunctionType (*)(mlir::MLIRContext *);
+using TypeBuilderFunc = mlir::Type (*)(fir::FirOpBuilder &);
+using FuncTypeBuilderFunc = mlir::FunctionType (*)(fir::FirOpBuilder &);
#define REDUCTION_REF_OPERATION_MODEL(T) \
template <> \
constexpr TypeBuilderFunc \
getModel<Fortran::runtime::ReferenceReductionOperation<T>>() { \
- return [](mlir::MLIRContext *context) -> mlir::Type { \
+ return [](fir::FirOpBuilder &builder) -> mlir::Type { \
TypeBuilderFunc f{getModel<T>()}; \
- auto refTy = fir::ReferenceType::get(f(context)); \
- return mlir::FunctionType::get(context, {refTy, refTy}, refTy); \
+ auto refTy = fir::ReferenceType::get(f(builder)); \
+ return mlir::FunctionType::get(builder.getContext(), {refTy, refTy}, \
+ refTy); \
}; \
}
@@ -69,11 +70,11 @@ using FuncTypeBuilderFunc = mlir::FunctionType (*)(mlir::MLIRContext *);
template <> \
constexpr TypeBuilderFunc \
getModel<Fortran::runtime::ValueReductionOperation<T>>() { \
- return [](mlir::MLIRContext *context) -> mlir::Type { \
+ return [](fir::FirOpBuilder &builder) -> mlir::Type { \
TypeBuilderFunc f{getModel<T>()}; \
- auto refTy = fir::ReferenceType::get(f(context)); \
- return mlir::FunctionType::get(context, {f(context), f(context)}, \
- refTy); \
+ auto refTy = fir::ReferenceType::get(f(builder)); \
+ return mlir::FunctionType::get(builder.getContext(), \
+ {f(builder), f(builder)}, refTy); \
}; \
}
@@ -81,16 +82,16 @@ using FuncTypeBuilderFunc = mlir::FunctionType (*)(mlir::MLIRContext *);
template <> \
constexpr TypeBuilderFunc \
getModel<Fortran::runtime::ReductionCharOperation<T>>() { \
- return [](mlir::MLIRContext *context) -> mlir::Type { \
+ return [](fir::FirOpBuilder &builder) -> mlir::Type { \
TypeBuilderFunc f{getModel<T>()}; \
auto voidTy = fir::LLVMPointerType::get( \
- context, mlir::IntegerType::get(context, 8)); \
- auto size_tTy = \
- mlir::IntegerType::get(context, 8 * sizeof(std::size_t)); \
- auto refTy = fir::ReferenceType::get(f(context)); \
+ builder.getContext(), \
+ mlir::IntegerType::get(builder.getContext(), 8)); \
+ auto size_tTy = builder.getIntPtrType(); \
+ auto refTy = fir::ReferenceType::get(f(builder)); \
return mlir::FunctionType::get( \
- context, {refTy, size_tTy, refTy, refTy, size_tTy, size_tTy}, \
- voidTy); \
+ builder.getContext(), \
+ {refTy, size_tTy, refTy, refTy, size_tTy, size_tTy}, voidTy); \
}; \
}
@@ -98,8 +99,8 @@ using FuncTypeBuilderFunc = mlir::FunctionType (*)(mlir::MLIRContext *);
// Type builder models
//===----------------------------------------------------------------------===//
-// TODO: all usages of sizeof in this file assume build == host == target.
-// This will need to be re-visited for cross compilation.
+// TODO: not all usages of sizeof have been necessarily correctly audited
+// for cross compilation.
/// Return a function that returns the type signature model for the type `T`
/// when provided an MLIRContext*. This allows one to translate C(++) function
@@ -113,21 +114,21 @@ static constexpr TypeBuilderFunc getModel();
template <>
constexpr TypeBuilderFunc getModel<unsigned int>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(unsigned int));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return builder.getCIntType();
};
}
template <>
constexpr TypeBuilderFunc getModel<short int>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(short int));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return builder.getCShortType();
};
}
template <>
constexpr TypeBuilderFunc getModel<short int *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
TypeBuilderFunc f{getModel<short int>()};
- return fir::ReferenceType::get(f(context));
+ return fir::ReferenceType::get(f(builder));
};
}
template <>
@@ -136,15 +137,15 @@ constexpr TypeBuilderFunc getModel<const short int *>() {
}
template <>
constexpr TypeBuilderFunc getModel<int>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(int));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return builder.getCIntType();
};
}
template <>
constexpr TypeBuilderFunc getModel<int &>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
TypeBuilderFunc f{getModel<int>()};
- return fir::ReferenceType::get(f(context));
+ return fir::ReferenceType::get(f(builder));
};
}
template <>
@@ -153,15 +154,16 @@ constexpr TypeBuilderFunc getModel<int *>() {
}
template <>
constexpr TypeBuilderFunc getModel<const int *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
TypeBuilderFunc f{getModel<int>()};
- return fir::ReferenceType::get(f(context));
+ return fir::ReferenceType::get(f(builder));
};
}
template <>
constexpr TypeBuilderFunc getModel<char *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return fir::ReferenceType::get(mlir::IntegerType::get(context, 8));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return fir::ReferenceType::get(
+ mlir::IntegerType::get(builder.getContext(), 8));
};
}
template <>
@@ -170,33 +172,35 @@ constexpr TypeBuilderFunc getModel<const char *>() {
}
template <>
constexpr TypeBuilderFunc getModel<const char16_t *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return fir::ReferenceType::get(mlir::IntegerType::get(context, 16));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return fir::ReferenceType::get(
+ mlir::IntegerType::get(builder.getContext(), 16));
};
}
template <>
constexpr TypeBuilderFunc getModel<const char32_t *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return fir::ReferenceType::get(mlir::IntegerType::get(context, 32));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return fir::ReferenceType::get(
+ mlir::IntegerType::get(builder.getContext(), 32));
};
}
template <>
constexpr TypeBuilderFunc getModel<char>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(char));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return builder.getCCharType();
};
}
template <>
constexpr TypeBuilderFunc getModel<signed char>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(signed char));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return builder.getCCharType();
};
}
template <>
constexpr TypeBuilderFunc getModel<signed char *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
TypeBuilderFunc f{getModel<signed char>()};
- return fir::ReferenceType::get(f(context));
+ return fir::ReferenceType::get(f(builder));
};
}
template <>
@@ -205,69 +209,70 @@ constexpr TypeBuilderFunc getModel<const signed char *>() {
}
template <>
constexpr TypeBuilderFunc getModel<char16_t>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(char16_t));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return mlir::IntegerType::get(builder.getContext(), 16);
};
}
template <>
constexpr TypeBuilderFunc getModel<char16_t *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
TypeBuilderFunc f{getModel<char16_t>()};
- return fir::ReferenceType::get(f(context));
+ return fir::ReferenceType::get(f(builder));
};
}
template <>
constexpr TypeBuilderFunc getModel<char32_t>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(char32_t));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return mlir::IntegerType::get(builder.getContext(), 32);
};
}
template <>
constexpr TypeBuilderFunc getModel<char32_t *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
TypeBuilderFunc f{getModel<char32_t>()};
- return fir::ReferenceType::get(f(context));
+ return fir::ReferenceType::get(f(builder));
};
}
template <>
constexpr TypeBuilderFunc getModel<unsigned char>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return mlir::IntegerType::get(context, 8 * sizeof(unsigned char));
+ return [](fir::FirOpBuilder &builder) -> mlir::Type {
+ return builder.getCCharType();
};
}
template <>
constexpr TypeBuilderFunc getModel<void *>() {
- return [](mlir::MLIRContext *context) -> mlir::Type {
- return fir::LLVMPointerType::get(context,
- mlir::IntegerType::get(context, 8));
+ return [](fir...
[truncated]
|
You can test this locally with the following command:git-clang-format --diff cf1964af5a461196904b663ede04c26555fcff69 3a89328312912996fa9009249f5ea89f64e3f20d --extensions cpp,h -- flang-rt/lib/runtime/execute.cpp flang-rt/lib/runtime/extensions.cpp flang-rt/lib/runtime/file.cpp flang/include/flang/Optimizer/Builder/FIRBuilder.h flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h flang/lib/Lower/Allocatable.cpp flang/lib/Lower/IO.cpp flang/lib/Optimizer/Builder/FIRBuilder.cpp flang/lib/Optimizer/Builder/Runtime/Intrinsics.cpp flang/lib/Optimizer/Builder/Runtime/Numeric.cpp flang/lib/Optimizer/Builder/Runtime/Reduction.cpp flang/lib/Optimizer/Builder/Runtime/Support.cpp flang/lib/Optimizer/Builder/Runtime/Transformational.cpp flang/lib/Optimizer/CodeGen/Target.cpp View the diff from clang-format here.diff --git a/flang/include/flang/Optimizer/Builder/FIRBuilder.h b/flang/include/flang/Optimizer/Builder/FIRBuilder.h
index fe496d3481..61f71459ef 100644
--- a/flang/include/flang/Optimizer/Builder/FIRBuilder.h
+++ b/flang/include/flang/Optimizer/Builder/FIRBuilder.h
@@ -92,8 +92,7 @@ public:
setListener(this);
}
explicit FirOpBuilder(mlir::OpBuilder &builder, mlir::ModuleOp mod)
- : OpBuilder(builder), OpBuilder::Listener(),
- kindMap{getKindMapping(mod)},
+ : OpBuilder(builder), OpBuilder::Listener(), kindMap{getKindMapping(mod)},
cTargetInfo{fir::getTargetTriple(getModule())} {
setListener(this);
}
@@ -116,8 +115,7 @@ public:
: OpBuilder(other), OpBuilder::Listener(), kindMap{other.kindMap},
fastMathFlags{other.fastMathFlags},
integerOverflowFlags{other.integerOverflowFlags},
- symbolTable{other.symbolTable},
- cTargetInfo{other.cTargetInfo} {
+ symbolTable{other.symbolTable}, cTargetInfo{other.cTargetInfo} {
setListener(this);
}
@@ -125,8 +123,7 @@ public:
: OpBuilder(other), OpBuilder::Listener(),
kindMap{std::move(other.kindMap)}, fastMathFlags{other.fastMathFlags},
integerOverflowFlags{other.integerOverflowFlags},
- symbolTable{other.symbolTable},
- cTargetInfo{other.cTargetInfo} {
+ symbolTable{other.symbolTable}, cTargetInfo{other.cTargetInfo} {
setListener(this);
}
@@ -191,27 +188,19 @@ public:
/// Get the integer type whose bit width corresponds to the width of
/// the `char` type in C
- mlir::Type getCCharType() {
- return getIntegerType(cTargetInfo.CharWidth);
- }
+ mlir::Type getCCharType() { return getIntegerType(cTargetInfo.CharWidth); }
/// Get the integer type whose bit width corresponds to the width of
/// the `short` type in C
- mlir::Type getCShortType() {
- return getIntegerType(cTargetInfo.ShortWidth);
- }
+ mlir::Type getCShortType() { return getIntegerType(cTargetInfo.ShortWidth); }
/// Get the integer type whose bit width corresponds to the width of
/// the `int` type in C
- mlir::Type getCIntType() {
- return getIntegerType(cTargetInfo.IntWidth);
- }
+ mlir::Type getCIntType() { return getIntegerType(cTargetInfo.IntWidth); }
/// Get the integer type whose bit width corresponds to the width of
/// the `long` type in C
- mlir::Type getCLongType() {
- return getIntegerType(cTargetInfo.LongWidth);
- }
+ mlir::Type getCLongType() { return getIntegerType(cTargetInfo.LongWidth); }
/// Get the integer type whose bit width corresponds to the width of
/// the `long long` type in C
@@ -221,9 +210,7 @@ public:
/// Get the integer type whose bit width corresponds to the width of
/// enums in C
- mlir::Type getCEnumType() {
- return getIntegerType(cTargetInfo.EnumWidth);
- }
+ mlir::Type getCEnumType() { return getIntegerType(cTargetInfo.EnumWidth); }
/// Wrap `str` to a SymbolRefAttr.
mlir::SymbolRefAttr getSymbolRefAttr(llvm::StringRef str) {
diff --git a/flang/lib/Lower/IO.cpp b/flang/lib/Lower/IO.cpp
index 280c911b14..b4b8f5ed09 100644
--- a/flang/lib/Lower/IO.cpp
+++ b/flang/lib/Lower/IO.cpp
@@ -266,8 +266,7 @@ getNonTbpDefinedIoTableAddr(Fortran::lower::AbstractConverter &converter,
mlir::StringAttr linkOnce = builder.createLinkOnceLinkage();
mlir::Type idxTy = builder.getIndexType();
- mlir::Type sizeTy =
- fir::runtime::getModel<std::size_t>()(builder);
+ mlir::Type sizeTy = fir::runtime::getModel<std::size_t>()(builder);
mlir::Type intTy = fir::runtime::getModel<int>()(builder);
mlir::Type boolTy = fir::runtime::getModel<bool>()(builder);
mlir::Type listTy = fir::SequenceType::get(
@@ -426,8 +425,7 @@ getNamelistGroup(Fortran::lower::AbstractConverter &converter,
mlir::MLIRContext *context = builder.getContext();
mlir::StringAttr linkOnce = builder.createLinkOnceLinkage();
mlir::Type idxTy = builder.getIndexType();
- mlir::Type sizeTy =
- fir::runtime::getModel<std::size_t>()(builder);
+ mlir::Type sizeTy = fir::runtime::getModel<std::size_t>()(builder);
mlir::Type charRefTy = fir::ReferenceType::get(builder.getIntegerType(8));
mlir::Type descRefTy =
fir::ReferenceType::get(fir::BoxType::get(mlir::NoneType::get(context)));
diff --git a/flang/lib/Optimizer/CodeGen/Target.cpp b/flang/lib/Optimizer/CodeGen/Target.cpp
index 932c5fbcb9..7da3ee737c 100644
--- a/flang/lib/Optimizer/CodeGen/Target.cpp
+++ b/flang/lib/Optimizer/CodeGen/Target.cpp
@@ -1845,10 +1845,10 @@ struct TargetWasm32 : public GenericTarget<TargetWasm32> {
CodeGenSpecifics::Marshalling marshal;
// Use a type that will be translated into LLVM as:
// { t, t } struct of 2 eleTy, sret, align 4
- auto structTy = mlir::TupleType::get(eleTy.getContext(),
- mlir::TypeRange{eleTy, eleTy});
+ auto structTy =
+ mlir::TupleType::get(eleTy.getContext(), mlir::TypeRange{eleTy, eleTy});
marshal.emplace_back(fir::ReferenceType::get(structTy),
- AT{/*alignment=*/4, /*byval=*/false, /*sret=*/true});
+ AT{/*alignment=*/4, /*byval=*/false, /*sret=*/true});
return marshal;
}
};
|
Previous PR: #129308
Changes: I added
REQUIRES: x86-registered-target
to the newly-added test so that it won't break the other buildbots.