mirror of git://gcc.gnu.org/git/gcc.git
PR82809: register handling in ix86_vector_duplicate_value
When adding the call to gen_vec_duplicate, I failed to notice that code further down modified the VEC_DUPLICATE in place. That isn't safe if gen_vec_duplicate returned a const_vector. 2017-11-02 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR target/82809 * config/i386/i386.c (ix86_vector_duplicate_value): Use gen_vec_duplicate after forcing the scalar into a register. gcc/testsuite/ * gcc.dg/pr82809.c: New test. From-SVN: r254366
This commit is contained in:
parent
f53bd85648
commit
a34a16abe5
|
|
@ -1,3 +1,9 @@
|
|||
2017-11-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
|
||||
PR target/82809
|
||||
* config/i386/i386.c (ix86_vector_duplicate_value): Use
|
||||
gen_vec_duplicate after forcing the scalar into a register.
|
||||
|
||||
2017-11-02 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* combine (try_combine): Print the insns input to try_combine to the
|
||||
|
|
|
|||
|
|
@ -41232,7 +41232,7 @@ ix86_vector_duplicate_value (machine_mode mode, rtx target, rtx val)
|
|||
reg = force_reg (innermode, val);
|
||||
if (GET_MODE (reg) != innermode)
|
||||
reg = gen_lowpart (innermode, reg);
|
||||
XEXP (dup, 0) = reg;
|
||||
SET_SRC (PATTERN (insn)) = gen_vec_duplicate (mode, reg);
|
||||
seq = get_insns ();
|
||||
end_sequence ();
|
||||
if (seq)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
2017-11-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
|
||||
* gcc.dg/pr82809.c: New test.
|
||||
|
||||
2017-11-02 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/81957
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Ofast -fno-tree-dominator-opts" } */
|
||||
|
||||
struct locale_time_t
|
||||
{
|
||||
const char *abday[7];
|
||||
const unsigned int *wabday[7];
|
||||
};
|
||||
|
||||
static const unsigned int empty_wstr[1] = { 0 };
|
||||
|
||||
void
|
||||
time_read (struct locale_time_t *time)
|
||||
{
|
||||
int cnt;
|
||||
|
||||
for (cnt=0; cnt < 7; cnt++)
|
||||
{
|
||||
time->abday[cnt] = "";
|
||||
time->wabday[cnt] = empty_wstr;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue