am 02effee6: Correctly compute the type of an assignment expression.
Merge commit '02effee6a9224b531cb3fe6eac8278b46b9fbe86' into eclair-mr2 * commit '02effee6a9224b531cb3fe6eac8278b46b9fbe86': Correctly compute the type of an assignment expression.
This commit is contained in:
commit
51da51a2d1
3 changed files with 16 additions and 0 deletions
|
|
@ -1666,6 +1666,7 @@ class Compiler : public ErrorSink {
|
||||||
pDestType->tag);
|
pDestType->tag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
setR0Type(pDestType);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void loadR0FromR0() {
|
virtual void loadR0FromR0() {
|
||||||
|
|
@ -2836,6 +2837,7 @@ class Compiler : public ErrorSink {
|
||||||
pTargetType->tag);
|
pTargetType->tag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
setR0Type(pTargetType);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void loadR0FromR0() {
|
virtual void loadR0FromR0() {
|
||||||
|
|
|
||||||
9
libacc/tests/data/assignment.c
Normal file
9
libacc/tests/data/assignment.c
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
int main() {
|
||||||
|
int a = 0;
|
||||||
|
int b = 1;
|
||||||
|
a = b = 2; // Test that "b = 2" generates an rvalue.
|
||||||
|
if (a = 7) { // Test that a = 7 generates an rvalue.
|
||||||
|
b = 3;
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
@ -424,6 +424,11 @@ result: 0
|
||||||
def testShort(self):
|
def testShort(self):
|
||||||
self.compileCheck(["-R", "data/short.c"], """Executing compiled code:
|
self.compileCheck(["-R", "data/short.c"], """Executing compiled code:
|
||||||
result: -2
|
result: -2
|
||||||
|
""","""""")
|
||||||
|
|
||||||
|
def testAssignment(self):
|
||||||
|
self.compileCheck(["-R", "data/assignment.c"], """Executing compiled code:
|
||||||
|
result: 7
|
||||||
""","""""")
|
""","""""")
|
||||||
|
|
||||||
def testArray(self):
|
def testArray(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue