mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-11 20:40:02 +08:00
re PR c++/10180 (gcc fails to warn about non-inlined function)
PR c++/10180 * tree-inline.c (expand_call_inline): Call push_srcloc when encountering EXPR_WITH_FILE_LOCATION. Honor warn_inline. PR c++/10180 * g++.dg/warn/Winline-1.C: New test. From-SVN: r66202
This commit is contained in:
parent
3e1be8c1b1
commit
a833faa599
@ -1,3 +1,9 @@
|
|||||||
|
2003-04-28 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
PR c++/10180
|
||||||
|
* tree-inline.c (expand_call_inline): Call push_srcloc when
|
||||||
|
encountering EXPR_WITH_FILE_LOCATION. Honor warn_inline.
|
||||||
|
|
||||||
2003-04-28 Mike Stump <mrs@apple.com>
|
2003-04-28 Mike Stump <mrs@apple.com>
|
||||||
|
|
||||||
* gdbinit.in: Update to reflect new identifier structure.
|
* gdbinit.in: Update to reflect new identifier structure.
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2003-04-28 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
PR c++/10180
|
||||||
|
* g++.dg/warn/Winline-1.C: New test.
|
||||||
|
|
||||||
2003-04-28 Jakub Jelinek <jakub@redhat.com>
|
2003-04-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* gcc.c-torture/execute/string-opt-19.c: New test.
|
* gcc.c-torture/execute/string-opt-19.c: New test.
|
||||||
|
10
gcc/testsuite/g++.dg/warn/Winline-1.C
Normal file
10
gcc/testsuite/g++.dg/warn/Winline-1.C
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// { dg-options "-Winline -O2" }
|
||||||
|
|
||||||
|
static inline int foo(int x); // { dg-warning "" }
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
return(foo(17)); // { dg-warning "" }
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int foo(int x) { return(x); }
|
@ -1139,6 +1139,19 @@ expand_call_inline (tp, walk_subtrees, data)
|
|||||||
abort ();
|
abort ();
|
||||||
#endif /* INLINER_FOR_JAVA */
|
#endif /* INLINER_FOR_JAVA */
|
||||||
}
|
}
|
||||||
|
else if (TREE_CODE (t) == EXPR_WITH_FILE_LOCATION)
|
||||||
|
{
|
||||||
|
/* We're walking the subtree directly. */
|
||||||
|
*walk_subtrees = 0;
|
||||||
|
/* Update the source position. */
|
||||||
|
push_srcloc (EXPR_WFL_FILENAME (t), EXPR_WFL_LINENO (t));
|
||||||
|
walk_tree (&EXPR_WFL_NODE (t), expand_call_inline, data,
|
||||||
|
id->tree_pruner);
|
||||||
|
/* Restore the original source position. */
|
||||||
|
pop_srcloc ();
|
||||||
|
|
||||||
|
return NULL_TREE;
|
||||||
|
}
|
||||||
|
|
||||||
if (TYPE_P (t))
|
if (TYPE_P (t))
|
||||||
/* Because types were not copied in copy_body, CALL_EXPRs beneath
|
/* Because types were not copied in copy_body, CALL_EXPRs beneath
|
||||||
@ -1173,7 +1186,14 @@ expand_call_inline (tp, walk_subtrees, data)
|
|||||||
if ((!flag_unit_at_a_time || !DECL_SAVED_TREE (fn)
|
if ((!flag_unit_at_a_time || !DECL_SAVED_TREE (fn)
|
||||||
|| !cgraph_global_info (fn)->inline_once)
|
|| !cgraph_global_info (fn)->inline_once)
|
||||||
&& !inlinable_function_p (fn, id, 0))
|
&& !inlinable_function_p (fn, id, 0))
|
||||||
return NULL_TREE;
|
{
|
||||||
|
if (warn_inline && DECL_INLINE (fn))
|
||||||
|
{
|
||||||
|
warning_with_decl (fn, "inlining failed in call to `%s'");
|
||||||
|
warning ("called from here");
|
||||||
|
}
|
||||||
|
return NULL_TREE;
|
||||||
|
}
|
||||||
|
|
||||||
if (! (*lang_hooks.tree_inlining.start_inlining) (fn))
|
if (! (*lang_hooks.tree_inlining.start_inlining) (fn))
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
Loading…
Reference in New Issue
Block a user