From 237eaf79a5cb53340d8451e3379d6c483ec4f1aa Mon Sep 17 00:00:00 2001 From: Dorit Naishlos Date: Sun, 20 Feb 2005 20:32:41 +0000 Subject: [PATCH] re PR tree-optimization/19951 (ICE in tree_split_edge, at tree-cfg.c:3199 with -ftree-vectorize) PR tree-optimization/19951 * g++.dg/vect: New directory. * g++.dg/vect/vect.exp: New file. * g++.dg/vect/pr19951.cc: New testcase. * g++.dg/dg.exp: Also prune vectorizer tests. From-SVN: r95309 --- gcc/testsuite/ChangeLog | 8 +++ gcc/testsuite/g++.dg/dg.exp | 1 + gcc/testsuite/g++.dg/vect/pr19951.cc | 17 +++++ gcc/testsuite/g++.dg/vect/vect.exp | 95 ++++++++++++++++++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 gcc/testsuite/g++.dg/vect/pr19951.cc create mode 100644 gcc/testsuite/g++.dg/vect/vect.exp diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bfcbe971fbb..68594ec18b4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2005-02-20 Dorit Naishlos + + PR tree-optimization/19951 + * g++.dg/vect: New directory. + * g++.dg/vect/vect.exp: New file. + * g++.dg/vect/pr19951.cc: New testcase. + * g++.dg/dg.exp: Also prune vectorizer tests. + 2005-02-20 Zack Weinberg PR 18785 diff --git a/gcc/testsuite/g++.dg/dg.exp b/gcc/testsuite/g++.dg/dg.exp index f809f10f2db..f4ec94c6ee1 100644 --- a/gcc/testsuite/g++.dg/dg.exp +++ b/gcc/testsuite/g++.dg/dg.exp @@ -39,6 +39,7 @@ set tests [prune $tests $srcdir/$subdir/gcov/*] set tests [prune $tests $srcdir/$subdir/pch/*] set tests [prune $tests $srcdir/$subdir/special/*] set tests [prune $tests $srcdir/$subdir/tls/*] +set tests [prune $tests $srcdir/$subdir/vect/*] # Main loop. dg-runtest $tests "" $DEFAULT_CXXFLAGS diff --git a/gcc/testsuite/g++.dg/vect/pr19951.cc b/gcc/testsuite/g++.dg/vect/pr19951.cc new file mode 100644 index 00000000000..bb6586c0629 --- /dev/null +++ b/gcc/testsuite/g++.dg/vect/pr19951.cc @@ -0,0 +1,17 @@ +/* { dg-do compile } */ + +struct A +{ + ~A(); +}; + +void foo(); + +void bar() +{ + A a; + + foo(); + for (;;) + foo(); +} diff --git a/gcc/testsuite/g++.dg/vect/vect.exp b/gcc/testsuite/g++.dg/vect/vect.exp new file mode 100644 index 00000000000..cc2e4e30364 --- /dev/null +++ b/gcc/testsuite/g++.dg/vect/vect.exp @@ -0,0 +1,95 @@ +# Copyright (C) 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# GCC testsuite that uses the 'dg.exp' driver. + +# There's a bunch of headers we need. +if [is_remote host] { + foreach header [glob -nocomplain $srcdir/$subdir/*.{h,def} ] { + remote_download host $header + } +} + +# Load support procs. +load_lib g++-dg.exp +load_lib target-supports.exp + +# If the target system supports vector instructions, the default action +# for a test is 'run', otherwise it's 'compile'. Save current default. +# Executing vector instructions on a system without hardware vector support +# is also disabled by a call to check_vect, but disabling execution here is +# more efficient. +global dg-do-what-default +set save-dg-do-what-default ${dg-do-what-default} + +# Set up flags used for tests that don't specify options. +set DEFAULT_VECTCFLAGS "" + +# These flags are used for all targets. +lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" \ + "-ftree-vectorizer-verbose=3" "-fdump-tree-vect-stats" + +# Skip these tests for targets that do not support generating vector +# code. Set additional target-dependent vector flags, which can be +# overridden by using dg-options in individual tests. +if [istarget "powerpc*-*-*"] { + # If there are powerpc targets to skip, do it here. + + lappend DEFAULT_VECTCFLAGS "-maltivec" + if [check_vmx_hw_available] { + set dg-do-what-default run + } else { + if [is-effective-target ilp32] { + # Specify a cpu that supports VMX for compile-only tests. + lappend DEFAULT_VECTCFLAGS "-mcpu=7400" + } + set dg-do-what-default compile + } +} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } { + lappend DEFAULT_VECTCFLAGS "-msse2" + set dg-do-what-default run +} elseif [istarget "mipsisa64*-*-*"] { + lappend DEFAULT_VECTCFLAGS "-mpaired-single" + set dg-do-what-default run +} elseif [istarget "sparc*-*-*"] { + lappend DEFAULT_VECTCFLAGS "-mcpu=ultrasparc" "-mvis" + set dg-do-what-default run +} elseif [istarget "alpha*-*-*"] { + lappend DEFAULT_VECTCFLAGS "-mmax" + if [check_alpha_max_hw_available] { + set dg-do-what-default run + } else { + set dg-do-what-default compile + } +} elseif [istarget "ia64-*-*"] { + set dg-do-what-default run +} else { + return +} + + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,cc,S} ]] \ + "" $DEFAULT_VECTCFLAGS + +# Clean up. +set dg-do-what-default ${save-dg-do-what-default} + +# All done. +dg-finish -- 2.30.2