aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-01-06 17:52:09 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-01-06 17:52:09 +0000
commit6209a13e202b97e040f91e57281a2c23e0022bea (patch)
treea8b06b3154791c3e071f213dc00b7a6578ee3a4b
parentf05f79fffc5297858f27eaf122aabc8cec2c930b (diff)
downloadgcc-6209a13e202b97e040f91e57281a2c23e0022bea.zip
gcc-6209a13e202b97e040f91e57281a2c23e0022bea.tar.gz
gcc-6209a13e202b97e040f91e57281a2c23e0022bea.tar.bz2
ipa-inline.c (cgraph_decide_inlining_incrementally): Do not inline regular functions into always-inline functions.
2010-01-06 Richard Guenther <rguenther@suse.de> * ipa-inline.c (cgraph_decide_inlining_incrementally): Do not inline regular functions into always-inline functions. * gcc.c-torture/compile/pr42632.c: New testcase. From-SVN: r155679
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-inline.c5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr42632.c16
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8b61a3..6435d2a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-06 Richard Guenther <rguenther@suse.de>
+
+ * ipa-inline.c (cgraph_decide_inlining_incrementally): Do
+ not inline regular functions into always-inline functions.
+
2010-01-06 Nick Clifton <nickc@redhat.com>
* config/rx/rx.h (enum rx_cpu_type): Add RX200.
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 7dbafb8..c6c84f9 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -1506,7 +1506,10 @@ cgraph_decide_inlining_incrementally (struct cgraph_node *node,
}
/* Now do the automatic inlining. */
- if (mode != INLINE_ALL && mode != INLINE_ALWAYS_INLINE)
+ if (mode != INLINE_ALL && mode != INLINE_ALWAYS_INLINE
+ /* Never inline regular functions into always-inline functions
+ during incremental inlining. */
+ && !node->local.disregard_inline_limits)
for (e = node->callees; e; e = e->next_callee)
{
int allowed_growth = 0;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e9c215d..ef879de 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2010-01-06 Richard Guenther <rguenther@suse.de>
+
+ * gcc.c-torture/compile/pr42632.c: New testcase.
+
2010-01-05 H.J. Lu <hongjiu.lu@intel.com>
PR target/42542
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42632.c b/gcc/testsuite/gcc.c-torture/compile/pr42632.c
new file mode 100644
index 0000000..a677853
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr42632.c
@@ -0,0 +1,16 @@
+static inline __attribute__((always_inline)) int
+__pskb_trim(void)
+{
+ return ___pskb_trim();
+}
+static inline __attribute__((always_inline))
+int pskb_trim(void)
+{
+ return __pskb_trim();
+}
+int ___pskb_trim(void)
+{
+ pskb_trim();
+ return 0;
+}
+