From: Uros Bizjak Date: Wed, 9 Nov 2016 20:41:17 +0000 (+0100) Subject: re PR target/78262 (wrong code with -fschedule-insns) X-Git-Tag: releases/gcc-5.5.0~712 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4211cebdf7734f3cf21445df799374513184a963;p=thirdparty%2Fgcc.git re PR target/78262 (wrong code with -fschedule-insns) PR target/78262 * config/i386/i386.md (*3_doubleword): Mark operand 0 as earlyclobber. testsuite/ChangeLog: PR target/78262 * gcc.target/i386/pr78262.c: New test. From-SVN: r242022 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 499052139557..1981638eea57 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-11-09 Uros Bizjak + + PR target/78262 + * config/i386/i386.md (*3_doubleword): Mark + operand 0 as earlyclobber. + 2016-11-06 Jack Howarth PR driver/78206 @@ -5,12 +11,12 @@ 2016-11-03 Martin Liska - Backport from mainline - 2016-08-12 Martin Liska - Adam Fineman + Backport from mainline + 2016-08-12 Martin Liska + Adam Fineman - * gcov.c (process_file): Create .gcov file when .gcda - file is missing. + * gcov.c (process_file): Create .gcov file when .gcda + file is missing. 2016-11-03 Eric Botcazou diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 393e38953aab..0807fa8db0d9 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -9915,7 +9915,7 @@ (set_attr "mode" "")]) (define_insn_and_split "*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") (match_operand:QI 2 "nonmemory_operand" "c"))) (clobber (reg:CC FLAGS_REG))] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 79afa96bd386..bb5e61c419a4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-11-09 Uros Bizjak + + PR target/78262 + * gcc.target/i386/pr78262.c: New test. + 2016-11-06 Thomas Koenig Backport from trunk @@ -16,11 +21,11 @@ 2016-11-03 Martin Liska - Backport from mainline - 2016-08-12 Martin Liska + Backport from mainline + 2016-08-12 Martin Liska - * g++.dg/gcov/gcov-16.C: New test. - * lib/gcov.exp: Support new argument for run-gcov function. + * g++.dg/gcov/gcov-16.C: New test. + * lib/gcov.exp: Support new argument for run-gcov function. 2016-11-02 Will Schmidt @@ -114,14 +119,14 @@ 2016-10-13 Andrew Senkevich Backport from trunk - * testsuite/gcc.target/i386/pcommit-1.c: Deleted test. - * testsuite/gcc.target/i386/sse-12.c: Deleted -pcommit option. - * testsuite/gcc.target/i386/sse-13.c: Ditto. - * testsuite/gcc.target/i386/sse-14.c: Ditto. - * testsuite/gcc.target/i386/sse-22.c: Ditto. - * testsuite/gcc.target/i386/sse-23.c: Ditto. - * testsuite/g++.dg/other/i386-2.C: Ditto. - * testsuite/g++.dg/other/i386-3.C: Ditto. + * gcc.target/i386/pcommit-1.c: Deleted test. + * gcc.target/i386/sse-12.c: Deleted -pcommit option. + * gcc.target/i386/sse-13.c: Ditto. + * gcc.target/i386/sse-14.c: Ditto. + * gcc.target/i386/sse-22.c: Ditto. + * gcc.target/i386/sse-23.c: Ditto. + * g++.dg/other/i386-2.C: Ditto. + * g++.dg/other/i386-3.C: Ditto. 2016-10-10 Eric Botcazou diff --git a/gcc/testsuite/gcc.target/i386/pr78262.c b/gcc/testsuite/gcc.target/i386/pr78262.c new file mode 100644 index 000000000000..a0ead417191a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr78262.c @@ -0,0 +1,32 @@ +/* { 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; +}