From 8315e35ef665a7a74226761fd9e763f5bcb58fa3 Mon Sep 17 00:00:00 2001 From: mpolacek Date: Sat, 15 Nov 2014 20:20:05 +0000 Subject: [PATCH] PR middle-end/63884 c-family/ * array-notation-common.c (is_sec_implicit_index_fn): Return false for NULL fndecl. (extract_array_notation_exprs): Return for NULL node. testsuite/ * c-c++-common/cilk-plus/AN/pr63884.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217612 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-family/ChangeLog | 7 +++++++ gcc/c-family/array-notation-common.c | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/c-c++-common/cilk-plus/AN/pr63884.c | 10 ++++++++++ 4 files changed, 28 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/AN/pr63884.c diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 4eb90fc1b117..fa0518a63ebc 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,10 @@ +2014-11-15 Marek Polacek + + PR middle-end/63884 + * array-notation-common.c (is_sec_implicit_index_fn): Return false + for NULL fndecl. + (extract_array_notation_exprs): Return for NULL node. + 2014-11-12 Joseph Myers * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Define and diff --git a/gcc/c-family/array-notation-common.c b/gcc/c-family/array-notation-common.c index f8bce04bbc1e..cb5708c27b22 100644 --- a/gcc/c-family/array-notation-common.c +++ b/gcc/c-family/array-notation-common.c @@ -35,6 +35,9 @@ along with GCC; see the file COPYING3. If not see bool is_sec_implicit_index_fn (tree fndecl) { + if (!fndecl) + return false; + if (TREE_CODE (fndecl) == ADDR_EXPR) fndecl = TREE_OPERAND (fndecl, 0); @@ -327,6 +330,9 @@ extract_array_notation_exprs (tree node, bool ignore_builtin_fn, vec **array_list) { size_t ii = 0; + + if (!node) + return; if (TREE_CODE (node) == ARRAY_NOTATION_REF) { vec_safe_push (*array_list, node); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9921fec1ef85..8a71250e3543 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-11-15 Marek Polacek + + PR middle-end/63884 + * c-c++-common/cilk-plus/AN/pr63884.c: New test. + 2014-11-15 Francois-Xavier Coudert PR target/60104 diff --git a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr63884.c b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr63884.c new file mode 100644 index 000000000000..c876a8dec00d --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr63884.c @@ -0,0 +1,10 @@ +/* PR middle-end/63884 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +int +foo (int x, int y) +{ + int r; + return __builtin_sadd_overflow (x, y, &r); +} -- 2.47.3