On Thu, May 23, 2013 at 3:03 PM, Jordan Rose <[email protected]> wrote:
> Eek. This would have been caught by -Wshadow, right? Can we rename the > local Dest to something else? > Seems like a good idea, although I'm not sure it entirely removes the risk. > Jordan > > > On May 23, 2013, at 14:54 , Richard Smith <[email protected]> > wrote: > > Author: rsmith > Date: Thu May 23 16:54:14 2013 > New Revision: 182615 > > URL: http://llvm.org/viewvc/llvm-project?rev=182615&view=rev > Log: > Fix assert on temporary std::initializer_list. > > Modified: > cfe/trunk/lib/CodeGen/CGExprAgg.cpp > cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp > > Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=182615&r1=182614&r2=182615&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Thu May 23 16:54:14 2013 > @@ -1159,12 +1159,13 @@ void AggExprEmitter::VisitInitListExpr(I > if (E->hadArrayRangeDesignator()) > CGF.ErrorUnsupported(E, "GNU array range designator extension"); > > + AggValueSlot Dest = EnsureSlot(E->getType()); > + > if (E->initializesStdInitializerList()) { > EmitStdInitializerList(Dest.getAddr(), E); > return; > } > > - AggValueSlot Dest = EnsureSlot(E->getType()); > LValue DestLV = CGF.MakeAddrLValue(Dest.getAddr(), E->getType(), > Dest.getAlignment()); > > > Modified: > cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp?rev=182615&r1=182614&r2=182615&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp > (original) > +++ cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp Thu > May 23 16:54:14 2013 > @@ -275,3 +275,13 @@ namespace rdar13325066 { > for (X x : { x1, x2 }) { } > } > } > + > +namespace dtors { > + struct S { > + S(); > + ~S(); > + }; > + void f() { > + std::initializer_list<S>{ S(), S() }; > + } > +} > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
