mirror of git://gcc.gnu.org/git/gcc.git
tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs to the correct type.
2011-08-19 Andrew Stubbs <ams@codesourcery.com> gcc/ * tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs to the correct type. gcc/testsuite/ * gcc.target/arm/wmul-10.c: New file. From-SVN: r177909
This commit is contained in:
parent
6a228c2c0e
commit
75161d2ca5
|
@ -1,3 +1,8 @@
|
|||
2011-08-19 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs
|
||||
to the correct type.
|
||||
|
||||
2011-08-19 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* tree-ssa-math-opts.c (convert_mult_to_widen): Better handle
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2011-08-19 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* gcc.target/arm/wmul-10.c: New file.
|
||||
|
||||
2011-08-19 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* gcc.target/arm/wmul-9.c: New file.
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
/* { dg-require-effective-target arm_dsp } */
|
||||
|
||||
|
||||
unsigned long long
|
||||
foo (unsigned short a, unsigned short *b, unsigned short *c)
|
||||
{
|
||||
return (unsigned)a + (unsigned long long)*b * (unsigned long long)*c;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "umlal" } } */
|
|
@ -2369,6 +2369,10 @@ convert_plusminus_to_widen (gimple_stmt_iterator *gsi, gimple stmt,
|
|||
mult_rhs2 = build_and_insert_cast (gsi, loc, tmp, mult_rhs2);
|
||||
}
|
||||
|
||||
if (!useless_type_conversion_p (type, TREE_TYPE (add_rhs)))
|
||||
add_rhs = build_and_insert_cast (gsi, loc, create_tmp_var (type, NULL),
|
||||
add_rhs);
|
||||
|
||||
gimple_assign_set_rhs_with_ops_1 (gsi, wmult_code, mult_rhs1, mult_rhs2,
|
||||
add_rhs);
|
||||
update_stmt (gsi_stmt (*gsi));
|
||||
|
|
Loading…
Reference in New Issue