2017-05-30 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2016-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/78378
+ * combine.c (make_extraction): Use force_to_mode for non-{REG,MEM}
+ inner only if pos is 0. Fix up formatting.
+
2016-11-07 Jakub Jelinek <jakub@redhat.com>
PR target/78227
if (tmode != BLKmode
&& ((pos_rtx == 0 && (pos % BITS_PER_WORD) == 0
&& !MEM_P (inner)
+ && (pos == 0 || REG_P (inner))
&& (inner_mode == tmode
|| !REG_P (inner)
|| TRULY_NOOP_TRUNCATION_MODES_P (tmode, inner_mode)
}
else
new_rtx = force_to_mode (inner, tmode,
- len >= HOST_BITS_PER_WIDE_INT
- ? ~(unsigned HOST_WIDE_INT) 0
- : ((unsigned HOST_WIDE_INT) 1 << len) - 1,
- 0);
+ len >= HOST_BITS_PER_WIDE_INT
+ ? ~(unsigned HOST_WIDE_INT) 0
+ : ((unsigned HOST_WIDE_INT) 1 << len) - 1, 0);
/* If this extraction is going into the destination of a SET,
make a STRICT_LOW_PART unless we made a MEM. */
2017-05-30 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2016-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/78378
+ * gcc.c-torture/execute/pr78378.c: New test.
+
2016-11-07 Jakub Jelinek <jakub@redhat.com>
PR target/78227
--- /dev/null
+/* PR rtl-optimization/78378 */
+
+unsigned long long __attribute__ ((noinline, noclone))
+foo (unsigned long long x)
+{
+ x <<= 41;
+ x /= 232;
+ return 1 + (unsigned short) x;
+}
+
+int
+main ()
+{
+ unsigned long long x = foo (1);
+ if (x != 0x2c24)
+ __builtin_abort();
+ return 0;
+}