diff options
author | Carlos Alberto Enciso <carlos.alberto.enciso@gmail.com> | 2024-04-16 09:37:51 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-16 09:37:51 +0100 |
commit | 66cf995da76b9da3cfdee2f29eff6ea4d84305ef (patch) | |
tree | d6f0a54f4d4ce9702ac960863f3e74cfd33d5e2a /llvm/lib/Transforms/Utils/Local.cpp | |
parent | 5b811562a520a8a3cd164897f24dee7da3115bbe (diff) | |
download | llvm-66cf995da76b9da3cfdee2f29eff6ea4d84305ef.zip llvm-66cf995da76b9da3cfdee2f29eff6ea4d84305ef.tar.gz llvm-66cf995da76b9da3cfdee2f29eff6ea4d84305ef.tar.bz2 |
[IPSCCP] Variable not visible at Og: (#77901)
https://bugs.llvm.org/show_bug.cgi?id=51559
https://github.com/llvm/llvm-project/issues/50901
IPSCCP pass removes the global variable and does not create a constant
expression for the initializer value.
Extend test coverage to include:
- half, bfloat types.
- checks for undef (int32 and ptr).
There is no support for:
- fp128, x86_fp80, ppc_fp128 types.
https://github.com/llvm/llvm-project/issues/88102
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index 380bac9..a42ef0c 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -3627,10 +3627,12 @@ DIExpression *llvm::getExpressionForConstant(DIBuilder &DIB, const Constant &C, return createIntegerExpression(C); auto *FP = dyn_cast<ConstantFP>(&C); - if (FP && (Ty.isFloatTy() || Ty.isDoubleTy())) { + if (FP && Ty.isFloatingPointTy() && Ty.getScalarSizeInBits() <= 64) { const APFloat &APF = FP->getValueAPF(); - return DIB.createConstantValueExpression( - APF.bitcastToAPInt().getZExtValue()); + APInt const &API = APF.bitcastToAPInt(); + if (auto Temp = API.getZExtValue()) + return DIB.createConstantValueExpression(static_cast<uint64_t>(Temp)); + return DIB.createConstantValueExpression(*API.getRawData()); } if (!Ty.isPointerTy()) |