| /* Simplified from PR target/5309. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| /* { dg-options "-O2 -mcpu=ultrasparc" { target sparc64-*-* sparcv9-*-* } } */ |
| |
| #if __INT_MAX__ > 32767 |
| #define PTR_TYPE long |
| #else |
| /* For 16-bit ports a long is a 32-bit quantity. So you cannot |
| cast a 32-bit long integer into a pointer which will only be |
| 16-bits long. */ |
| #define PTR_TYPE int |
| #endif |
| |
| extern PTR_TYPE bar (unsigned int); |
| |
| PTR_TYPE |
| foo (PTR_TYPE x, unsigned int y) |
| { |
| return *(((PTR_TYPE *) (bar (y) - 1)) + 1 + (x >> 2) % 359); |
| } |