diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d1176eb21f0..2e70ef8f246 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-04-01 Richard Guenther + + PR tree-optimization/43607 + * ipa-type-escape.c (check_call): Do not access non-existing + arguments. + 2010-04-01 Richard Guenther PR middle-end/43602 diff --git a/gcc/ipa-type-escape.c b/gcc/ipa-type-escape.c index 8d773f12320..fa971e47f79 100644 --- a/gcc/ipa-type-escape.c +++ b/gcc/ipa-type-escape.c @@ -1340,7 +1340,8 @@ check_call (gimple call) if (TYPE_ARG_TYPES (TREE_TYPE (callee_t))) { for (arg_type = TYPE_ARG_TYPES (TREE_TYPE (callee_t)), i = 0; - arg_type && TREE_VALUE (arg_type) != void_type_node; + arg_type && TREE_VALUE (arg_type) != void_type_node + && i < gimple_call_num_args (call); arg_type = TREE_CHAIN (arg_type), i++) { tree operand = gimple_call_arg (call, i); @@ -1362,7 +1363,7 @@ check_call (gimple call) have to do this; the front ends should always process the arg list from the TYPE_ARG_LIST. */ for (arg_type = DECL_ARGUMENTS (callee_t), i = 0; - arg_type; + arg_type && i < gimple_call_num_args (call); arg_type = TREE_CHAIN (arg_type), i++) { tree operand = gimple_call_arg (call, i);