Commit ff1f317b by Uros Bizjak

re PR target/78262 (wrong code with -fschedule-insns)

	PR target/78262
	* config/i386/i386.md (*<shift_insn><mode>3_doubleword): Mark
	operand 0 as earlyclobber.

testsuite/ChangeLog:

	PR target/78262
	* gcc.target/i386/pr78262.c: New test.

From-SVN: r242013
parent 302356da
2016-11-09 Uros Bizjak <ubizjak@gmail.com>
PR target/78262
* config/i386/i386.md (*<shift_insn><mode>3_doubleword): Mark
operand 0 as earlyclobber.
2016-11-09 Martin Liska <mliska@suse.cz> 2016-11-09 Martin Liska <mliska@suse.cz>
* fold-const-call.c (fold_const_call): Fix up type of s0 and s1. * fold-const-call.c (fold_const_call): Fix up type of s0 and s1.
...@@ -107,7 +113,7 @@ ...@@ -107,7 +113,7 @@
* sanitizer.def (__asan_version_mismatch_check_v6): Replace with * sanitizer.def (__asan_version_mismatch_check_v6): Replace with
__asan_version_mismatch_check_v8. __asan_version_mismatch_check_v8.
2016-11-08 David Edelsohn <dje.gcc@gmail.com> 2016-11-08 David Edelsohn <dje.gcc@gmail.com>
* dwarf2asm.c (USE_LINKONCE_INDIRECT): Test XCOFF_DEBUGGING_INFO * dwarf2asm.c (USE_LINKONCE_INDIRECT): Test XCOFF_DEBUGGING_INFO
at runtime. at runtime.
...@@ -10339,7 +10339,7 @@ ...@@ -10339,7 +10339,7 @@
"operands[2] = gen_lowpart (QImode, operands[2]);") "operands[2] = gen_lowpart (QImode, operands[2]);")
(define_insn_and_split "*<shift_insn><mode>3_doubleword" (define_insn_and_split "*<shift_insn><mode>3_doubleword"
[(set (match_operand:DWI 0 "register_operand" "=r") [(set (match_operand:DWI 0 "register_operand" "=&r")
(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0") (any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
(match_operand:QI 2 "nonmemory_operand" "<S>c"))) (match_operand:QI 2 "nonmemory_operand" "<S>c")))
(clobber (reg:CC FLAGS_REG))] (clobber (reg:CC FLAGS_REG))]
......
2016-11-09 Uros Bizjak <ubizjak@gmail.com>
PR target/78262
* gcc.target/i386/pr78262.c: New test.
2016-11-09 Fritz O. Reese <fritzoreese@gmail.com> 2016-11-09 Fritz O. Reese <fritzoreese@gmail.com>
PR fortran/78259 PR fortran/78259
......
/* { dg-do run } */
/* { dg-require-effective-target int128 } */
/* { dg-options "-O -fschedule-insns" } */
typedef unsigned char u8;
typedef unsigned __int128 u128;
static u128 u128_0;
static u128 *p128;
u128 __attribute__ ((noinline, noclone))
foo(u8 u8_0)
{
p128 = &u128_0;
u128_0 = u8_0;
u128_0 = u128_0 << 127 | u128_0 >> 1;
u128_0 >>= (u8)u128_0;
return 2 + u128_0;
}
int
main()
{
u128 x = foo(5);
if (p128 != &u128_0)
__builtin_abort();
if (u128_0 != ((u128)2 << 124))
__builtin_abort();
if (x != ((u128)2 << 124) + 2)
__builtin_abort();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment