[flang-commits] [flang] [flang][rfc] Add represention of volatile references (PR #132486)
via flang-commits
flang-commits at lists.llvm.org
Mon Mar 31 13:44:59 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp,h -- flang/include/flang/Optimizer/Builder/FIRBuilder.h flang/include/flang/Optimizer/Dialect/FIROps.h flang/include/flang/Optimizer/Dialect/FIROpsSupport.h flang/include/flang/Optimizer/Dialect/FIRType.h flang/lib/Lower/CallInterface.cpp flang/lib/Lower/ConvertCall.cpp flang/lib/Lower/ConvertExprToHLFIR.cpp flang/lib/Lower/IO.cpp flang/lib/Optimizer/Builder/FIRBuilder.cpp flang/lib/Optimizer/Builder/HLFIRTools.cpp flang/lib/Optimizer/CodeGen/CodeGen.cpp flang/lib/Optimizer/Dialect/FIROps.cpp flang/lib/Optimizer/Dialect/FIRType.cpp flang/lib/Optimizer/HLFIR/IR/HLFIROps.cpp flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/flang/lib/Lower/IO.cpp b/flang/lib/Lower/IO.cpp
index 02839a220..46abf18c4 100644
--- a/flang/lib/Lower/IO.cpp
+++ b/flang/lib/Lower/IO.cpp
@@ -709,7 +709,8 @@ static void genOutputItemList(
fir::factory::CharacterExprHelper helper{builder, loc};
if (mlir::isa<fir::BoxType>(argType)) {
mlir::Value box = fir::getBase(converter.genExprBox(loc, *expr, stmtCtx));
- outputFuncArgs.push_back(builder.createConvertWithVolatileCast(loc, argType, box));
+ outputFuncArgs.push_back(
+ builder.createConvertWithVolatileCast(loc, argType, box));
if (mlir::isa<fir::RecordType>(fir::unwrapPassByRefType(itemTy)))
outputFuncArgs.push_back(getNonTbpDefinedIoTableAddr(converter));
} else if (helper.isCharacterScalar(itemTy)) {
@@ -822,17 +823,17 @@ createIoRuntimeCallForItem(Fortran::lower::AbstractConverter &converter,
} else {
mlir::Value itemAddr = fir::getBase(item);
mlir::Type itemTy = fir::unwrapPassByRefType(itemAddr.getType());
-
+
// Handle conversion between volatile and non-volatile reference types
// Need to explicitly cast when volatility qualification differs
bool srcIsVolatile = fir::isa_volatile_type(itemAddr.getType());
bool dstIsVolatile = fir::isa_volatile_type(argType);
-
+
if (srcIsVolatile != dstIsVolatile) {
// Create an explicit conversion to handle the volatility difference
itemAddr = builder.create<fir::VolatileCastOp>(loc, argType, itemAddr);
}
-
+
inputFuncArgs.push_back(builder.createConvert(loc, argType, itemAddr));
fir::factory::CharacterExprHelper charHelper{builder, loc};
if (charHelper.isCharacterScalar(itemTy)) {
diff --git a/flang/lib/Optimizer/Builder/FIRBuilder.cpp b/flang/lib/Optimizer/Builder/FIRBuilder.cpp
index a180bb35a..1bb1dbbad 100644
--- a/flang/lib/Optimizer/Builder/FIRBuilder.cpp
+++ b/flang/lib/Optimizer/Builder/FIRBuilder.cpp
@@ -581,7 +581,8 @@ mlir::Value fir::FirOpBuilder::createConvertWithVolatileCast(mlir::Location loc,
mlir::Type toTy,
mlir::Value val) {
if (fir::isa_volatile_type(val.getType()) != fir::isa_volatile_type(toTy)) {
- mlir::Type volatileAdjustedType = fir::updateTypeWithVolatility(val.getType(), fir::isa_volatile_type(toTy));
+ mlir::Type volatileAdjustedType = fir::updateTypeWithVolatility(
+ val.getType(), fir::isa_volatile_type(toTy));
val = create<fir::VolatileCastOp>(loc, volatileAdjustedType, val);
}
return createConvert(loc, toTy, val);
diff --git a/flang/lib/Optimizer/Dialect/FIROps.cpp b/flang/lib/Optimizer/Dialect/FIROps.cpp
index 41316e7ba..2dfeebce9 100644
--- a/flang/lib/Optimizer/Dialect/FIROps.cpp
+++ b/flang/lib/Optimizer/Dialect/FIROps.cpp
@@ -1844,7 +1844,8 @@ llvm::LogicalResult fir::EmboxOp::verify() {
return emitOpError("source_box must be used with fir.class result type");
// if (fir::isa_volatile_type(getMemref().getType()) !=
// fir::isa_volatile_type(getResult().getType()))
- // return emitOpError("input and output types must have the same volatility");
+ // return emitOpError("input and output types must have the same
+ // volatility");
return mlir::success();
}
diff --git a/flang/lib/Optimizer/Dialect/FIRType.cpp b/flang/lib/Optimizer/Dialect/FIRType.cpp
index 84236c150..2c9daca68 100644
--- a/flang/lib/Optimizer/Dialect/FIRType.cpp
+++ b/flang/lib/Optimizer/Dialect/FIRType.cpp
@@ -1327,9 +1327,7 @@ mlir::Type fir::updateTypeWithVolatility(mlir::Type type, bool isVolatile) {
using TYPE = decltype(ty);
return TYPE::get(ty.getEleTy(), isVolatile);
})
- .Default([&](mlir::Type t) -> mlir::Type {
- return t;
- });
+ .Default([&](mlir::Type t) -> mlir::Type { return t; });
}
/// Convert llvm::Type::TypeID to mlir::Type. \p kind is provided for error
``````````
</details>
https://github.com/llvm/llvm-project/pull/132486
More information about the flang-commits
mailing list