[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