ipa-split.c (split_function): Set DECL_NO_INLINE_WARNING_P on the non-inlinable part.
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 6 Sep 2013 09:35:23 +0000 (09:35 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 6 Sep 2013 09:35:23 +0000 (09:35 +0000)
* ipa-split.c (split_function): Set DECL_NO_INLINE_WARNING_P on the
non-inlinable part.

From-SVN: r202315

gcc/ChangeLog
gcc/ipa-split.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/warn10.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/warn10.ads [new file with mode: 0644]
gcc/testsuite/gnat.dg/warn10_pkg.ads [new file with mode: 0644]

index 185c8655b944d49ff3bbde9d6ec48ef241a4df7a..e5b74ed8af7db0496919f5c3c2f1f2748e4c9914 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * ipa-split.c (split_function): Set DECL_NO_INLINE_WARNING_P on the
+       non-inlinable part.
+
 2013-09-06  Richard Biener  <rguenther@suse.de>
 
        * lto-streamer.h (lto_global_var_decls): Remove.
index 5c3ee4fa2cebc21959d0e21120e079cf490f253c..5df14ecb703942a6a50407bdbcae3cd31c13f5a6 100644 (file)
@@ -1222,6 +1222,9 @@ split_function (struct split_point *split_point)
       DECL_BUILT_IN_CLASS (node->symbol.decl) = NOT_BUILT_IN;
       DECL_FUNCTION_CODE (node->symbol.decl) = (enum built_in_function) 0;
     }
+  /* If the original function is declared inline, there is no point in issuing
+     a warning for the non-inlinable part.  */
+  DECL_NO_INLINE_WARNING_P (node->symbol.decl) = 1;
   cgraph_node_remove_callees (cur_node);
   ipa_remove_all_references (&cur_node->symbol.ref_list);
   if (!split_part_return_p)
index 96a5b6a1dd66f522773e5b8f15c6c7c2cf254540..e3ad4be7d47192d3e91d33543edb6d7d45e94183 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/warn10.ad[sb]: New test.
+       * gnat.dg/warn10_pkg.ads: New helper.
+
 2013-09-06  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        * gcc.dg/ipa/ipa-pta-14.c (scan-ipa-dump) [keeps_null_pointer_checks]:
diff --git a/gcc/testsuite/gnat.dg/warn10.adb b/gcc/testsuite/gnat.dg/warn10.adb
new file mode 100644 (file)
index 0000000..29b140d
--- /dev/null
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+-- { dg-options "-O3 -gnatn -Winline" }
+
+package body Warn10 is
+
+   procedure Do_Something(Driver : My_Driver) is
+      X : Float;
+   begin
+       X := Get_Input_Value( Driver, 1, 1);
+   end;
+
+end Warn10;
diff --git a/gcc/testsuite/gnat.dg/warn10.ads b/gcc/testsuite/gnat.dg/warn10.ads
new file mode 100644 (file)
index 0000000..01aa1e4
--- /dev/null
@@ -0,0 +1,11 @@
+with Warn10_Pkg; use Warn10_Pkg;
+
+package Warn10 is
+
+   type My_Driver is new Root with record
+      Extra : Natural;
+   end record;
+
+   procedure Do_Something(Driver : My_Driver);
+
+end Warn10;
diff --git a/gcc/testsuite/gnat.dg/warn10_pkg.ads b/gcc/testsuite/gnat.dg/warn10_pkg.ads
new file mode 100644 (file)
index 0000000..ac5b676
--- /dev/null
@@ -0,0 +1,12 @@
+package Warn10_Pkg is
+
+   Size : constant Natural := 100;
+   type My_Array is array(1..Size, 1..Size) of Float;
+
+   type Root is tagged record
+      Input_Values : My_Array;
+   end record;
+
+   function Get_Input_Value( Driver : Root; I, J : Natural) return Float;
+
+end Warn10_Pkg;