On Thu, Jun 3, 2010 at 4:18 PM, Douglas Gregor <[email protected]> wrote: > > On Jun 3, 2010, at 12:58 PM, Eli Friedman wrote: > >> Author: efriedma >> Date: Thu Jun 3 14:58:07 2010 >> New Revision: 105404 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=105404&view=rev >> Log: >> Don't intentionally try to ignore the value of a scalar expression when we >> actually care about it. Fixes PR7291. >> >> >> Added: >> cfe/trunk/test/CodeGenCXX/member-init-assignment.cpp >> Modified: >> cfe/trunk/lib/CodeGen/CGClass.cpp >> >> Modified: cfe/trunk/lib/CodeGen/CGClass.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGClass.cpp?rev=105404&r1=105403&r2=105404&view=diff >> ============================================================================== >> --- cfe/trunk/lib/CodeGen/CGClass.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CGClass.cpp Thu Jun 3 14:58:07 2010 >> @@ -467,7 +467,7 @@ >> } else if (FieldType->isArrayType() && !MemberInit->getInit()) { >> CGF.EmitNullInitialization(LHS.getAddress(), Field->getType()); >> } else if (!CGF.hasAggregateLLVMType(Field->getType())) { >> - RHS = RValue::get(CGF.EmitScalarExpr(MemberInit->getInit(), true)); >> + RHS = RValue::get(CGF.EmitScalarExpr(MemberInit->getInit())); >> CGF.EmitStoreThroughLValue(RHS, LHS, FieldType); >> } else if (MemberInit->getInit()->getType()->isAnyComplexType()) { >> CGF.EmitComplexExprIntoAddr(MemberInit->getInit(), LHS.getAddress(), >> >> Added: cfe/trunk/test/CodeGenCXX/member-init-assignment.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/member-init-assignment.cpp?rev=105404&view=auto >> ============================================================================== >> --- cfe/trunk/test/CodeGenCXX/member-init-assignment.cpp (added) >> +++ cfe/trunk/test/CodeGenCXX/member-init-assignment.cpp Thu Jun 3 14:58:07 >> 2010 >> @@ -0,0 +1,12 @@ >> +// RUN: %clang_cc1 %s -emit-llvm-only -verify >> +// PR7291 >> + >> +struct Foo { >> + unsigned file_id; >> + >> + Foo(unsigned arg); >> +}; >> + >> +Foo::Foo(unsigned arg) : file_id(arg = 42) >> +{ } >> + > > Could we check the generated IR in this test? > > - Doug
Sure; done in r105434. -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
