aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2007-10-05 17:56:52 +0000
committerMichael Matz <matz@gcc.gnu.org>2007-10-05 17:56:52 +0000
commit1a309dfb7abe475f67bd43a0bca04e6e892f1a86 (patch)
treebaef6657395fcd4f8d920b70187636f0f45ca5d9 /gcc
parentb4da855a9e7a57ea89694006b33f35231b777bbf (diff)
downloadgcc-1a309dfb7abe475f67bd43a0bca04e6e892f1a86.zip
gcc-1a309dfb7abe475f67bd43a0bca04e6e892f1a86.tar.gz
gcc-1a309dfb7abe475f67bd43a0bca04e6e892f1a86.tar.bz2
re PR middle-end/33667 (RTL sharing with divmod)
gcc/ PR middle-end/33667 * lower-subreg.c (decompose_multiword_subregs): Use validate_unshare_change(). testsuite/ * gcc.dg/pr33667.c: New testcase. From-SVN: r129038
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lower-subreg.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr33667.c21
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c8d1beb..e6cdebf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-10-05 Michael Matz <matz@suse.de>
+
+ PR middle-end/33667
+ * lower-subreg.c (decompose_multiword_subregs): Use
+ validate_unshare_change().
+
2007-10-05 Peter Bergner <bergner@vnet.ibm.com>
* ra-conflict.c: Include "sparseset.h".
diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c
index b8e2eb6..fa3a2c8 100644
--- a/gcc/lower-subreg.c
+++ b/gcc/lower-subreg.c
@@ -1339,7 +1339,7 @@ decompose_multiword_subregs (void)
int dup_num = recog_data.dup_num[i];
rtx *px = recog_data.operand_loc[dup_num];
- validate_change (insn, pl, *px, 1);
+ validate_unshare_change (insn, pl, *px, 1);
}
i = apply_change_group ();
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d73bde39..b9d2e75 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-05 Michael Matz <matz@suse.de>
+
+ PR middle-end/33667
+ * gcc.dg/pr33667.c: New testcase.
+
2007-10-05 Richard Guenther <rguenther@suse.de>
PR middle-end/33666
diff --git a/gcc/testsuite/gcc.dg/pr33667.c b/gcc/testsuite/gcc.dg/pr33667.c
new file mode 100644
index 0000000..d3c039b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr33667.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef unsigned int size_t;
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned long long int uint64_t;
+struct magic {
+ uint8_t mask_op;
+ union {
+ uint64_t _mask;
+ } _u;
+ union VALUETYPE {
+ uint16_t h;
+ } value;
+};
+void cvt_16(union VALUETYPE *p, const struct magic *m)
+{
+ if (m->_u._mask)
+ p->h %= (uint16_t) m->_u._mask;
+}