diff options
| author | giovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-16 11:04:58 +0000 |
|---|---|---|
| committer | giovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-16 11:04:58 +0000 |
| commit | 4736f3befbf01e77e62e4088070c31ad9f14d0ba (patch) | |
| tree | 031cfbaf9dfc1186c679877f5ea90e7084d444fe | |
| parent | 046256159181f9a7f93c69bd4fabdeae74c62ea5 (diff) | |
| download | ppe42-gcc-4736f3befbf01e77e62e4088070c31ad9f14d0ba.tar.gz ppe42-gcc-4736f3befbf01e77e62e4088070c31ad9f14d0ba.zip | |
PR c++/10479
* parser.c (cp_parser_parenthesized_expression_list): Fold
non-dependent expressions in attribute lists.
PR c++/10479
* g++.dg/ext/attrib16.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89135 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cp/parser.c | 4 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/ext/attrib16.C | 8 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7fef9fbf666..ebd8705f674 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-10-16 Giovanni Bajo <giovannibajo@gcc.gnu.org> + + PR c++/10479 + * parser.c (cp_parser_parenthesized_expression_list): Fold + non-dependent expressions in attribute lists. + 2004-10-15 Mark Mitchell <mark@codesourcery.com> PR c++/17042 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 611a794d766..76738262e7c 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -4420,6 +4420,7 @@ cp_parser_parenthesized_expression_list (cp_parser* parser, bool *non_constant_p) { tree expression_list = NULL_TREE; + bool fold_expr_p = is_attribute_list; tree identifier = NULL_TREE; /* Assume all the expressions will be constant. */ @@ -4462,6 +4463,9 @@ cp_parser_parenthesized_expression_list (cp_parser* parser, else expr = cp_parser_assignment_expression (parser); + if (fold_expr_p) + expr = fold_non_dependent_expr (expr); + /* Add it to the list. We add error_mark_node expressions to the list, so that we can still tell if the correct form for a parenthesized expression-list diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a9ec7d76f5c..0ca8452357f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-10-16 Giovanni Bajo <giovannibajo@gcc.gnu.org> + + PR c++/10479 + * g++.dg/ext/attrib16.C: New test. + 2004-10-15 Mark Mitchell <mark@codesourcery.com> PR c++/17042 diff --git a/gcc/testsuite/g++.dg/ext/attrib16.C b/gcc/testsuite/g++.dg/ext/attrib16.C new file mode 100644 index 00000000000..2e73fca70ba --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib16.C @@ -0,0 +1,8 @@ +// { dg-do compile } +// Origin: <rguenth at tat dot physik dot uni-tuebingen dot de> +// PR c++/10479: use of non dependent expressions in attributes in templates + +template <int i> +struct foo2 { + float bar __attribute__((aligned(__alignof__(double)))); +}; |

