[clang] [clang] Add support for new loop attribute [[clang::code_align()]] (PR #70762)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 6 10:55:15 PST 2023
================
@@ -788,6 +797,17 @@ void LoopInfoStack::push(BasicBlock *Header, clang::ASTContext &Ctx,
}
}
+ // Identify loop attribute 'code_align' from Attrs.
+ // For attribute code_align:
+ // n - 'llvm.loop.align i32 n' metadata will be emitted.
+ for (const auto *A : Attrs) {
+ if (const auto *CodeAlign = dyn_cast<CodeAlignAttr>(A)) {
+ const auto *CE = cast<ConstantExpr>(CodeAlign->getAlignment());
+ llvm::APSInt ArgVal = CE->getResultAsAPSInt();
+ setCodeAlign(ArgVal.getSExtValue());
+ }
+ }
----------------
AaronBallman wrote:
```suggestion
if (const auto *CodeAlign = getSpecificAttr<CodeAlignAttr>(Attrs)) {
const auto *CE = cast<ConstantExpr>(CodeAlign->getAlignment());
llvm::APSInt ArgVal = CE->getResultAsAPSInt();
setCodeAlign(ArgVal.getSExtValue());
}
```
https://github.com/llvm/llvm-project/pull/70762
More information about the cfe-commits
mailing list