/* This code is from the beginning of combine_reloads in reload.c in GCC 3.1-20020117, with simplifications. It compiled incorrectly for -O2 -fprefetch-loop-arrays for ix86 targets. */ /* { dg-do run } */ /* { dg-options "-O2 -fprefetch-loop-arrays -w" } */ /* { dg-options "-O2 -fprefetch-loop-arrays -mtune=pentium3 -w" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ struct reload { int first_member; int out; int final_member; }; int n_reloads; struct reload rld[10]; static int combine_reloads () { int i; int output_reload = -1; int secondary_out = -1; for (i = 0; i < n_reloads; i++) if (rld[i].out != 0) { if (output_reload >= 0) return output_reload; output_reload = i; } return output_reload; } int main () { n_reloads = 4; rld[2].out = 2; if (combine_reloads () != 2) abort (); exit (0); }