summaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CGExprScalar.cpp
diff options
context:
space:
mode:
authorAiden Grossman <aidengrossman@google.com>2025-09-26 22:48:22 +0000
committerAiden Grossman <aidengrossman@google.com>2025-09-26 22:48:22 +0000
commit76533872e149395812a6d1651aa49dbf53fb4921 (patch)
tree199a669fa57a4effc3116705d2ec89c07ff36c65 /clang/lib/CodeGen/CGExprScalar.cpp
parent54f5c1b2e17a9be61609d70dbbc8354ad41bb931 (diff)
parent37e7ad184d002db15f72771938755580433cf96d (diff)
[𝘀𝗽𝗿] changes introduced through rebaseusers/boomanaiden154/main.lit-remove-t-from-tests
Created using spr 1.3.6 [skip ci]
Diffstat (limited to 'clang/lib/CodeGen/CGExprScalar.cpp')
-rw-r--r--clang/lib/CodeGen/CGExprScalar.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp
index 4fa25c5d6666..f319b176513f 100644
--- a/clang/lib/CodeGen/CGExprScalar.cpp
+++ b/clang/lib/CodeGen/CGExprScalar.cpp
@@ -3672,17 +3672,19 @@ Value *ScalarExprEmitter::VisitReal(const UnaryOperator *E,
// If it's an l-value, load through the appropriate subobject l-value.
// Note that we have to ask E because Op might be an l-value that
// this won't work for, e.g. an Obj-C property.
- if (E->isGLValue()) {
+ if (E->isGLValue()) {
if (!PromotionType.isNull()) {
CodeGenFunction::ComplexPairTy result = CGF.EmitComplexExpr(
Op, /*IgnoreReal*/ IgnoreResultAssign, /*IgnoreImag*/ true);
- if (result.first)
- result.first = CGF.EmitPromotedValue(result, PromotionType).first;
- return result.first;
- } else {
- return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc())
- .getScalarVal();
+ PromotionType = PromotionType->isAnyComplexType()
+ ? PromotionType
+ : CGF.getContext().getComplexType(PromotionType);
+ return result.first ? CGF.EmitPromotedValue(result, PromotionType).first
+ : result.first;
}
+
+ return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc())
+ .getScalarVal();
}
// Otherwise, calculate and project.
return CGF.EmitComplexExpr(Op, false, true).first;
@@ -3715,13 +3717,16 @@ Value *ScalarExprEmitter::VisitImag(const UnaryOperator *E,
if (!PromotionType.isNull()) {
CodeGenFunction::ComplexPairTy result = CGF.EmitComplexExpr(
Op, /*IgnoreReal*/ true, /*IgnoreImag*/ IgnoreResultAssign);
- if (result.second)
- result.second = CGF.EmitPromotedValue(result, PromotionType).second;
- return result.second;
- } else {
- return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc())
- .getScalarVal();
+ PromotionType = PromotionType->isAnyComplexType()
+ ? PromotionType
+ : CGF.getContext().getComplexType(PromotionType);
+ return result.second
+ ? CGF.EmitPromotedValue(result, PromotionType).second
+ : result.second;
}
+
+ return CGF.EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc())
+ .getScalarVal();
}
// Otherwise, calculate and project.
return CGF.EmitComplexExpr(Op, true, false).second;