1/* PR rtl-optimization/49095 */ 2/* { dg-do compile } */ 3/* { dg-options "-Os" } */ 4/* { dg-options "-Os -mregparm=2" { target ia32 } } */ 5 6void foo (void *); 7 8int * 9f1 (int *x) 10{ 11 if (!--*x) 12 foo (x); 13 return x; 14} 15 16int 17g1 (int x) 18{ 19 if (!--x) 20 foo ((void *) 0); 21 return x; 22} 23 24#define F(T, OP, OPN) \ 25T * \ 26f##T##OPN (T *x, T y) \ 27{ \ 28 *x OP y; \ 29 if (!*x) \ 30 foo (x); \ 31 return x; \ 32} \ 33 \ 34T \ 35g##T##OPN (T x, T y) \ 36{ \ 37 x OP y; \ 38 if (!x) \ 39 foo ((void *) 0); \ 40 return x; \ 41} \ 42 \ 43T * \ 44h##T##OPN (T *x) \ 45{ \ 46 *x OP 24; \ 47 if (!*x) \ 48 foo (x); \ 49 return x; \ 50} \ 51 \ 52T \ 53i##T##OPN (T x, T y) \ 54{ \ 55 x OP 24; \ 56 if (!x) \ 57 foo ((void *) 0); \ 58 return x; \ 59} 60 61#define G(T) \ 62F (T, +=, plus) \ 63F (T, -=, minus) \ 64F (T, &=, and) \ 65F (T, |=, or) \ 66F (T, ^=, xor) 67 68G (char) 69G (short) 70G (int) 71G (long) 72 73/* See PR61225 for the XFAIL. */ 74/* { dg-final { scan-assembler-not "test\[lq\]" { xfail { ia32 } } } } */ 75