summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-3141.c
blob: afd867c0d8c79c39320527c7a0cdafabe0ad4701 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* bug 3141
   a bug in code generation for stm8 large memory model (24-bit function pointers),
   when returning function pointers fromk a function with a single 16-bit parameter while optimizing for code size.
 */
#include <testfwk.h>

#pragma opt_code_size

void f(void)
{
}

typedef void (*p) (void);

p g(int b)
{
	return (b ? &f : (p)0);
}

void testBug(void)
{
	ASSERT (g(0) == 0);
	ASSERT (g(1) == &f);
}