aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2016-04-28 19:08:28 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2016-04-28 20:08:28 +0100
commit8ad9df624ca4e4b36a46d117628ff788fdcd03b5 (patch)
tree455216ff6230de21591e408248a67329c681327c
parent0d1892d2d5db39ea6ac4175471116a0924ed99e9 (diff)
downloadgcc-8ad9df624ca4e4b36a46d117628ff788fdcd03b5.zip
gcc-8ad9df624ca4e4b36a46d117628ff788fdcd03b5.tar.gz
gcc-8ad9df624ca4e4b36a46d117628ff788fdcd03b5.tar.bz2
arc.c (arc_print_operand): Print integer 'H' / 'L'
2016-04-28 Joern Rennecke <joern.rennecke@embecosm.com> Andrew Burgess <andrew.burgess@embecosm.com> gcc: * config/arc/arc.c (arc_print_operand): Print integer 'H' / 'L' gcc/testsuite: * gcc.target/arc/movh_cl-1.c: New file. Co-Authored-By: Andrew Burgess <andrew.burgess@embecosm.com> From-SVN: r235600
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arc/arc.c12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arc/movh_cl-1.c27
4 files changed, 43 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b52544..e65e0ea 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-04-28 Joern Rennecke <joern.rennecke@embecosm.com>
+ Andrew Burgess <andrew.burgess@embecosm.com>
+
+ * config/arc/arc.c (arc_print_operand): Print integer 'H' / 'L'
+ operands as 32-bits.
+
2016-04-28 Jason Merrill <jason@redhat.com>
* gdbinit.in: Skip line-map.h.
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index b7dfab1..dfaea7b 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -3235,19 +3235,17 @@ arc_print_operand (FILE *file, rtx x, int code)
else if (GET_CODE (x) == CONST_INT
|| GET_CODE (x) == CONST_DOUBLE)
{
- rtx first, second;
+ rtx first, second, word;
split_double (x, &first, &second);
if((WORDS_BIG_ENDIAN) == 0)
- fprintf (file, "0x%08" PRIx64,
- code == 'L' ? INTVAL (first) : INTVAL (second));
+ word = (code == 'L' ? first : second);
else
- fprintf (file, "0x%08" PRIx64,
- code == 'L' ? INTVAL (second) : INTVAL (first));
+ word = (code == 'L' ? second : first);
-
- }
+ fprintf (file, "0x%08" PRIx32, ((uint32_t) INTVAL (word)));
+ }
else
output_operand_lossage ("invalid operand to %%H/%%L code");
return;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6c44ee9..36de779 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,6 +1,11 @@
2016-04-28 Joern Rennecke <joern.rennecke@embecosm.com>
Andrew Burgess <andrew.burgess@embecosm.com>
+ * gcc.target/arc/movh_cl-1.c: New file.
+
+2016-04-28 Joern Rennecke <joern.rennecke@embecosm.com>
+ Andrew Burgess <andrew.burgess@embecosm.com>
+
* gcc.target/arc/extzv-1.c: New file.
* gcc.target/arc/insv-1.c: New file.
* gcc.target/arc/insv-2.c: New file.
diff --git a/gcc/testsuite/gcc.target/arc/movh_cl-1.c b/gcc/testsuite/gcc.target/arc/movh_cl-1.c
new file mode 100644
index 0000000..220cd9d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arc/movh_cl-1.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-mcpu=nps400 -O2 -mbitops" } */
+
+struct thing
+{
+ union
+ {
+ int raw;
+ struct
+ {
+ unsigned a : 1;
+ unsigned b : 1;
+ };
+ };
+};
+
+extern void func (int);
+
+void
+blah ()
+{
+ struct thing xx;
+ xx.a = xx.b = 1;
+ func (xx.raw);
+}
+
+/* { dg-final { scan-assembler "movh\.cl r\[0-9\]+,0xc0000000>>16" } } */