diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-02-19 19:11:54 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-02-19 19:11:54 +0100 |
commit | 4998d6669f9643ca16e6c2c2d4b79c9f25b4d994 (patch) | |
tree | 256303b18b670b23bb74119c00dc615a662a07cb | |
parent | fff917933f28b6ff19c7fca80507ee1f34c595f6 (diff) | |
download | gcc-4998d6669f9643ca16e6c2c2d4b79c9f25b4d994.zip gcc-4998d6669f9643ca16e6c2c2d4b79c9f25b4d994.tar.gz gcc-4998d6669f9643ca16e6c2c2d4b79c9f25b4d994.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/ivdep-1.C | 18 |
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 878ba4a..9218f2b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-02-19 Jakub Jelinek <jakub@redhat.com> + + PR c++/60267 + * pt.c (tsubst_expr): Handle ANNOTATE_EXPR. + 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60225 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 7967db8..fb30af3 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 52f2fa8..6396b37 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,9 @@ 2014-02-19 Jakub Jelinek <jakub@redhat.com> PR c++/60267 + * g++.dg/ext/ivdep-1.C: New test. + + PR c++/60267 * gcc.dg/pr60267.c: New test. 2014-02-19 Uros Bizjak <ubizjak@gmail.com> 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 0000000..751154d --- /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 <int N> +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); +} |