mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-11 06:24:27 +08:00
re PR target/65990 (ICE: in extract_insn, at recog.c:2341 (unrecognizable insn) with -mmemcpy-strategy=rep_8byte👎noalign -m32 -mtune=btver2)
PR target/65990 * config/i386/i386.c (ix86_parse_stringop_strategy_string): Error out if rep_8byte stringop strategy was specified for 32-bit target. testsuite/ChangeLog: PR target/65990 * gcc.target/i386/pr65990.c: New test. From-SVN: r222817
This commit is contained in:
parent
bd9e8f7e4a
commit
588823d277
@ -1,3 +1,9 @@
|
||||
2015-05-05 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/65990
|
||||
* config/i386/i386.c (ix86_parse_stringop_strategy_string): Error out
|
||||
if rep_8byte stringop strategy was specified for 32-bit target.
|
||||
|
||||
2015-05-05 Ilya Tocar <ilya.tocar@intel.com>
|
||||
|
||||
PR target/65915
|
||||
|
@ -2988,6 +2988,17 @@ ix86_parse_stringop_strategy_string (char *strategy_str, bool is_memset)
|
||||
return;
|
||||
}
|
||||
|
||||
if ((stringop_alg) i == rep_prefix_8_byte
|
||||
&& !TARGET_64BIT)
|
||||
{
|
||||
/* rep; movq isn't available in 32-bit code. */
|
||||
error ("stringop strategy name %s specified for option %s "
|
||||
"not supported for 32-bit code",
|
||||
alg_name,
|
||||
is_memset ? "-mmemset_strategy=" : "-mmemcpy_strategy=");
|
||||
return;
|
||||
}
|
||||
|
||||
input_ranges[n].max = maxs;
|
||||
input_ranges[n].alg = (stringop_alg) i;
|
||||
if (!strcmp (align, "align"))
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-05-05 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/65990
|
||||
* gcc.target/i386/pr65990.c: New test.
|
||||
|
||||
2015-05-05 Ilya Tocar <ilya.tocar@intel.com>
|
||||
|
||||
PR target/65915
|
||||
|
29
gcc/testsuite/gcc.target/i386/pr65990.c
Normal file
29
gcc/testsuite/gcc.target/i386/pr65990.c
Normal file
@ -0,0 +1,29 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-mtune=btver2 -mmemcpy-strategy=rep_8byte:-1:noalign" }
|
||||
|
||||
/* { dg-error "stringop strategy name rep_8byte specified for option -mmemcpy_strategy= not supported for 32-bit code" "" { target ia32 } 0 } */
|
||||
|
||||
struct U9
|
||||
{
|
||||
unsigned a[9];
|
||||
};
|
||||
|
||||
struct U9 u9;
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
u9 = (struct U9) {
|
||||
.a = {
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF,
|
||||
0xFF
|
||||
}
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user