aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-02-21 17:55:00 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-02-21 17:55:00 +0100
commit00bc9de3fe5a713cc074938d53dc87da3f21c6de (patch)
treeafa197a5f47150a7cad9ce4e13da260ffe225d25
parentd002d099b0107491a905b6d3e574ed0436fca3a9 (diff)
downloadgcc-00bc9de3fe5a713cc074938d53dc87da3f21c6de.zip
gcc-00bc9de3fe5a713cc074938d53dc87da3f21c6de.tar.gz
gcc-00bc9de3fe5a713cc074938d53dc87da3f21c6de.tar.bz2
re PR c++/79641 (ICE with const variable and attribute)
PR c++/79641 * c-attribs.c (handle_mode_attribute): Use build_qualified_type to preserve quals. * c-c++-common/pr79641.c: New test. From-SVN: r245632
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-attribs.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/c-c++-common/pr79641.c4
4 files changed, 14 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 4bdd474..91c739d 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2017-02-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/79641
+ * c-attribs.c (handle_mode_attribute): Use build_qualified_type to
+ preserve quals.
+
2017-02-17 Joseph Myers <joseph@codesourcery.com>
* c-cppbuiltin.c (builtin_define_float_constants): Define
diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c
index ce7fcaa..8058a65 100644
--- a/gcc/c-family/c-attribs.c
+++ b/gcc/c-family/c-attribs.c
@@ -1430,7 +1430,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 e35dd7c..c432fb0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2017-02-21 Jakub Jelinek <jakub@redhat.com>
+ PR c++/79641
+ * c-c++-common/pr79641.c: New test.
+
PR tree-optimization/79649
* gcc.target/i386/pr79649.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 0000000..5d2c9b4
--- /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;