From: Jakub Jelinek Date: Wed, 19 Feb 2014 18:11:54 +0000 (+0100) Subject: re PR c++/60267 (ICE in c_pp_lookup_pragma, at c-family/c-pragma.c:1232; ICE in tsubs... X-Git-Tag: releases/gcc-4.9.0~831 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4998d6669f9643ca16e6c2c2d4b79c9f25b4d994;p=thirdparty%2Fgcc.git re PR c++/60267 (ICE in c_pp_lookup_pragma, at c-family/c-pragma.c:1232; ICE in tsubst_copy, at cp/pt.c:12887) PR c++/60267 * pt.c (tsubst_expr): Handle ANNOTATE_EXPR. * g++.dg/ext/ivdep-1.C: New test. From-SVN: r207914 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 878ba4a2829e..9218f2b5c9f6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-02-19 Jakub Jelinek + + PR c++/60267 + * pt.c (tsubst_expr): Handle ANNOTATE_EXPR. + 2014-02-18 Paolo Carlini PR c++/60225 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 7967db8b5b06..fb30af35fbf8 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -13806,6 +13806,11 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, RECUR (TREE_OPERAND (t, 1)), complain)); + case ANNOTATE_EXPR: + tmp = RECUR (TREE_OPERAND (t, 0)); + RETURN (build2_loc (EXPR_LOCATION (t), ANNOTATE_EXPR, + TREE_TYPE (tmp), tmp, RECUR (TREE_OPERAND (t, 1)))); + default: gcc_assert (!STATEMENT_CODE_P (TREE_CODE (t))); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 52f2fa8f678f..6396b37c3288 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2014-02-19 Jakub Jelinek + PR c++/60267 + * g++.dg/ext/ivdep-1.C: New test. + PR c++/60267 * gcc.dg/pr60267.c: New test. diff --git a/gcc/testsuite/g++.dg/ext/ivdep-1.C b/gcc/testsuite/g++.dg/ext/ivdep-1.C new file mode 100644 index 000000000000..751154deba8d --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/ivdep-1.C @@ -0,0 +1,18 @@ +// PR c++/60267 +// { dg-do compile } +// { dg-options "-O3" } + +template +void +foo (int *a, int *b, int *c) +{ +#pragma GCC ivdep + for (int i = 0; i < N; i++) + a[i] = b[i] * c[i]; +} + +void +bar (int *a, int *b, int *c) +{ + foo <64> (a, b, c); +}