re PR ipa/59008 (ICEs in try_make_edge_direct_simple_call / propagate_controlled_uses)

2014-01-06  Martin Jambor  <mjambor@suse.cz>

	PR ipa/59008
	* ipa-cp.c (ipcp_discover_new_direct_edges): Changed param_index type
	to int.
	* ipa-prop.c (ipa_print_node_params): Fix indentation.

testsuite/
        * gcc.dg/ipa/pr59008.c: New test.

From-SVN: r206361
This commit is contained in:
Martin Jambor 2014-01-06 15:05:25 +01:00 committed by Martin Jambor
parent 4dc69bc674
commit a4e33812b0
5 changed files with 46 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2014-01-06 Martin Jambor <mjambor@suse.cz>
PR ipa/59008
* ipa-cp.c (ipcp_discover_new_direct_edges): Changed param_index type
to int.
* ipa-prop.c (ipa_print_node_params): Fix indentation.
2014-01-06 Eric Botcazou <ebotcazou@adacore.com>
PR debug/59350

View File

@ -2281,7 +2281,7 @@ ipcp_discover_new_direct_edges (struct cgraph_node *node,
{
bool agg_contents = ie->indirect_info->agg_contents;
bool polymorphic = ie->indirect_info->polymorphic;
bool param_index = ie->indirect_info->param_index;
int param_index = ie->indirect_info->param_index;
struct cgraph_edge *cs = ipa_make_edge_direct_to_target (ie, target);
found = true;

View File

@ -3326,6 +3326,7 @@ ipa_print_node_params (FILE *f, struct cgraph_node *node)
{
int c;
fprintf (f, " ");
ipa_dump_param (f, info, i);
if (ipa_is_param_used (info, i))
fprintf (f, " used");

View File

@ -1,3 +1,8 @@
2014-01-06 Martin Jambor <mjambor@suse.cz>
PR ipa/59008
* gcc.dg/ipa/pr59008.c: New test.
2014-01-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* gcc.dg/vect/vect.exp: Add clearcap_ldflags to DEFAULT_VECTCFLAGS

View File

@ -0,0 +1,32 @@
/* { dg-do compile } */
/* { dg-options "-O3" } */
typedef int (*funct)(int, int, int);
extern int f(int, int, int);
extern int g(int, int, int);
extern int h(int, funct, funct);
static int baz(int x, int y, int z)
{
return x + y + z;
}
static int bar(int n, funct f1, funct f2)
{
return h(n, f1, f2) + f1(0, 1, 2);
}
static int foo(int n, funct f1, funct f2)
{
return bar(n, f1, f2) + f2(0, 1, 2);
}
int main(void)
{
return foo(0, f, g)
#ifndef ICE2
+ foo(0, baz, g)
#endif
;
}