+2019-02-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/89354
+ * combine.c (make_extraction): Punt if extraction_mode is narrower
+ than len bits.
+
2019-02-14 Maya Rashish <coypu@sdf.org>
- * config.gcc (*-*-netbsd*): Add netbsd-d.o
+ * config.gcc (*-*-netbsd*): Add netbsd-d.o.
* config/netbsd-d.c: New file.
* config/t-netbsd: Add netbsd-d.o
&& partial_subreg_p (extraction_mode, mode))
extraction_mode = mode;
+ /* Punt if len is too large for extraction_mode. */
+ if (maybe_gt (len, GET_MODE_PRECISION (extraction_mode)))
+ return NULL_RTX;
+
if (!MEM_P (inner))
wanted_inner_mode = wanted_inner_reg_mode;
else
+2019-02-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/89354
+ * gcc.dg/pr89354.c: New test.
+
2019-02-14 Uroš Bizjak <ubizjak@gmail.com>
* gcc.target/i386/ssse3-pabsb.c: Re-enable 64-bit form on AVX targets.
--- /dev/null
+/* PR rtl-optimization/89354 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+/* { dg-additional-options "-msse2" { target sse2_runtime } } */
+
+static unsigned long long q = 0;
+
+__attribute__((noipa)) static void
+foo (void)
+{
+ q = (q & ~0x1ffffffffULL) | 0x100000000ULL;
+}
+
+int
+main ()
+{
+ __asm volatile ("" : "+m" (q));
+ foo ();
+ if (q != 0x100000000ULL)
+ __builtin_abort ();
+ return 0;
+}