re PR c/39928 (gimplify_expr failure)
2009-04-27 Richard Guenther <rguenther@suse.de> PR middle-end/39928 * gimplify.c (gimplify_expr): If we are required to create a temporary make sure it ends up as register. * gcc.c-torture/compile/pr39928-1.c: New testcase. * gcc.c-torture/compile/pr39928-2.c: Likewise. From-SVN: r146846
This commit is contained in:
parent
952fa153c8
commit
c685de4a22
5 changed files with 34 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2009-04-27 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/39928
|
||||
* gimplify.c (gimplify_expr): If we are required to create
|
||||
a temporary make sure it ends up as register.
|
||||
|
||||
2009-04-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/39903
|
||||
|
|
|
@ -7184,7 +7184,12 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
|
|||
/* The postqueue might change the value of the expression between
|
||||
the initialization and use of the temporary, so we can't use a
|
||||
formal temp. FIXME do we care? */
|
||||
*expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
|
||||
{
|
||||
*expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
|
||||
if (TREE_CODE (TREE_TYPE (*expr_p)) == COMPLEX_TYPE
|
||||
|| TREE_CODE (TREE_TYPE (*expr_p)) == VECTOR_TYPE)
|
||||
DECL_GIMPLE_REG_P (*expr_p) = 1;
|
||||
}
|
||||
else
|
||||
*expr_p = get_formal_tmp_var (*expr_p, pre_p);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2009-04-27 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/39928
|
||||
* gcc.c-torture/compile/pr39928-1.c: New testcase.
|
||||
* gcc.c-torture/compile/pr39928-2.c: Likewise.
|
||||
|
||||
2009-04-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/39903
|
||||
|
|
8
gcc/testsuite/gcc.c-torture/compile/pr39928-1.c
Normal file
8
gcc/testsuite/gcc.c-torture/compile/pr39928-1.c
Normal file
|
@ -0,0 +1,8 @@
|
|||
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
|
||||
extern __m128 _mm_sub_ps (__m128 __A, __m128 __B);
|
||||
extern __m128 _mm_mul_ps (__m128 __A, __m128 __B);
|
||||
__m128
|
||||
vq_nbest(const __m128 *codebook, __m128 d, __m128 in)
|
||||
{
|
||||
return _mm_sub_ps(d, _mm_mul_ps(in, *codebook++));
|
||||
}
|
8
gcc/testsuite/gcc.c-torture/compile/pr39928-2.c
Normal file
8
gcc/testsuite/gcc.c-torture/compile/pr39928-2.c
Normal file
|
@ -0,0 +1,8 @@
|
|||
typedef _Complex float __m128;
|
||||
extern __m128 _mm_sub_ps (__m128 __A, __m128 __B);
|
||||
extern __m128 _mm_mul_ps (__m128 __A, __m128 __B);
|
||||
__m128
|
||||
vq_nbest(const __m128 *codebook, __m128 d, __m128 in)
|
||||
{
|
||||
return _mm_sub_ps(d, _mm_mul_ps(in, *codebook++));
|
||||
}
|
Loading…
Add table
Reference in a new issue