llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Yingwei Zheng (dtcxzyw) <details> <summary>Changes</summary> This patch handles formatting of real and imaginary parts of complex lvalue. Fixes #<!-- -->69218. --- Full diff: https://github.com/llvm/llvm-project/pull/69252.diff 2 Files Affected: - (modified) clang/lib/AST/APValue.cpp (+4) - (modified) clang/test/CodeGen/complex.c (+5) ``````````diff diff --git a/clang/lib/AST/APValue.cpp b/clang/lib/AST/APValue.cpp index ef424215182280b..d08c2936b56dd45 100644 --- a/clang/lib/AST/APValue.cpp +++ b/clang/lib/AST/APValue.cpp @@ -841,6 +841,10 @@ void APValue::printPretty(raw_ostream &Out, const PrintingPolicy &Policy, Out << *VD; ElemTy = VD->getType(); } + } else if (ElemTy->isAnyComplexType()) { + // The lvalue refers to a complex type + Out << (Path[I].getAsArrayIndex() == 0 ? ".real" : ".imag"); + ElemTy = ElemTy->castAs<ComplexType>()->getElementType(); } else { // The lvalue must refer to an array. Out << '[' << Path[I].getAsArrayIndex() << ']'; diff --git a/clang/test/CodeGen/complex.c b/clang/test/CodeGen/complex.c index 6233529a18f8b8d..b50d607d00c0167 100644 --- a/clang/test/CodeGen/complex.c +++ b/clang/test/CodeGen/complex.c @@ -113,3 +113,8 @@ void t92(void) { (0 ? (_Complex double) 2.0f : 2.0f); } +// PR69218 +int t10(void) { + float _Complex a; + return (0 < &__real__ a) && (0 < &__imag__ a); +} `````````` </details> https://github.com/llvm/llvm-project/pull/69252 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits