diff options
| -rw-r--r-- | libacc/acc.cpp | 2 | ||||
| -rw-r--r-- | libacc/tests/data/assignment.c | 9 | ||||
| -rw-r--r-- | libacc/tests/test.py | 5 |
3 files changed, 16 insertions, 0 deletions
diff --git a/libacc/acc.cpp b/libacc/acc.cpp index 6d9213c7..808752e3 100644 --- a/libacc/acc.cpp +++ b/libacc/acc.cpp @@ -1666,6 +1666,7 @@ class Compiler : public ErrorSink { pDestType->tag); break; } + setR0Type(pDestType); } virtual void loadR0FromR0() { @@ -2836,6 +2837,7 @@ class Compiler : public ErrorSink { pTargetType->tag); break; } + setR0Type(pTargetType); } virtual void loadR0FromR0() { diff --git a/libacc/tests/data/assignment.c b/libacc/tests/data/assignment.c new file mode 100644 index 00000000..4fc7801d --- /dev/null +++ b/libacc/tests/data/assignment.c @@ -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; +} diff --git a/libacc/tests/test.py b/libacc/tests/test.py index c982d16c..d9843011 100644 --- a/libacc/tests/test.py +++ b/libacc/tests/test.py @@ -426,6 +426,11 @@ result: 0 result: -2 ""","""""") + def testAssignment(self): + self.compileCheck(["-R", "data/assignment.c"], """Executing compiled code: +result: 7 +""","""""") + def testArray(self): self.compileCheck(["-R", "data/array.c"], """Executing compiled code: localInt: 3 |
