2014-04-24 Segher Boessenkool <segher@kernel.crashing.org>
PR target/60822
* config/m68k/m68k.md (extendplussidi): Don't allow memory for
operand 1.
2014-04-24 Jeff Law <law@redhat.com>
PR target/60822
* gcc.c-torture/pr60822.c: New test.
* gcc.c-torture/pr60822.x: New test.
From-SVN: r209759
+2014-04-24 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/60822
+ * config/m68k/m68k.md (extendplussidi): Don't allow memory for
+ operand 1.
+
2014-04-24 Dimitris Papavasiliou <dpapavas@gmail.com>
* flag-types.h (enum ivar_visibility): Add.
;; Maybe there is a way to make that the general case, by forcing the
;; result of the SI tree to be in the lower register of the DI target
+;; Don't allow memory for operand 1 as that would require an earlyclobber
+;; which results in worse code
(define_insn "extendplussidi"
[(set (match_operand:DI 0 "register_operand" "=d")
- (sign_extend:DI (plus:SI (match_operand:SI 1 "general_operand" "%rmn")
+ (sign_extend:DI (plus:SI (match_operand:SI 1 "general_operand" "%rn")
(match_operand:SI 2 "general_operand" "rmn"))))]
""
{
+2014-04-24 Jeff Law <law@redhat.com>
+
+ PR target/60822
+ * gcc.c-torture/pr60822.c: New test.
+ * gcc.c-torture/pr60822.x: New test.
+
2014-04-24 Dinar Temirbulatov <dtemirbulatov@gmail.com>
PR c++/57958
--- /dev/null
+struct X {
+ char fill0[800000];
+ int a;
+ char fill1[900000];
+ int b;
+};
+
+int __attribute__((noinline,noclone))
+Avg(struct X *p, int s)
+{
+ return (s * (long long)(p->a + p->b)) >> 17;
+}
+
+struct X x;
+
+int main()
+{
+ x.a = 1 << 17;
+ x.b = 2 << 17;
+ if (Avg(&x, 1) != 3)
+ __builtin_abort();
+ return 0;
+}
+
--- /dev/null
+load_lib target-supports.exp
+
+if { [check_effective_target_int32plus] } {
+ return 0
+}
+
+return 1;