From: Chris Lattner Date: Thu, 18 Oct 2007 03:50:33 +0000 (+0000) Subject: UsualArithmeticConversions is crashing with an assert X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27b837c3b884b27279f7550361ef73b9896c7510;p=clang UsualArithmeticConversions is crashing with an assert when comparing "float" and "const float". This "fixes" the issue, but may not be the right fix. Steve, please review. Testcase here: test/Sema/usual-float.c git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43113 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Sema/SemaExpr.cpp b/Sema/SemaExpr.cpp index 6aebd1626a..f3381b8148 100644 --- a/Sema/SemaExpr.cpp +++ b/Sema/SemaExpr.cpp @@ -868,8 +868,8 @@ QualType Sema::UsualArithmeticConversions(Expr *&lhsExpr, Expr *&rhsExpr, QualType rhs = rhsExpr->getType(); // If both types are identical, no conversion is needed. - if (lhs == rhs) - return lhs; + if (lhs.getTypePtr() == rhs.getTypePtr()) + return lhs.getQualifiedType(0); // If either side is a non-arithmetic type (e.g. a pointer), we are done. // The caller can deal with this (e.g. pointer + int). diff --git a/test/Sema/usual-float.c b/test/Sema/usual-float.c new file mode 100644 index 0000000000..81e9e6d04b --- /dev/null +++ b/test/Sema/usual-float.c @@ -0,0 +1,6 @@ +// RUN: clang %s -fsyntax-only + +void foo(int dir, int n, int tindex) { + const float PI = 3.142; +float ang = (float) tindex * (-dir*2.0f*PI/n); +}