aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-23 10:05:56 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-23 10:05:56 +0100
commit6f5799be393e835b4cce70d070ae30039fdf38a7 (patch)
tree82f63b45b22c73fedcb4d8e30cf05af034f31330 /gcc
parentee3a999fe7dfddb2531b045738ff2c0c40e6eb4c (diff)
downloadgcc-6f5799be393e835b4cce70d070ae30039fdf38a7.zip
gcc-6f5799be393e835b4cce70d070ae30039fdf38a7.tar.gz
gcc-6f5799be393e835b4cce70d070ae30039fdf38a7.tar.bz2
re PR inline-asm/85022 (internal compiler error: in write_dependence_p, at alias.c:3003)
PR inline-asm/85022 * alias.c (write_dependence_p): Don't require for x_canonicalized non-VOIDmode if x has VOIDmode. * c-c++-common/torture/pr85022.c: New test. From-SVN: r258795
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/alias.c3
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/c-c++-common/torture/pr85022.c9
4 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b22865..0be26ef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2018-03-23 Jakub Jelinek <jakub@redhat.com>
+ PR inline-asm/85022
+ * alias.c (write_dependence_p): Don't require for x_canonicalized
+ non-VOIDmode if x has VOIDmode.
+
PR sanitizer/85029
* sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
just don't try to optimize it rather than assert it never happens.
diff --git a/gcc/alias.c b/gcc/alias.c
index 5fa15cb..eac36a5 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -2999,7 +2999,8 @@ write_dependence_p (const_rtx mem,
int ret;
gcc_checking_assert (x_canonicalized
- ? (x_addr != NULL_RTX && x_mode != VOIDmode)
+ ? (x_addr != NULL_RTX
+ && (x_mode != VOIDmode || GET_MODE (x) == VOIDmode))
: (x_addr == NULL_RTX && x_mode == VOIDmode));
if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 87c8970..14e7833 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2018-03-23 Jakub Jelinek <jakub@redhat.com>
+ PR inline-asm/85022
+ * c-c++-common/torture/pr85022.c: New test.
+
PR sanitizer/85029
* g++.dg/ubsan/pr85029.C: New test.
diff --git a/gcc/testsuite/c-c++-common/torture/pr85022.c b/gcc/testsuite/c-c++-common/torture/pr85022.c
new file mode 100644
index 0000000..3ec2c78
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/torture/pr85022.c
@@ -0,0 +1,9 @@
+/* PR inline-asm/85022 */
+
+extern struct B b;
+
+void
+foo ()
+{
+ __asm ("" : "+m" (b));
+}