re PR middle-end/59261 (FAIL: gcc.dg/vect/bb-slp-26.c -flto -ffat-lto-objects (internal compiler error))
PR middle-end/59261 * expmed.c (expand_mult): For MODE_VECTOR_INT multiplication if there is no vashl<mode>3 or ashl<mode>3 insn, skip_synth. * gcc.dg/pr59261.c: New test. From-SVN: r207456
This commit is contained in:
parent
5961d779d0
commit
66b3ed5f3d
@ -1,3 +1,9 @@
|
||||
2014-02-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/59261
|
||||
* expmed.c (expand_mult): For MODE_VECTOR_INT multiplication
|
||||
if there is no vashl<mode>3 or ashl<mode>3 insn, skip_synth.
|
||||
|
||||
2014-02-04 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/60012
|
||||
|
@ -3136,6 +3136,14 @@ expand_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
|
||||
if (do_trapv)
|
||||
goto skip_synth;
|
||||
|
||||
/* If mode is integer vector mode, check if the backend supports
|
||||
vector lshift (by scalar or vector) at all. If not, we can't use
|
||||
synthetized multiply. */
|
||||
if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
|
||||
&& optab_handler (vashl_optab, mode) == CODE_FOR_nothing
|
||||
&& optab_handler (ashl_optab, mode) == CODE_FOR_nothing)
|
||||
goto skip_synth;
|
||||
|
||||
/* These are the operations that are potentially turned into
|
||||
a sequence of shifts and additions. */
|
||||
mode_bitsize = GET_MODE_UNIT_BITSIZE (mode);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-02-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/59261
|
||||
* gcc.dg/pr59261.c: New test.
|
||||
|
||||
2014-02-04 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/60012
|
||||
|
17
gcc/testsuite/gcc.dg/pr59261.c
Normal file
17
gcc/testsuite/gcc.dg/pr59261.c
Normal file
@ -0,0 +1,17 @@
|
||||
/* PR middle-end/59261 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
typedef signed char V __attribute__((vector_size (8)));
|
||||
|
||||
void
|
||||
foo (V *a, V *b)
|
||||
{
|
||||
*a = *b * 3;
|
||||
}
|
||||
|
||||
void
|
||||
bar (V *a, V *b)
|
||||
{
|
||||
*a = *b * 4;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user