re PR tree-optimization/44632 (wrong code for complex division)
2010-08-09 Richard Guenther <rguenther@suse.de> PR middle-end/44632 * function.c (gimplify_parameters): Do not clear addressable bit of the original parameter. * g++.dg/opt/nrv17.C: New testcase. From-SVN: r163031
This commit is contained in:
parent
87d072e09a
commit
37609bf086
@ -1,3 +1,9 @@
|
||||
2010-08-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/44632
|
||||
* function.c (gimplify_parameters): Do not clear addressable
|
||||
bit of the original parameter.
|
||||
|
||||
2010-08-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/45212
|
||||
|
@ -3570,12 +3570,10 @@ gimplify_parameters (void)
|
||||
DECL_IGNORED_P (local) = 0;
|
||||
/* If PARM was addressable, move that flag over
|
||||
to the local copy, as its address will be taken,
|
||||
not the PARMs. */
|
||||
not the PARMs. Keep the parms address taken
|
||||
as we'll query that flag during gimplification. */
|
||||
if (TREE_ADDRESSABLE (parm))
|
||||
{
|
||||
TREE_ADDRESSABLE (parm) = 0;
|
||||
TREE_ADDRESSABLE (local) = 1;
|
||||
}
|
||||
TREE_ADDRESSABLE (local) = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-08-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/44632
|
||||
* g++.dg/opt/nrv17.C: New testcase.
|
||||
|
||||
2010-08-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/45212
|
||||
|
32
gcc/testsuite/g++.dg/opt/nrv17.C
Normal file
32
gcc/testsuite/g++.dg/opt/nrv17.C
Normal file
@ -0,0 +1,32 @@
|
||||
// { dg-do run }
|
||||
|
||||
#include <cstdlib>
|
||||
#include <complex>
|
||||
|
||||
void __attribute__((noinline))
|
||||
h(std::complex<double> x)
|
||||
{
|
||||
if (x.real() != 2.0)
|
||||
std::abort ();
|
||||
}
|
||||
|
||||
void __attribute__((noinline))
|
||||
g(std::complex<double> x)
|
||||
{
|
||||
if (x.real() != 0.5)
|
||||
std::abort ();
|
||||
}
|
||||
|
||||
void __attribute__((noinline))
|
||||
f(std::complex<double> x)
|
||||
{
|
||||
h (x);
|
||||
x = 1.0 / x;
|
||||
g (x);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
f(2.0);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user