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 } */

Reply via email to