From 5bf4c04fce4dbd4a0759d36607324feb65a8bc35 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 30 May 2017 10:02:18 +0200 Subject: [PATCH] backport: re PR c++/79641 (ICE with const variable and attribute) Backported from mainline 2017-02-21 Jakub Jelinek PR c++/79641 * c-common.c (handle_mode_attribute): Use build_qualified_type to preserve quals. * c-c++-common/pr79641.c: New test. From-SVN: r248648 --- gcc/c-family/ChangeLog | 9 +++++++++ gcc/c-family/c-common.c | 2 +- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/c-c++-common/pr79641.c | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/c-c++-common/pr79641.c diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index bd8449932be8..f32254a5e037 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,12 @@ +2017-05-30 Jakub Jelinek + + Backported from mainline + 2017-02-21 Jakub Jelinek + + PR c++/79641 + * c-common.c (handle_mode_attribute): Use build_qualified_type to + preserve quals. + 2017-05-10 Richard Biener Backport from mainline diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index aa81d1944b89..4a63c325d05a 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -7561,7 +7561,7 @@ handle_mode_attribute (tree *node, tree name, tree args, return NULL_TREE; } - *node = typefm; + *node = build_qualified_type (typefm, TYPE_QUALS (type)); } return NULL_TREE; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8452081abc5b..5344f8f39d6f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2017-02-21 Jakub Jelinek + PR c++/79641 + * c-c++-common/pr79641.c: New test. + PR target/79494 * gcc.dg/pr79494.c: New test. diff --git a/gcc/testsuite/c-c++-common/pr79641.c b/gcc/testsuite/c-c++-common/pr79641.c new file mode 100644 index 000000000000..5d2c9b4d38b1 --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr79641.c @@ -0,0 +1,4 @@ +/* PR c++/79641 */ +/* { dg-do compile } */ + +const int __attribute__((__mode__ (__QI__))) i = 0; -- 2.47.2