[cfe-commits] r144850 - in /cfe/trunk: lib/Sema/SemaExprCXX.cpp lib/Sema/SemaInit.cpp lib/Sema/SemaOverload.cpp test/Analysis/auto-obj-dtors-cfg-output.cpp test/Analysis/temp-obj-dtors-cfg-output.cpp

Abramo Bagnara abramo.bagnara at gmail.com
Wed Nov 16 14:46:06 PST 2011


Author: abramo
Date: Wed Nov 16 16:46:05 2011
New Revision: 144850

URL: http://llvm.org/viewvc/llvm-project?rev=144850&view=rev
Log:
Added missing ImplicitCastExpr around conversion operator call.

Modified:
    cfe/trunk/lib/Sema/SemaExprCXX.cpp
    cfe/trunk/lib/Sema/SemaInit.cpp
    cfe/trunk/lib/Sema/SemaOverload.cpp
    cfe/trunk/test/Analysis/auto-obj-dtors-cfg-output.cpp
    cfe/trunk/test/Analysis/temp-obj-dtors-cfg-output.cpp

Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=144850&r1=144849&r2=144850&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Wed Nov 16 16:46:05 2011
@@ -2099,6 +2099,12 @@
                                                  HadMultipleCandidates);
     if (Result.isInvalid())
       return ExprError();
+    // Record usage of conversion in an implicit cast.
+    Result = S.Owned(ImplicitCastExpr::Create(S.Context,
+                                              Result.get()->getType(),
+                                              CK_UserDefinedConversion,
+                                              Result.get(), 0,
+                                              Result.get()->getValueKind()));
 
     S.CheckMemberOperatorAccess(CastLoc, From, /*arg*/ 0, FoundDecl);
 
@@ -4560,7 +4566,7 @@
 
   MemberExpr *ME =
       new (Context) MemberExpr(Exp.take(), /*IsArrow=*/false, Method,
-                               SourceLocation(), Method->getType(),
+                               SourceLocation(), Context.BoundMemberTy,
                                VK_RValue, OK_Ordinary);
   if (HadMultipleCandidates)
     ME->setHadMultipleCandidates(true);

Modified: cfe/trunk/lib/Sema/SemaInit.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=144850&r1=144849&r2=144850&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)
+++ cfe/trunk/lib/Sema/SemaInit.cpp Wed Nov 16 16:46:05 2011
@@ -4676,9 +4676,9 @@
       }
 
       bool RequiresCopy = !IsCopy && !isReferenceBinding(Steps.back());
-      if (RequiresCopy || shouldBindAsTemporary(Entity))
-        CurInit = S.MaybeBindToTemporary(CurInit.takeAs<Expr>());
-      else if (CreatedObject && shouldDestroyTemporary(Entity)) {
+      bool MaybeBindToTemp = RequiresCopy || shouldBindAsTemporary(Entity);
+
+      if (!MaybeBindToTemp && CreatedObject && shouldDestroyTemporary(Entity)) {
         QualType T = CurInit.get()->getType();
         if (const RecordType *Record = T->getAs<RecordType>()) {
           CXXDestructorDecl *Destructor
@@ -4694,11 +4694,11 @@
                                                  CurInit.get()->getType(),
                                                  CastKind, CurInit.get(), 0,
                                                 CurInit.get()->getValueKind()));
-
+      if (MaybeBindToTemp)
+        CurInit = S.MaybeBindToTemporary(CurInit.takeAs<Expr>());
       if (RequiresCopy)
         CurInit = CopyObject(S, Entity.getType().getNonReferenceType(), Entity,
                              move(CurInit), /*IsExtraneousCopy=*/false);
-
       break;
     }
 

Modified: cfe/trunk/lib/Sema/SemaOverload.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=144850&r1=144849&r2=144850&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOverload.cpp Wed Nov 16 16:46:05 2011
@@ -4309,8 +4309,11 @@
                                                  HadMultipleCandidates);
       if (Result.isInvalid())
         return ExprError();
-
-      From = Result.get();
+      // Record usage of conversion in an implicit cast.
+      From = ImplicitCastExpr::Create(Context, Result.get()->getType(),
+                                      CK_UserDefinedConversion,
+                                      Result.get(), 0,
+                                      Result.get()->getValueKind());
     }
 
     // We'll complain below about a non-integral condition type.
@@ -4337,8 +4340,11 @@
                                                HadMultipleCandidates);
     if (Result.isInvalid())
       return ExprError();
-
-    From = Result.get();
+    // Record usage of conversion in an implicit cast.
+    From = ImplicitCastExpr::Create(Context, Result.get()->getType(),
+                                    CK_UserDefinedConversion,
+                                    Result.get(), 0,
+                                    Result.get()->getValueKind());
     break;
   }
 
@@ -9810,6 +9816,10 @@
                                              Conv, HadMultipleCandidates);
     if (Call.isInvalid())
       return ExprError();
+    // Record usage of conversion in an implicit cast.
+    Call = Owned(ImplicitCastExpr::Create(Context, Call.get()->getType(),
+                                          CK_UserDefinedConversion,
+                                          Call.get(), 0, VK_RValue));
 
     return ActOnCallExpr(S, Call.get(), LParenLoc, MultiExprArg(Args, NumArgs),
                          RParenLoc);

Modified: cfe/trunk/test/Analysis/auto-obj-dtors-cfg-output.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/auto-obj-dtors-cfg-output.cpp?rev=144850&r1=144849&r2=144850&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/auto-obj-dtors-cfg-output.cpp (original)
+++ cfe/trunk/test/Analysis/auto-obj-dtors-cfg-output.cpp Wed Nov 16 16:46:05 2011
@@ -328,7 +328,8 @@
 // CHECK:       9: [B4.8].operator int
 // CHECK:      10: [B4.9]()
 // CHECK:      11: [B4.10]
-// CHECK:       T: if [B4.11]
+// CHECK:      12: [B4.11]
+// CHECK:       T: if [B4.12]
 // CHECK:     Predecessors (1): B5
 // CHECK:     Successors (2): B3 B2
 // CHECK:  [ B0 (EXIT) ]
@@ -401,7 +402,8 @@
 // CHECK:       9: [B8.8].operator int
 // CHECK:      10: [B8.9]()
 // CHECK:      11: [B8.10]
-// CHECK:       T: if [B8.11]
+// CHECK:      12: [B8.11]
+// CHECK:       T: if [B8.12]
 // CHECK:     Predecessors (1): B9
 // CHECK:     Successors (2): B7 B4
 // CHECK:  [ B0 (EXIT) ]
@@ -425,7 +427,8 @@
 // CHECK:       7: [B2.6].operator int
 // CHECK:       8: [B2.7]()
 // CHECK:       9: [B2.8]
-// CHECK:       T: while [B2.9]
+// CHECK:      10: [B2.9]
+// CHECK:       T: while [B2.10]
 // CHECK:     Predecessors (2): B3 B5
 // CHECK:     Successors (2): B4 B1
 // CHECK:  [ B3 ]
@@ -467,7 +470,8 @@
 // CHECK:       7: [B2.6].operator int
 // CHECK:       8: [B2.7]()
 // CHECK:       9: [B2.8]
-// CHECK:       T: while [B2.9]
+// CHECK:      10: [B2.9]
+// CHECK:       T: while [B2.10]
 // CHECK:     Predecessors (2): B3 B11
 // CHECK:     Successors (2): B10 B1
 // CHECK:  [ B3 ]
@@ -637,7 +641,8 @@
 // CHECK:       8: [B2.7]
 // CHECK:       9: [B2.8].operator int
 // CHECK:      10: [B2.9]()
-// CHECK:       T: switch [B2.10]
+// CHECK:      11: [B2.10]
+// CHECK:       T: switch [B2.11]
 // CHECK:     Predecessors (1): B4
 // CHECK:     Successors (1): B1
 // CHECK:  [ B3 ]
@@ -671,7 +676,8 @@
 // CHECK:       8: [B2.7]
 // CHECK:       9: [B2.8].operator int
 // CHECK:      10: [B2.9]()
-// CHECK:       T: switch [B2.10]
+// CHECK:      11: [B2.10]
+// CHECK:       T: switch [B2.11]
 // CHECK:     Predecessors (1): B9
 // CHECK:     Successors (3): B3 B8
 // CHECK:      B1
@@ -735,7 +741,8 @@
 // CHECK:       7: [B2.6].operator int
 // CHECK:       8: [B2.7]()
 // CHECK:       9: [B2.8]
-// CHECK:       T: for (...; [B2.9]; )
+// CHECK:      10: [B2.9]
+// CHECK:       T: for (...; [B2.10]; )
 // CHECK:     Predecessors (2): B3 B5
 // CHECK:     Successors (2): B4 B1
 // CHECK:  [ B3 ]
@@ -778,7 +785,8 @@
 // CHECK:       7: [B2.6].operator int
 // CHECK:       8: [B2.7]()
 // CHECK:       9: [B2.8]
-// CHECK:       T: for (...; [B2.9]; )
+// CHECK:      10: [B2.9]
+// CHECK:       T: for (...; [B2.10]; )
 // CHECK:     Predecessors (2): B3 B11
 // CHECK:     Successors (2): B10 B1
 // CHECK:  [ B3 ]

Modified: cfe/trunk/test/Analysis/temp-obj-dtors-cfg-output.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/temp-obj-dtors-cfg-output.cpp?rev=144850&r1=144849&r2=144850&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/temp-obj-dtors-cfg-output.cpp (original)
+++ cfe/trunk/test/Analysis/temp-obj-dtors-cfg-output.cpp Wed Nov 16 16:46:05 2011
@@ -163,11 +163,11 @@
 // CHECK:     Predecessors (1): B3
 // CHECK:     Successors (1): B1
 // CHECK:  [ B3 ]
-// CHECK:       1: [B4.5] && [B5.4]
+// CHECK:       1: [B4.6] && [B5.5]
 // CHECK:       2: foo
 // CHECK:       3: [B3.2]
 // CHECK:       4: [B3.3]([B3.1])
-// CHECK:       T: [B4.5] && ...
+// CHECK:       T: [B4.6] && ...
 // CHECK:     Predecessors (2): B5 B4
 // CHECK:     Successors (2): B2 B1
 // CHECK:  [ B4 ]
@@ -176,7 +176,8 @@
 // CHECK:       3: [B4.2] (BindTemporary)
 // CHECK:       4: [B4.3].operator _Bool
 // CHECK:       5: [B4.4]()
-// CHECK:       T: [B4.5] && ...
+// CHECK:       6: [B4.5]
+// CHECK:       T: [B4.6] && ...
 // CHECK:     Predecessors (2): B6 B7
 // CHECK:     Successors (2): B5 B3
 // CHECK:  [ B5 ]
@@ -184,6 +185,7 @@
 // CHECK:       2: [B5.1] (BindTemporary)
 // CHECK:       3: [B5.2].operator _Bool
 // CHECK:       4: [B5.3]()
+// CHECK:       5: [B5.4]
 // CHECK:     Predecessors (1): B4
 // CHECK:     Successors (1): B3
 // CHECK:  [ B6 ]
@@ -191,9 +193,9 @@
 // CHECK:     Predecessors (1): B7
 // CHECK:     Successors (1): B4
 // CHECK:  [ B7 ]
-// CHECK:       1: [B8.4] && [B9.4]
+// CHECK:       1: [B8.5] && [B9.5]
 // CHECK:       2: bool a = A().operator _Bool() && B().operator _Bool();
-// CHECK:       T: [B8.4] && ...
+// CHECK:       T: [B8.5] && ...
 // CHECK:     Predecessors (2): B9 B8
 // CHECK:     Successors (2): B6 B4
 // CHECK:  [ B8 ]
@@ -201,7 +203,8 @@
 // CHECK:       2: [B8.1] (BindTemporary)
 // CHECK:       3: [B8.2].operator _Bool
 // CHECK:       4: [B8.3]()
-// CHECK:       T: [B8.4] && ...
+// CHECK:       5: [B8.4]
+// CHECK:       T: [B8.5] && ...
 // CHECK:     Predecessors (1): B10
 // CHECK:     Successors (2): B9 B7
 // CHECK:  [ B9 ]
@@ -209,6 +212,7 @@
 // CHECK:       2: [B9.1] (BindTemporary)
 // CHECK:       3: [B9.2].operator _Bool
 // CHECK:       4: [B9.3]()
+// CHECK:       5: [B9.4]
 // CHECK:     Predecessors (1): B8
 // CHECK:     Successors (1): B7
 // CHECK:  [ B0 (EXIT) ]
@@ -227,11 +231,11 @@
 // CHECK:     Predecessors (1): B3
 // CHECK:     Successors (1): B1
 // CHECK:  [ B3 ]
-// CHECK:       1: [B4.5] || [B5.4]
+// CHECK:       1: [B4.6] || [B5.5]
 // CHECK:       2: foo
 // CHECK:       3: [B3.2]
 // CHECK:       4: [B3.3]([B3.1])
-// CHECK:       T: [B4.5] || ...
+// CHECK:       T: [B4.6] || ...
 // CHECK:     Predecessors (2): B5 B4
 // CHECK:     Successors (2): B1 B2
 // CHECK:  [ B4 ]
@@ -240,7 +244,8 @@
 // CHECK:       3: [B4.2] (BindTemporary)
 // CHECK:       4: [B4.3].operator _Bool
 // CHECK:       5: [B4.4]()
-// CHECK:       T: [B4.5] || ...
+// CHECK:       6: [B4.5]
+// CHECK:       T: [B4.6] || ...
 // CHECK:     Predecessors (2): B6 B7
 // CHECK:     Successors (2): B3 B5
 // CHECK:  [ B5 ]
@@ -248,6 +253,7 @@
 // CHECK:       2: [B5.1] (BindTemporary)
 // CHECK:       3: [B5.2].operator _Bool
 // CHECK:       4: [B5.3]()
+// CHECK:       5: [B5.4]
 // CHECK:     Predecessors (1): B4
 // CHECK:     Successors (1): B3
 // CHECK:  [ B6 ]
@@ -255,9 +261,9 @@
 // CHECK:     Predecessors (1): B7
 // CHECK:     Successors (1): B4
 // CHECK:  [ B7 ]
-// CHECK:       1: [B8.4] || [B9.4]
+// CHECK:       1: [B8.5] || [B9.5]
 // CHECK:       2: bool a = A().operator _Bool() || B().operator _Bool();
-// CHECK:       T: [B8.4] || ...
+// CHECK:       T: [B8.5] || ...
 // CHECK:     Predecessors (2): B9 B8
 // CHECK:     Successors (2): B4 B6
 // CHECK:  [ B8 ]
@@ -265,7 +271,8 @@
 // CHECK:       2: [B8.1] (BindTemporary)
 // CHECK:       3: [B8.2].operator _Bool
 // CHECK:       4: [B8.3]()
-// CHECK:       T: [B8.4] || ...
+// CHECK:       5: [B8.4]
+// CHECK:       T: [B8.5] || ...
 // CHECK:     Predecessors (1): B10
 // CHECK:     Successors (2): B7 B9
 // CHECK:  [ B9 ]
@@ -273,6 +280,7 @@
 // CHECK:       2: [B9.1] (BindTemporary)
 // CHECK:       3: [B9.2].operator _Bool
 // CHECK:       4: [B9.3]()
+// CHECK:       5: [B9.4]
 // CHECK:     Predecessors (1): B8
 // CHECK:     Successors (1): B7
 // CHECK:  [ B0 (EXIT) ]
@@ -306,8 +314,9 @@
 // CHECK:       3: [B4.2] (BindTemporary)
 // CHECK:       4: [B4.3].operator _Bool
 // CHECK:       5: [B4.4]()
-// CHECK:       6: ~B() (Temporary object destructor)
-// CHECK:       T: if [B4.5]
+// CHECK:       6: [B4.5]
+// CHECK:       7: ~B() (Temporary object destructor)
+// CHECK:       T: if [B4.6]
 // CHECK:     Predecessors (2): B5 B6
 // CHECK:     Successors (2): B3 B2
 // CHECK:  [ B5 ]
@@ -323,11 +332,11 @@
 // CHECK:     Predecessors (1): B7
 // CHECK:     Successors (1): B4
 // CHECK:  [ B7 ]
-// CHECK:       1: [B10.4] ? [B8.5] : [B9.13]
+// CHECK:       1: [B10.5] ? [B8.5] : [B9.13]
 // CHECK:       2: [B7.1]
 // CHECK:       3: [B7.2]
 // CHECK:       4: A a = B().operator _Bool() ? A() : A(B().operator A());
-// CHECK:       T: [B10.4] ? ... : ...
+// CHECK:       T: [B10.5] ? ... : ...
 // CHECK:     Predecessors (2): B8 B9
 // CHECK:     Successors (2): B5 B6
 // CHECK:  [ B8 ]
@@ -343,8 +352,8 @@
 // CHECK:       2: [B9.1] (BindTemporary)
 // CHECK:       3: [B9.2].operator A
 // CHECK:       4: [B9.3]()
-// CHECK:       5: [B9.4] (BindTemporary)
-// CHECK:       6: [B9.5]
+// CHECK:       5: [B9.4]
+// CHECK:       6: [B9.5] (BindTemporary)
 // CHECK:       7: [B9.6]
 // CHECK:       8: [B9.7]
 // CHECK:       9: [B9.8] (BindTemporary)
@@ -359,7 +368,8 @@
 // CHECK:       2: [B10.1] (BindTemporary)
 // CHECK:       3: [B10.2].operator _Bool
 // CHECK:       4: [B10.3]()
-// CHECK:       T: [B10.4] ? ... : ...
+// CHECK:       5: [B10.4]
+// CHECK:       T: [B10.5] ? ... : ...
 // CHECK:     Predecessors (1): B11
 // CHECK:     Successors (2): B8 B9
 // CHECK:  [ B0 (EXIT) ]
@@ -387,13 +397,13 @@
 // CHECK:     Predecessors (1): B4
 // CHECK:     Successors (1): B1
 // CHECK:  [ B4 ]
-// CHECK:       1: [B7.5] ? [B5.5] : [B6.13]
+// CHECK:       1: [B7.6] ? [B5.5] : [B6.13]
 // CHECK:       2: [B4.1]
 // CHECK:       3: [B4.2]
 // CHECK:       4: foo
 // CHECK:       5: [B4.4]
 // CHECK:       6: [B4.5]([B4.3])
-// CHECK:       T: [B7.5] ? ... : ...
+// CHECK:       T: [B7.6] ? ... : ...
 // CHECK:     Predecessors (2): B5 B6
 // CHECK:     Successors (2): B2 B3
 // CHECK:  [ B5 ]
@@ -409,8 +419,8 @@
 // CHECK:       2: [B6.1] (BindTemporary)
 // CHECK:       3: [B6.2].operator A
 // CHECK:       4: [B6.3]()
-// CHECK:       5: [B6.4] (BindTemporary)
-// CHECK:       6: [B6.5]
+// CHECK:       5: [B6.4]
+// CHECK:       6: [B6.5] (BindTemporary)
 // CHECK:       7: [B6.6]
 // CHECK:       8: [B6.7]
 // CHECK:       9: [B6.8] (BindTemporary)
@@ -426,7 +436,8 @@
 // CHECK:       3: [B7.2] (BindTemporary)
 // CHECK:       4: [B7.3].operator _Bool
 // CHECK:       5: [B7.4]()
-// CHECK:       T: [B7.5] ? ... : ...
+// CHECK:       6: [B7.5]
+// CHECK:       T: [B7.6] ? ... : ...
 // CHECK:     Predecessors (2): B8 B9
 // CHECK:     Successors (2): B5 B6
 // CHECK:  [ B8 ]
@@ -440,11 +451,11 @@
 // CHECK:     Predecessors (1): B10
 // CHECK:     Successors (1): B7
 // CHECK:  [ B10 ]
-// CHECK:       1: [B13.4] ? [B11.5] : [B12.13]
+// CHECK:       1: [B13.5] ? [B11.5] : [B12.13]
 // CHECK:       2: [B10.1]
 // CHECK:       3: [B10.2]
 // CHECK:       4: const A &a = B().operator _Bool() ? A() : A(B().operator A());
-// CHECK:       T: [B13.4] ? ... : ...
+// CHECK:       T: [B13.5] ? ... : ...
 // CHECK:     Predecessors (2): B11 B12
 // CHECK:     Successors (2): B8 B9
 // CHECK:  [ B11 ]
@@ -460,8 +471,8 @@
 // CHECK:       2: [B12.1] (BindTemporary)
 // CHECK:       3: [B12.2].operator A
 // CHECK:       4: [B12.3]()
-// CHECK:       5: [B12.4] (BindTemporary)
-// CHECK:       6: [B12.5]
+// CHECK:       5: [B12.4]
+// CHECK:       6: [B12.5] (BindTemporary)
 // CHECK:       7: [B12.6]
 // CHECK:       8: [B12.7]
 // CHECK:       9: [B12.8] (BindTemporary)
@@ -476,7 +487,8 @@
 // CHECK:       2: [B13.1] (BindTemporary)
 // CHECK:       3: [B13.2].operator _Bool
 // CHECK:       4: [B13.3]()
-// CHECK:       T: [B13.4] ? ... : ...
+// CHECK:       5: [B13.4]
+// CHECK:       T: [B13.5] ? ... : ...
 // CHECK:     Predecessors (1): B14
 // CHECK:     Successors (2): B11 B12
 // CHECK:  [ B0 (EXIT) ]
@@ -505,7 +517,7 @@
 // CHECK:       2: [B4.1]
 // CHECK:       3: [B4.2]
 // CHECK:       4: A a = A() ?: A();
-// CHECK:       T: [B7.4] ? ... : ...
+// CHECK:       T: [B7.5] ? ... : ...
 // CHECK:     Predecessors (2): B5 B6
 // CHECK:     Successors (2): B2 B3
 // CHECK:  [ B5 ]
@@ -528,7 +540,8 @@
 // CHECK:       2: [B7.1] (BindTemporary)
 // CHECK:       3: .operator _Bool
 // CHECK:       4: [B7.3]()
-// CHECK:       T: [B7.4] ? ... : ...
+// CHECK:       5: [B7.4]
+// CHECK:       T: [B7.5] ? ... : ...
 // CHECK:     Predecessors (1): B8
 // CHECK:     Successors (2): B5 B6
 // CHECK:  [ B0 (EXIT) ]
@@ -559,7 +572,7 @@
 // CHECK:       4: foo
 // CHECK:       5: [B4.4]
 // CHECK:       6: [B4.5]([B4.3])
-// CHECK:       T: [B7.5] ? ... : ...
+// CHECK:       T: [B7.6] ? ... : ...
 // CHECK:     Predecessors (2): B5 B6
 // CHECK:     Successors (2): B2 B3
 // CHECK:  [ B5 ]
@@ -583,7 +596,8 @@
 // CHECK:       3: [B7.2] (BindTemporary)
 // CHECK:       4: .operator _Bool
 // CHECK:       5: [B7.4]()
-// CHECK:       T: [B7.5] ? ... : ...
+// CHECK:       6: [B7.5]
+// CHECK:       T: [B7.6] ? ... : ...
 // CHECK:     Predecessors (2): B9 B8
 // CHECK:     Successors (2): B5 B6
 // CHECK:  [ B8 ]
@@ -595,7 +609,7 @@
 // CHECK:       2: [B9.1]
 // CHECK:       3: [B9.2]
 // CHECK:       4: const A &a = A() ?: A();
-// CHECK:       T: [B12.4] ? ... : ...
+// CHECK:       T: [B12.5] ? ... : ...
 // CHECK:     Predecessors (2): B10 B11
 // CHECK:     Successors (2): B7 B8
 // CHECK:  [ B10 ]
@@ -618,7 +632,8 @@
 // CHECK:       2: [B12.1] (BindTemporary)
 // CHECK:       3: .operator _Bool
 // CHECK:       4: [B12.3]()
-// CHECK:       T: [B12.4] ? ... : ...
+// CHECK:       5: [B12.4]
+// CHECK:       T: [B12.5] ? ... : ...
 // CHECK:     Predecessors (1): B13
 // CHECK:     Successors (2): B10 B11
 // CHECK:  [ B0 (EXIT) ]
@@ -721,10 +736,11 @@
 // CHECK:       3: [B1.2] (BindTemporary)
 // CHECK:       4: [B1.3].operator int
 // CHECK:       5: [B1.4]()
-// CHECK:       6: a
-// CHECK:       7: [B1.6] = [B1.5]
-// CHECK:       8: ~A() (Temporary object destructor)
-// CHECK:       9: int b;
+// CHECK:       6: [B1.5]
+// CHECK:       7: a
+// CHECK:       8: [B1.7] = [B1.6]
+// CHECK:       9: ~A() (Temporary object destructor)
+// CHECK:      10: int b;
 // CHECK:     Predecessors (1): B2
 // CHECK:     Successors (1): B0
 // CHECK:  [ B0 (EXIT) ]
@@ -757,5 +773,3 @@
 // CHECK:  [ B0 (EXIT) ]
 // CHECK:     Predecessors (1): B1
 // CHECK:     Successors (0):
-
-





More information about the cfe-commits mailing list