+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-17 Alan Modra <amodra@gmail.com>
PR rtl-optimization/78325
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
- ? HOST_WIDE_INT_M1U
- : (HOST_WIDE_INT_1U << len) - 1,
- 0);
+ len >= HOST_BITS_PER_WIDE_INT
+ ? HOST_WIDE_INT_M1U
+ : (HOST_WIDE_INT_1U << len) - 1, 0);
/* If this extraction is going into the destination of a SET,
make a STRICT_LOW_PART unless we made a MEM. */
+2016-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/78378
+ * gcc.c-torture/execute/pr78378.c: New test.
+
2016-11-16 Andrew Burgess <andrew.burgess@embecosm.com>
* gcc.dg/tree-prof/section-attr-1.c: New file.
--- /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;
+}