diff options
author | Marek Polacek <polacek@redhat.com> | 2017-07-04 12:17:22 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2017-07-04 12:17:22 +0000 |
commit | efbf55b01cc45b0550830e0008db9ea6bae22f5e (patch) | |
tree | 02b7a9e51982ce84c4f2027e8a0858254f250f50 | |
parent | f0622a50ee34de71759339e244d039c169e204ba (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/atomic-pr81231.c | 12 |
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" } */ +} |