[multiple changes]

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
This commit is contained in:
Jeff Law 2014-04-24 14:45:10 -06:00
parent 0b18fd1b20
commit 2f7ac5ce57
5 changed files with 46 additions and 1 deletions

View File

@ -1,3 +1,9 @@
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.

View File

@ -1868,9 +1868,11 @@
;; 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"))))]
""
{

View File

@ -1,3 +1,9 @@
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

View File

@ -0,0 +1,24 @@
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;
}

View File

@ -0,0 +1,7 @@
load_lib target-supports.exp
if { [check_effective_target_int32plus] } {
return 0
}
return 1;