aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-07-04 12:17:22 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-07-04 12:17:22 +0000
commitefbf55b01cc45b0550830e0008db9ea6bae22f5e (patch)
tree02b7a9e51982ce84c4f2027e8a0858254f250f50
parentf0622a50ee34de71759339e244d039c169e204ba (diff)
downloadgcc-efbf55b01cc45b0550830e0008db9ea6bae22f5e.zip
gcc-efbf55b01cc45b0550830e0008db9ea6bae22f5e.tar.gz
gcc-efbf55b01cc45b0550830e0008db9ea6bae22f5e.tar.bz2
re PR c/81231 (ICE with invalid argument to __atomic_*)
PR c/81231 * c-common.c (sync_resolve_size): Give error for pointers to incomplete types. * gcc.dg/atomic-pr81231.c: New test. From-SVN: r249963
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-common.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/atomic-pr81231.c12
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 5f32102..a54beee 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,5 +1,11 @@
2017-07-04 Marek Polacek <polacek@redhat.com>
+ PR c/81231
+ * c-common.c (sync_resolve_size): Give error for pointers to incomplete
+ types.
+
+2017-07-04 Marek Polacek <polacek@redhat.com>
+
* c-warn.c (warn_if_unused_value): Remove WITH_CLEANUP_EXPR handling.
2017-06-28 Martin Liska <mliska@suse.cz>
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index f6a9d05..1b6ac8c 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -6485,6 +6485,9 @@ sync_resolve_size (tree function, vec<tree, va_gc> *params, bool fetch)
if (!INTEGRAL_TYPE_P (type) && !POINTER_TYPE_P (type))
goto incompatible;
+ if (!COMPLETE_TYPE_P (type))
+ goto incompatible;
+
if (fetch && TREE_CODE (type) == BOOLEAN_TYPE)
goto incompatible;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 74f9ee6..93926b2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-04 Marek Polacek <polacek@redhat.com>
+
+ PR c/81231
+ * gcc.dg/atomic-pr81231.c: New test.
+
2017-07-04 Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/81292
diff --git a/gcc/testsuite/gcc.dg/atomic-pr81231.c b/gcc/testsuite/gcc.dg/atomic-pr81231.c
new file mode 100644
index 0000000..304e428
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/atomic-pr81231.c
@@ -0,0 +1,12 @@
+/* PR c/81231 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+enum E;
+
+void
+foo (void)
+{
+ __atomic_load_n ((enum E *) 0, 0); /* { dg-error "incompatible" } */
+ __atomic_load_n ((enum X *) 0, 0); /* { dg-error "incompatible" } */
+}