1/* { dg-options "-O3 -fdump-ipa-inline-details -fno-early-inlining --param large-unit-insns=1" } */ 2/* { dg-add-options bind_pic_locally } */ 3int *hashval; 4int *hash; 5int hash_size; 6 7static int 8lookup_slow (int val) 9{ 10 int i = val % hash_size; 11 while (hashval[i] && hashval[i] != val) 12 i++; 13 return hash[i]; 14} 15 16static inline int 17lookup (int val) 18{ 19 static int cache, cache_val; 20 if (val == cache_val) 21 return cache; 22 else 23 { 24 cache_val = val; 25 cache = lookup_slow (val); 26 return cache; 27 } 28} 29 30int 31test (int i) 32{ 33 return lookup (i) + lookup (2 * i) + lookup (3 * i) + lookup (4 * i) + 34 lookup (5 * i) + lookup (6 * i) + lookup (7 * i) + lookup (8 * i) + 35 lookup (9 * i); 36} 37/* { dg-final { scan-ipa-dump "Wrapper penalty" "inline" } } */ 38/* { dg-final { scan-ipa-dump-not "Inlining lookup_slow to lookup" "inline" } } */ 39/* { dg-final { scan-ipa-dump "Inlining lookup to test" "inline" } } */ 40/* { dg-final { cleanup-ipa-dump "inline" } } */ 41