[cfe-commits] r105404 - in /cfe/trunk: lib/CodeGen/CGClass.cpp test/CodeGenCXX/member-init-assignment.cpp

Douglas Gregor dgregor at apple.com
Thu Jun 3 16:18:24 PDT 2010


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



More information about the cfe-commits mailing list