# HG changeset patch # User Anders Halager # Date 1211723365 -7200 # Node ID 244142a21cbc54ab8c3fde18fd611837db41303c # Parent d03b011c50e96623e737f83bfaa5337e3865d02a Fix derefs as lvalues diff -r d03b011c50e9 -r 244142a21cbc gen/CodeGen.d --- a/gen/CodeGen.d Sun May 25 15:48:13 2008 +0200 +++ b/gen/CodeGen.d Sun May 25 15:49:25 2008 +0200 @@ -629,10 +629,10 @@ // LValue(*x): x // RValue(*x): load(x) // This way *x = *x + 1 will work - // TODO: Get's an i32** rather than i32* because it's alloc'd - // so there needs to be a load? + // We get an i32** rather than i32* because it's alloc'd + // so there needs to be a load auto DE = cast(DerefExp)exp; - return genLValue(DE.exp); + return LValue(genExpression(DE.exp).value); case ExpType.Index: auto indexExp = cast(IndexExp)exp; auto type = indexExp.target.type; diff -r d03b011c50e9 -r 244142a21cbc tests/sema/deref_3.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/sema/deref_3.d Sun May 25 15:49:25 2008 +0200 @@ -0,0 +1,10 @@ +int main() +{ + int *a; + int **b; + *a = 1; + *b = a; + + return *a == **b; +} +