From eb258d7f5d615232494c75db7e6dfab151a7b7d0 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Thu, 1 Apr 2010 14:05:49 +0000 Subject: [PATCH] re PR tree-optimization/43607 (ICE in gimple_op, at gimple.h:1633 with -fipa-type-escape) 2010-04-01 Richard Guenther PR tree-optimization/43607 * ipa-type-escape.c (check_call): Do not access non-existing arguments. From-SVN: r157911 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-type-escape.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d1176eb..2e70ef8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 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 Revert 2010-03-30 Seongbae Park diff --git a/gcc/ipa-type-escape.c b/gcc/ipa-type-escape.c index 8d773f1..fa971e4 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); -- 2.7.4