================
@@ -2197,19 +2197,23 @@ TemplateInstantiator::TransformLoopHintAttr(const
LoopHintAttr *LH) {
// Generate error if there is a problem with the value.
if (getSema().CheckLoopHintExpr(TransformedExpr, LH->getLocation(),
- LH->getSemanticSpelling() ==
+ /*AllowZero=*/LH->getSemanticSpelling() ==
LoopHintAttr::Pragma_unroll))
return LH;
LoopHintAttr::OptionType Option = LH->getOption();
LoopHintAttr::LoopHintState State = LH->getState();
- llvm::APSInt ValueAPS =
- TransformedExpr->EvaluateKnownConstInt(getSema().getASTContext());
- // The values of 0 and 1 block any unrolling of the loop.
- if (ValueAPS.isZero() || ValueAPS.isOne()) {
- Option = LoopHintAttr::Unroll;
- State = LoopHintAttr::Disable;
+ if (Option == LoopHintAttr::UnrollCount &&
----------------
brunodf-snps wrote:
I've added an extra test case to clang/test/CodeGenCXX/pragma-unroll.cpp for
the bug that surfaced here (see commit 3868ec2e2). It verifies that a loop with
vectorize_width(1) does not get "unroll disable" metadata.
While doing this, I discovered that this test (and sibling test
pragma-gcc-unroll.cpp) was not adequately verifying the generated metadata
(although that was clearly the intention). That made it very hard to add my new
test case in a meaningful way. So I first had to do commit 7fd8afdb to correct
the FileCheck patterns for the metadata (the commit message explains in more
detail what was wrong). I think this commit 7fd8afdb does not belong in this PR
and could be pre-committed. What do you think?
https://github.com/llvm/llvm-project/pull/172289
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits