/* PR tree-optimization/58209 */ extern void abort (void); typedef __INTPTR_TYPE__ T; T buf[1024]; T * foo (T n) { if (n == 0) return (T *) buf; T s = (T) foo (n - 1); return (T *) (s + sizeof (T)); } T * bar (T n) { if (n == 0) return buf; return foo (n - 1) + 1; } int main () { int i; for (i = 0; i < 27; i++) if (foo (i) != buf + i || bar (i) != buf + i) abort (); return 0; }