From 6471ec0a2bd523edd4bbc79277a33d0b853940fa Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Sat, 14 Apr 2012 23:50:21 +0200 Subject: Fix conversion in a?0:ptr. (cond ? 0 : ptr)->member wasn't handled correctly. If one arm is a null pointer constant (which also can be a pointer) the result type is that of the other arm. --- tests/tcctest.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'tests/tcctest.c') diff --git a/tests/tcctest.c b/tests/tcctest.c index f0d82cf..723adc1 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -2486,3 +2486,16 @@ void const_warn_test(void) { const_func(1); } + +struct condstruct { + int i; +}; + +int getme (struct condstruct *s, int i) +{ + int i1 = (i == 0 ? 0 : s)->i; + int i2 = (i == 0 ? s : 0)->i; + int i3 = (i == 0 ? (void*)0 : s)->i; + int i4 = (i == 0 ? s : (void*)0)->i; + return i1 + i2 + i3 + i4; +} -- cgit v1.3.1