1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-ipa-pure-const-details -fdelete-null-pointer-checks" } */
3 
4 __attribute__((noinline, used, no_icf))
foo(__SIZE_TYPE__ n)5 static void *foo (__SIZE_TYPE__ n)
6 {
7   return __builtin_malloc (n * 10);
8 }
9 
10 __attribute__((noinline, used, no_icf))
bar(__SIZE_TYPE__ n,int cond)11 static void *bar(__SIZE_TYPE__ n, int cond)
12 {
13   void *p;
14   if (cond)
15     p = foo (n);
16   else
17     p = __builtin_malloc (n);
18 
19   return p;
20 }
21 
22 /* { dg-final { scan-ipa-dump "Function foo found to be malloc" "pure-const" } } */
23 /* { dg-final { scan-ipa-dump "Function bar found to be malloc" "pure-const" } } */
24