Implement __builtin_choose_expr

Follows GCC implementation.
This commit is contained in:
Michael Matz
2016-07-13 15:11:40 +02:00
parent 10e4db45dc
commit 8a1a2a6033
3 changed files with 43 additions and 0 deletions

View File

@ -2685,6 +2685,9 @@ int constant_p_var;
int constant_p_var;
void builtin_test(void)
{
short s;
int i;
long long ll;
#if GCC_MAJOR >= 3
@ -2704,6 +2707,16 @@ void builtin_test(void)
#endif
printf("res = %d\n", __builtin_constant_p(1));
printf("res = %d\n", __builtin_constant_p(1 + 2));
printf("res = %d\n", __builtin_constant_p(&constant_p_var));
printf("res = %d\n", __builtin_constant_p(constant_p_var));
s = 1;
ll = 2;
i = __builtin_choose_expr (1 != 0, ll, s);
printf("bce: %d\n", i);
i = __builtin_choose_expr (1 != 1, ll, s);
printf("bce: %d\n", i);
i = sizeof (__builtin_choose_expr (1, ll, s));
printf("bce: %d\n", i);
i = sizeof (__builtin_choose_expr (0, ll, s));
printf("bce: %d\n", i);
}