]> granicus.if.org Git - clang/commitdiff
Avoid to emit redundant implicit cast for enum constants init expressions.
authorAbramo Bagnara <abramo.bagnara@gmail.com>
Fri, 17 Dec 2010 12:21:11 +0000 (12:21 +0000)
committerAbramo Bagnara <abramo.bagnara@gmail.com>
Fri, 17 Dec 2010 12:21:11 +0000 (12:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122056 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/Index/load-decls.c

index 3f94bdc6697fb8775ac22f8d2c3444dca9cd3fa8..5fb5cbaa4508d957043d1c2dfc5ebed828a70532 100644 (file)
@@ -7745,7 +7745,7 @@ void Sema::ActOnEnumBody(SourceLocation EnumLoc, SourceLocation LBraceLoc,
     ECD->setInitVal(InitVal);
 
     // Adjust the Expr initializer and type.
-    if (ECD->getInitExpr())
+    if (ECD->getInitExpr() && NewTy != ECD->getInitExpr()->getType())
       ECD->setInitExpr(ImplicitCastExpr::Create(Context, NewTy,
                                                 CK_IntegralCast,
                                                 ECD->getInitExpr(),
index cf88f4285c6668e0032a03dd09a2ebd062dbb28a..e0617c07df422dc172a4f05adb61d3dd1bb520b6 100644 (file)
@@ -12,5 +12,4 @@ enum Color {
 // CHECK: load-decls.c:3:3: EnumConstantDecl=Green:3:3 (Definition) Extent=[3:3 - 3:8]
 // CHECK: load-decls.c:4:3: EnumConstantDecl=Blue:4:3 (Definition) Extent=[4:3 - 4:7]
 // CHECK: load-decls.c:6:3: EnumConstantDecl=Rouge:6:3 (Definition) Extent=[6:3 - 6:14]
-// CHECK: load-decls.c:6:11: UnexposedExpr=Red:2:3 Extent=[6:11 - 6:14]
 // CHECK: load-decls.c:6:11: DeclRefExpr=Red:2:3 Extent=[6:11 - 6:14]