aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libacc/acc.cpp2
-rw-r--r--libacc/tests/data/assignment.c9
-rw-r--r--libacc/tests/test.py5
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