1 /* { dg-do compile } */ 2 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-ldist-details" } */ 3 4 struct Foo 5 { 6 char a; 7 }; 8 9 struct Foo x[256]; 10 11 static void __attribute__((noinline,noclone)) foo()12foo() 13 { 14 int i; 15 for (i = 0; i < 256; ++i) 16 x[i] = (struct Foo){}; 17 } 18 19 static void __attribute__((noinline,noclone)) bar()20bar() 21 { 22 int i; 23 for (i = 0; i < 256; ++i) 24 x[i].a = 1; 25 } 26 27 static void __attribute__((noinline,noclone)) foobar(unsigned char c)28foobar(unsigned char c) 29 { 30 int i; 31 for (i = 0; i < 256; ++i) 32 x[i].a = c; 33 } 34 35 static void __attribute__((noinline,noclone)) foobar2(char c)36foobar2(char c) 37 { 38 int i; 39 for (i = 0; i < 256; ++i) 40 x[i].a = c; 41 } 42 43 struct Baz 44 { 45 short a; 46 }; 47 48 struct Baz y[256]; 49 50 static void __attribute__((noinline,noclone)) baz()51baz() 52 { 53 int i; 54 for (i = 0; i < 256; ++i) 55 y[i].a = -1; 56 } 57 main()58int main() 59 { 60 volatile int x; 61 foo(); 62 bar(); 63 foobar(x); 64 foobar2(x); 65 baz(); 66 return 0; 67 } 68 69 /* { dg-final { scan-tree-dump-times "generated memset zero" 1 "ldist" } } */ 70 /* { dg-final { scan-tree-dump-times "generated memset" 5 "ldist" } } */ 71