From 80343ab7d829c21c65f8f9a14dd20158d028549f Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Sat, 26 Mar 2016 17:57:22 +0100 Subject: Fix assignment to/from volatile types Code like this was broken: char volatile vi = i; See testcase, happens in ideosyncratic legacy code sprinkling volatile all over. --- tests/tcctest.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tests/tcctest.c') diff --git a/tests/tcctest.c b/tests/tcctest.c index 381a992..823a657 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -119,6 +119,8 @@ int isid(int c); void funny_line_continuation (int, ..\ . ); +char via_volatile (char); + #define A 2 #define N 1234 + A #define pf printf @@ -693,6 +695,8 @@ int main(int argc, char **argv) callsave_test(); builtin_frame_address_test(); intdiv_test(); + if (via_volatile (42) != 42) + printf ("via_volatile broken\n"); return 0; } @@ -2848,3 +2852,10 @@ void builtin_frame_address_test(void) bfa1(str-fp0); #endif } + +char via_volatile (char i) +{ + char volatile vi; + vi = i; + return vi; +} -- cgit v1.3.1