Hi, The below patch fixes uninit-19.c for avr by adding -finline-small-functions for avr.
The test fails for avr because fn1 does not get inlined into fn2. Inlining occurs for x86_64 because fn1's computed size equals call_stmt_size. For avr, 32 bit memory moves are more expensive, and b[3] = p10[a] results in a bigger size for fn1, resulting in estimate_growth > 0 and no inlining. Adding -finline-small-functions forces early inliner to inline fn1, making the test pass. Committed to trunk. Regards Senthil gcc/testsuite/ChangeLog 2016-11-23 Senthil Kumar Selvaraj <senthil_kumar.selva...@atmel.com> * gcc.dg/uninit-19.c: Add -finline-small-functions for avr. Index: testsuite/gcc.dg/uninit-19.c =================================================================== --- testsuite/gcc.dg/uninit-19.c (revision 242741) +++ testsuite/gcc.dg/uninit-19.c (working copy) @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O -Wuninitialized" } */ +/* { dg-additional-options "-finline-small-functions" { target avr-*-* } } */ int a, l, m; float *b; @@ -10,7 +11,7 @@ unsigned char *c2, float *p10) { if (p1 & 8) - b[3] = p10[a]; /* 13. */ + b[3] = p10[a]; /* 14. */ } void @@ -19,8 +20,8 @@ float *n; if (l & 6) n = &c + m; - fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 22. */ + fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 23. */ } -/* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 13 } */ -/* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 22 } */ +/* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 14 } */ +/* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 23 } */