diff options
author | Richard Guenther <rguenther@suse.de> | 2008-08-19 09:06:54 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-08-19 09:06:54 +0000 |
commit | 53f3815cc08c390d2aee47a252203d416304298c (patch) | |
tree | b82321d60c8540d93282490a2395f56bf8a0f30e /gcc/testsuite/gcc.dg/vect/vect-11a.c | |
parent | 5d59337297f9410a407e2e8e89f38ebbc9aa40df (diff) | |
download | gcc-53f3815cc08c390d2aee47a252203d416304298c.zip gcc-53f3815cc08c390d2aee47a252203d416304298c.tar.gz gcc-53f3815cc08c390d2aee47a252203d416304298c.tar.bz2 |
re PR tree-optimization/35972 (load-PRE missed opportunities without SFTs)
2008-08-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35972
PR tree-optimization/23094
* tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
parameter.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
handle MISALIGNED_INDIRECT_REF.
(get_ref_from_reference_ops): New helper.
(vn_reference_lookup_pieces): Walk the use-def chain using the
alias-oracle if requested.
* tree-ssa-pre.c (phi_translate_1): Do reference lookup with
walking the use-def chain.
(compute_avail): But not here.
(create_component_ref_by_pieces_1): Properly handle
MISALIGNED_INDIRECT_REF.
(do_regular_insertion): Handle fully redundant
expressions after PHI-translation also for SSA_NAME values, not
only constants. Correctly use edoubleprime for that.
* gcc.dg/tree-ssa/ssa-pre-19.c: New testcase.
* gcc.dg/autopar/reduc-1.c: Move constant initialized arrays to
global memory.
* gcc.dg/autopar/reduc-1char.c: Likewise.
* gcc.dg/autopar/reduc-1short.c: Likewise.
* gcc.dg/autopar/reduc-2.c: Likewise.
* gcc.dg/autopar/reduc-2char.c: Likewise.
* gcc.dg/autopar/reduc-2short.c: Likewise.
* gcc.dg/autopar/reduc-3.c: Likewise.
* gcc.dg/tree-ssa/ifc-20040816-1.c: Likewise.
* gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c: Likewise.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c: Likewise.
* gcc.dg/vect/fast-math-vect-reduc-5.c: Likewise.
* gcc.dg/vect/fast-math-vect-reduc-7.c: Likewise.
* gcc.dg/vect/no-trapping-math-2.c: Likewise.
* gcc.dg/vect/no-trapping-math-vect-111.c: Likewise.
* gcc.dg/vect/no-trapping-math-vect-ifcvt-11.c: Likewise.
* gcc.dg/vect/no-trapping-math-vect-ifcvt-12.c: Likewise.
* gcc.dg/vect/no-trapping-math-vect-ifcvt-13.c: Likewise.
* gcc.dg/vect/no-trapping-math-vect-ifcvt-14.c: Likewise.
* gcc.dg/vect/no-trapping-math-vect-ifcvt-15.c: Likewise.
* gcc.dg/vect/no-vfa-vect-37.c: Likewise.
* gcc.dg/vect/no-vfa-vect-depend-1.c: Likewise.
* gcc.dg/vect/pr18400.c: Likewise.
* gcc.dg/vect/slp-12b.c: Likewise.
* gcc.dg/vect/slp-14.c: Likewise.
* gcc.dg/vect/slp-7.c: Likewise.
* gcc.dg/vect/slp-15.c: Likewise.
* gcc.dg/vect/slp-16.c: Likewise.
* gcc.dg/vect/slp-17.c: Likewise.
* gcc.dg/vect/slp-24.c: Likewise.
* gcc.dg/vect/slp-28.c: Likewise.
* gcc.dg/vect/slp-3.c: Likewise.
* gcc.dg/vect/slp-34.c: Likewise.
* gcc.dg/vect/slp-6.c: Likewise.
* gcc.dg/vect/slp-8.c: Likewise.
* gcc.dg/vect/vect-107.c: Likewise.
* gcc.dg/vect/vect-108.c: Likewise.
* gcc.dg/vect/vect-11.c: Likewise.
* gcc.dg/vect/vect-112.c: Likewise.
* gcc.dg/vect/vect-115.c: Likewise.
* gcc.dg/vect/vect-11a.c: Likewise.
* gcc.dg/vect/vect-34.c: Likewise.
* gcc.dg/vect/vect-9.c: Likewise.
* gcc.dg/vect/vect-97.c: Likewise.
* gcc.dg/vect/vect-align-1.c: Likewise.
* gcc.dg/vect/vect-float-extend-1.c: Likewise.
* gcc.dg/vect/vect-floatint-conversion-1.c: Likewise.
* gcc.dg/vect/vect-ifcvt-16.c: Likewise.
* gcc.dg/vect/vect-ifcvt-17.c: Likewise.
* gcc.dg/vect/vect-ifcvt-2.c: Likewise.
* gcc.dg/vect/vect-ifcvt-3.c: Likewise.
* gcc.dg/vect/vect-ifcvt-4.c: Likewise.
* gcc.dg/vect/vect-ifcvt-5.c: Likewise.
* gcc.dg/vect/vect-ifcvt-6.c: Likewise.
* gcc.dg/vect/vect-ifcvt-7.c: Likewise.
* gcc.dg/vect/vect-intfloat-conversion-1.c: Likewise.
* gcc.dg/vect/vect-intfloat-conversion-2.c: Likewise.
* gcc.dg/vect/vect-intfloat-conversion-3.c: Likewise.
* gcc.dg/vect/vect-intfloat-conversion-4a.c: Likewise.
* gcc.dg/vect/vect-intfloat-conversion-4b.c: Likewise.
* gcc.dg/vect/vect-multitypes-2.c: Likewise.
* gcc.dg/vect/vect-multitypes-5.c: Likewise.
* gcc.dg/vect/vect-reduc-1.c: Likewise.
* gcc.dg/vect/vect-reduc-1char.c: Likewise.
* gcc.dg/vect/vect-reduc-1short.c: Likewise.
* gcc.dg/vect/vect-reduc-2.c: Likewise.
* gcc.dg/vect/vect-reduc-3.c: Likewise.
* gcc.dg/vect/vect-shift-1.c: Likewise.
* gcc.dg/vect/vect-strided-float.c: Likewise.
* gcc.dg/vect/vect-strided-store-u32-i2.c: Likewise.
* gcc.dg/vect/wrapv-vect-reduc-2char.c: Likewise.
* gcc.dg/vect/wrapv-vect-reduc-2short.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-11.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-11a.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-2.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c: Likewise.
From-SVN: r139226
Diffstat (limited to 'gcc/testsuite/gcc.dg/vect/vect-11a.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-11a.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/vect-11a.c b/gcc/testsuite/gcc.dg/vect/vect-11a.c index 75b1035..2da903b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-11a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-11a.c @@ -6,16 +6,17 @@ extern void abort (void); +unsigned int A[8] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001, + 0x08000000,0xffffffff,0xff0000ff,0xf0000001}; +unsigned int B[8] = {0x08000000,0x08000001,0xff0000ff,0xf0000001, + 0x08000000,0x08000001,0xff0000ff,0xf0000001}; +unsigned int Answer[8] = {0,0xf7ffffff,0x0200fe01,0xe0000001, + 0,0xf7ffffff,0x0200fe01,0xe0000001}; +unsigned int C[8]; + __attribute__ ((noinline)) void u () { - unsigned int A[8] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001, - 0x08000000,0xffffffff,0xff0000ff,0xf0000001}; - unsigned int B[8] = {0x08000000,0x08000001,0xff0000ff,0xf0000001, - 0x08000000,0x08000001,0xff0000ff,0xf0000001}; - unsigned int Answer[8] = {0,0xf7ffffff,0x0200fe01,0xe0000001, - 0,0xf7ffffff,0x0200fe01,0xe0000001}; - unsigned int C[8]; int i, j; for (i=0; i<8; i++) @@ -25,22 +26,23 @@ void u () abort (); } +signed int D[8] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001, + 0x08000000,0xffffffff,0xff0000ff,0xf0000001}; +signed int E[8] = {0x08000000,0x08000001,0xff0000ff,0xf0000001, + 0x08000000,0x08000001,0xff0000ff,0xf0000001}; +signed int Dnswer[8] = {0,0xf7ffffff,0x0200fe01, 0xe0000001, + 0,0xf7ffffff,0x0200fe01, 0xe0000001}; +signed int F[8]; + __attribute__ ((noinline)) void s() { - signed int A[8] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001, - 0x08000000,0xffffffff,0xff0000ff,0xf0000001}; - signed int B[8] = {0x08000000,0x08000001,0xff0000ff,0xf0000001, - 0x08000000,0x08000001,0xff0000ff,0xf0000001}; - signed int Answer[8] = {0,0xf7ffffff,0x0200fe01, 0xe0000001, - 0,0xf7ffffff,0x0200fe01, 0xe0000001}; - signed int C[8]; int i, j; for (i=0; i<8; i++) - C[i] = A[i] * B[i]; + F[i] = D[i] * E[i]; for (i=0; i<8; i++) - if (C[i] != Answer[i]) + if (F[i] != Dnswer[i]) abort (); } |