re PR lto/43455 (ICE in fold_convert_loc, at fold-const.c:2670 with -O2 -flto)
2010-04-23 Richard Guenther <rguenther@suse.de> PR lto/43455 * tree-inline.c (tree_can_inline_p): Also check compatibility of return types. * gcc.dg/lto/20100423-1_0.c: New testcase. * gcc.dg/lto/20100423-1_1.c: Likewise. From-SVN: r158669
This commit is contained in:
parent
7762001162
commit
8fd8a06f0e
|
@ -1,3 +1,9 @@
|
|||
2010-04-23 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/43455
|
||||
* tree-inline.c (tree_can_inline_p): Also check compatibility
|
||||
of return types.
|
||||
|
||||
2010-04-23 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/43846
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2010-04-23 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/43455
|
||||
* gcc.dg/lto/20100423-1_0.c: New testcase.
|
||||
* gcc.dg/lto/20100423-1_1.c: Likewise.
|
||||
|
||||
2010-04-23 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/43846
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
/* { dg-lto-do run } */
|
||||
/* { dg-lto-options {{-O2 -flto}} } */
|
||||
|
||||
struct bar {int x;};
|
||||
extern struct bar foo(void);
|
||||
int main()
|
||||
{
|
||||
struct bar x=foo();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
typedef struct{int x;} bar;
|
||||
bar foo (void)
|
||||
{
|
||||
bar x;
|
||||
return x;
|
||||
}
|
||||
|
|
@ -5082,7 +5082,7 @@ tree_can_inline_p (struct cgraph_edge *e)
|
|||
return false;
|
||||
}
|
||||
#endif
|
||||
tree caller, callee;
|
||||
tree caller, callee, lhs;
|
||||
|
||||
caller = e->caller->decl;
|
||||
callee = e->callee->decl;
|
||||
|
@ -5108,8 +5108,16 @@ tree_can_inline_p (struct cgraph_edge *e)
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Do not inline calls where we cannot triviall work around mismatches
|
||||
in argument or return types. */
|
||||
if (e->call_stmt
|
||||
&& !gimple_check_call_args (e->call_stmt))
|
||||
&& ((DECL_RESULT (callee)
|
||||
&& !DECL_BY_REFERENCE (DECL_RESULT (callee))
|
||||
&& (lhs = gimple_call_lhs (e->call_stmt)) != NULL_TREE
|
||||
&& !useless_type_conversion_p (TREE_TYPE (DECL_RESULT (callee)),
|
||||
TREE_TYPE (lhs))
|
||||
&& !fold_convertible_p (TREE_TYPE (DECL_RESULT (callee)), lhs))
|
||||
|| !gimple_check_call_args (e->call_stmt)))
|
||||
{
|
||||
e->inline_failed = CIF_MISMATCHED_ARGUMENTS;
|
||||
gimple_call_set_cannot_inline (e->call_stmt, true);
|
||||
|
|
Loading…
Reference in New Issue