summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-22 19:16:54 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-22 19:16:54 +0000
commit04da4fc85fff25a9493b317b53138314dccf4804 (patch)
tree2bf07dfe1deb0aa70d66cbd083ced57ec702a9b6
parenta685c163888891f8d9cb6e95891930f26e12a4cb (diff)
downloadgcc-04da4fc85fff25a9493b317b53138314dccf4804.tar.gz
2010-11-22 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 167043 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@167047 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog.MELT4
-rw-r--r--gcc/ChangeLog73
-rw-r--r--gcc/Makefile.in6
-rw-r--r--gcc/alias.c8
-rw-r--r--gcc/cgraphbuild.c29
-rw-r--r--gcc/df-scan.c48
-rw-r--r--gcc/df.h1
-rw-r--r--gcc/fold-const.c11
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/gfortranspec.c14
-rw-r--r--gcc/fwprop.c175
-rw-r--r--gcc/gengtype.c414
-rw-r--r--gcc/gimple-fold.c6
-rw-r--r--gcc/gimple-pretty-print.c3
-rw-r--r--gcc/rtl.h1
-rw-r--r--gcc/sel-sched.c3
-rw-r--r--gcc/testsuite/ChangeLog26
-rw-r--r--gcc/testsuite/c-c++-common/pr44832.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr39845.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr28796-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr45652.c39
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-10.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-11.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-13.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-14.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-15.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-16.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-17.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-18.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-19.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-20.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-21.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-22.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-23.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-8.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-8a.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-8b.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-9.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr45752.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr46009.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-10.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-11.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-12a.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-12b.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-13.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-14.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-15.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-16.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-17.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-18.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-19.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-20.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-21.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-22.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-24.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-26.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-28.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-33.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-34.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-8.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-9.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-cond-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-iv-11.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-iv-6.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c50
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-peel-3.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-shift-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c1
-rw-r--r--gcc/tree-ssa-ccp.c4
138 files changed, 750 insertions, 300 deletions
diff --git a/ChangeLog.MELT b/ChangeLog.MELT
index 642a4a6b073..3c84a6990bf 100644
--- a/ChangeLog.MELT
+++ b/ChangeLog.MELT
@@ -1,6 +1,10 @@
2010-11-22 Basile Starynkevitch <basile@starynkevitch.net>
+ MELT branch merged with trunk rev 167043
+
+2010-11-22 Basile Starynkevitch <basile@starynkevitch.net>
+
MELT branch merged with trunk rev 167021
2010-11-19 Basile Starynkevitch <basile@starynkevitch.net>
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index db76a0e409c..a82d6f69650 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,73 @@
+2010-11-22 Basile Starynkevitch <basile@starynkevitch.net>
+
+ * gimple-pretty-print.c (dump_bb_header): Add check for cfun.
+
+2010-11-22 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/44970
+ * Makefile.in (fwprop.o) Add sparseset.h.
+ * fwprop.c: Include sparseset.h
+ (struct find_occurrence_data, find_occurrence_callback,
+ find_occurrence): Remove.
+ (active_defs, active_defs_check, register_active_defs,
+ update_df_init, update_uses): New.
+ (update_df): Rewrite.
+ (try_fwprop_subst, forward_propagate_asm): Add calls to
+ update_df_init and update_df.
+ (fwprop_init): Allocate active_defs and active_defs_check.
+ (fwprop_done): Free them.
+ (fwprop, fwprop_addr): Adjust comments.
+ * df.h (df_uses_create): Declare.
+ * df-scan.c (df_install_ref_incremental): Break out of df_ref_create.
+ (df_ref_create): Return result of df_ref_create_structure directly.
+ (df_ref_create_structure): Call df_install_ref_incremental when
+ no collection_rec is passed.
+ (df_ref_record): Do not create multiword hard reg info when no
+ collection_rec is passed.
+ (df_uses_create): New.
+
+2010-11-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR middle-end/43057
+ * fold-const.c (pedantic_non_lvalue_loc): Unshare x before
+ setting location.
+
+2010-11-22 Richard Guenther <rguenther@suse.de>
+
+ * gimple-fold.c (maybe_fold_reference): When canonicalizing
+ MEM_REFs, preserve volatileness.
+ * cgraphbuild.c (mark_address): Properly check for FUNCTION_DECL
+ addresses.
+
+2010-11-22 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-ccp.c (get_base_constructor): Remove superfluous breaks.
+
+2010-11-22 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/45652
+ * alias.c (get_reg_base_value): New.
+ * rtl.h (get_reg_base_value): Add prototype.
+ * sel-sched.c (init_regs_for_mode): Use it. Don't use registers with
+ non-null REG_BASE_VALUE for renaming.
+
+2010-11-22 Jeremie Salvucci <jeremie.salvucci@free.fr>
+ Basile Starynkevitch <basile@starynkevitch.net>
+
+ * gengtype.c: Include xregex.h and obstack.h
+ Added comments about role of get_output_file_with_visibility and
+ our regexpr machinery.
+ (frul_actionrout_t, struct file_rule_st): New.
+ (hader_dot_h_frul, source_dot_c_frul): New functions.
+ (NULL_REGEX, NULL_FRULACT): New.
+ (files_rules): New.
+ (matching_file_name_substitute): New function.
+ (get_output_file_with_visibility): Updated comments and rewritten
+ to use the new files_rules machinery.
+
+ * Makefile.in (XREGEX_H): Added variable.
+ (build/gengtype.o): Added dependencies for xregex.h and obstack.h
+
2010-11-21 Nathan Froyd <froydnj@codesourcery.com>
* system.h (FUNCTION_ARG_BOUNDARY): Really poison.
@@ -168,8 +238,7 @@
* doc/tm.texi.in (HANDLE_SYSV_PRAGMA,
HANDLE_PRAGMA_PACK_PUSH_POP): Remove.
- (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to
- HANDLE_SYSV_PRAGMA.
+ (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to HANDLE_SYSV_PRAGMA.
* doc/tm.texi: Regenerate.
* system.h (HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_SYSV_PRAGMA,
HANDLE_PRAGMA_WEAK): Poison.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index e844e523665..43590980bcf 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -440,6 +440,7 @@ FIBHEAP_H = $(srcdir)/../include/fibheap.h
PARTITION_H = $(srcdir)/../include/partition.h
MD5_H = $(srcdir)/../include/md5.h
DWARF2_H = $(srcdir)/../include/dwarf2.h
+XREGEX_H = $(srcdir)/../include/xregex.h
# Linker plugin API headers
LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h
@@ -3173,7 +3174,7 @@ dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TOPLEV_H) $(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \
output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
- $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) domwalk.h
+ $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) domwalk.h sparseset.h
web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) \
insn-config.h $(RECOG_H) $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H)
@@ -3992,7 +3993,8 @@ build/gengtype-lex.o : gengtype-lex.c gengtype.h $(BCONFIG_H) $(SYSTEM_H)
build/gengtype-parse.o : gengtype-parse.c gengtype.h $(BCONFIG_H) \
$(SYSTEM_H)
build/gengtype.o : gengtype.c $(BCONFIG_H) $(SYSTEM_H) gengtype.h \
- rtl.def insn-notes.def errors.h double-int.h $(HASHTAB_H)
+ rtl.def insn-notes.def errors.h double-int.h $(HASHTAB_H) \
+ $(OBSTACK_H) $(XREGEX_H)
build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \
errors.h $(READ_MD_H)
build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h \
diff --git a/gcc/alias.c b/gcc/alias.c
index 2a877979417..5b04f85791c 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1291,6 +1291,14 @@ record_set (rtx dest, const_rtx set, void *data ATTRIBUTE_UNUSED)
reg_seen[regno] = 1;
}
+/* Return REG_BASE_VALUE for REGNO. Selective scheduler uses this to avoid
+ using hard registers with non-null REG_BASE_VALUE for renaming. */
+rtx
+get_reg_base_value (unsigned int regno)
+{
+ return VEC_index (rtx, reg_base_value, regno);
+}
+
/* If a value is known for REGNO, return it. */
rtx
diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c
index f9d70dbb792..d8d196fd0da 100644
--- a/gcc/cgraphbuild.c
+++ b/gcc/cgraphbuild.c
@@ -237,6 +237,7 @@ static bool
mark_address (gimple stmt ATTRIBUTE_UNUSED, tree addr,
void *data ATTRIBUTE_UNUSED)
{
+ addr = get_base_address (addr);
if (TREE_CODE (addr) == FUNCTION_DECL)
{
struct cgraph_node *node = cgraph_node (addr);
@@ -245,24 +246,20 @@ mark_address (gimple stmt ATTRIBUTE_UNUSED, tree addr,
node, NULL,
IPA_REF_ADDR, stmt);
}
- else
+ else if (addr && TREE_CODE (addr) == VAR_DECL
+ && (TREE_STATIC (addr) || DECL_EXTERNAL (addr)))
{
- addr = get_base_address (addr);
- if (addr && TREE_CODE (addr) == VAR_DECL
- && (TREE_STATIC (addr) || DECL_EXTERNAL (addr)))
- {
- struct varpool_node *vnode = varpool_node (addr);
- int walk_subtrees;
+ struct varpool_node *vnode = varpool_node (addr);
+ int walk_subtrees;
- if (lang_hooks.callgraph.analyze_expr)
- lang_hooks.callgraph.analyze_expr (&addr, &walk_subtrees);
- varpool_mark_needed_node (vnode);
- if (vnode->alias && vnode->extra_name)
- vnode = vnode->extra_name;
- ipa_record_reference ((struct cgraph_node *)data, NULL,
- NULL, vnode,
- IPA_REF_ADDR, stmt);
- }
+ if (lang_hooks.callgraph.analyze_expr)
+ lang_hooks.callgraph.analyze_expr (&addr, &walk_subtrees);
+ varpool_mark_needed_node (vnode);
+ if (vnode->alias && vnode->extra_name)
+ vnode = vnode->extra_name;
+ ipa_record_reference ((struct cgraph_node *)data, NULL,
+ NULL, vnode,
+ IPA_REF_ADDR, stmt);
}
return false;
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 5cda89730d3..1400d2569b0 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -122,6 +122,7 @@ static void df_uses_record (struct df_collection_rec *,
basic_block, struct df_insn_info *,
int ref_flags);
+static void df_install_ref_incremental (df_ref);
static df_ref df_ref_create_structure (enum df_ref_class,
struct df_collection_rec *, rtx, rtx *,
basic_block, struct df_insn_info *,
@@ -680,6 +681,19 @@ df_scan_blocks (void)
}
}
+/* Create new refs under address LOC within INSN. This function is
+ only used externally. REF_FLAGS must be either 0 or DF_REF_IN_NOTE,
+ depending on whether LOC is inside PATTERN (INSN) or a note. */
+
+void
+df_uses_create (rtx *loc, rtx insn, int ref_flags)
+{
+ gcc_assert (!(ref_flags & ~DF_REF_IN_NOTE));
+ df_uses_record (NULL, loc, DF_REF_REG_USE,
+ BLOCK_FOR_INSN (insn),
+ DF_INSN_INFO_GET (insn),
+ ref_flags);
+}
/* Create a new ref of type DF_REF_TYPE for register REG at address
LOC within INSN of BB. This function is only used externally. */
@@ -690,13 +704,6 @@ df_ref_create (rtx reg, rtx *loc, rtx insn,
enum df_ref_type ref_type,
int ref_flags)
{
- df_ref ref;
- struct df_reg_info **reg_info;
- struct df_ref_info *ref_info;
- df_ref *ref_rec;
- df_ref **ref_rec_ptr;
- unsigned int count = 0;
- bool add_to_table;
enum df_ref_class cl;
df_grow_reg_info ();
@@ -708,8 +715,24 @@ df_ref_create (rtx reg, rtx *loc, rtx insn,
cl = DF_REF_REGULAR;
else
cl = DF_REF_BASE;
- ref = df_ref_create_structure (cl, NULL, reg, loc, bb, DF_INSN_INFO_GET (insn),
- ref_type, ref_flags);
+
+ return df_ref_create_structure (cl, NULL, reg, loc, bb,
+ DF_INSN_INFO_GET (insn),
+ ref_type, ref_flags);
+}
+
+static void
+df_install_ref_incremental (df_ref ref)
+{
+ struct df_reg_info **reg_info;
+ struct df_ref_info *ref_info;
+ df_ref *ref_rec;
+ df_ref **ref_rec_ptr;
+ unsigned int count = 0;
+ bool add_to_table;
+
+ rtx insn = DF_REF_INSN (ref);
+ basic_block bb = BLOCK_FOR_INSN (insn);
if (DF_REF_REG_DEF_P (ref))
{
@@ -798,8 +821,6 @@ df_ref_create (rtx reg, rtx *loc, rtx insn,
to mark the block dirty ourselves. */
if (!DEBUG_INSN_P (DF_REF_INSN (ref)))
df_set_bb_dirty (bb);
-
- return ref;
}
@@ -2796,6 +2817,8 @@ df_ref_create_structure (enum df_ref_class cl,
else
VEC_safe_push (df_ref, stack, collection_rec->use_vec, this_ref);
}
+ else
+ df_install_ref_incremental (this_ref);
return this_ref;
}
@@ -2839,7 +2862,8 @@ df_ref_record (enum df_ref_class cl,
/* If this is a multiword hardreg, we create some extra
datastructures that will enable us to easily build REG_DEAD
and REG_UNUSED notes. */
- if ((endregno != regno + 1) && insn_info)
+ if (collection_rec
+ && (endregno != regno + 1) && insn_info)
{
/* Sets to a subreg of a multiword register are partial.
Sets to a non-subreg of a multiword register are not. */
diff --git a/gcc/df.h b/gcc/df.h
index f268289fefb..a9bc3664d2f 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -980,6 +980,7 @@ extern void df_grow_insn_info (void);
extern void df_scan_blocks (void);
extern df_ref df_ref_create (rtx, rtx *, rtx,basic_block,
enum df_ref_type, int ref_flags);
+extern void df_uses_create (rtx *, rtx, int);
extern void df_ref_remove (df_ref);
extern struct df_insn_info * df_insn_create_insn_record (rtx);
extern void df_insn_delete (basic_block, unsigned int);
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 9f1e0809a3c..7306863ff97 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2097,7 +2097,16 @@ pedantic_non_lvalue_loc (location_t loc, tree x)
{
if (pedantic_lvalues)
return non_lvalue_loc (loc, x);
- protected_set_expr_location (x, loc);
+
+ if (CAN_HAVE_LOCATION_P (x)
+ && EXPR_LOCATION (x) != loc
+ && !(TREE_CODE (x) == SAVE_EXPR
+ || TREE_CODE (x) == TARGET_EXPR
+ || TREE_CODE (x) == BIND_EXPR))
+ {
+ x = copy_node (x);
+ SET_EXPR_LOCATION (x, loc);
+ }
return x;
}
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index db4380f7795..aa90bcb6041 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2010-11-22 Michael Matz <matz@suse.de>
+
+ * gfortranspec.c (library): New global, moved from ...
+ (lang_specific_driver): ... here.
+ (lang_specific_pre_link): Test it here before including
+ libgfortran.spec.
+
2010-11-21 Michael Matz <matz@suse.de>
Tobias Burnus <burnus@net-b.de>
diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c
index d8d9fc24075..4bf9bf10ffa 100644
--- a/gcc/fortran/gfortranspec.c
+++ b/gcc/fortran/gfortranspec.c
@@ -76,7 +76,11 @@ static unsigned int g77_newargc;
static struct cl_decoded_option *g77_new_decoded_options;
/* The path to the spec file. */
-char *spec_file = NULL;
+static char *spec_file = NULL;
+
+/* This will be NULL if we encounter a situation where we should not
+ link in the fortran libraries. */
+static const char *library = NULL;
/* Return full path name of spec file if it is in DIR, or NULL if
@@ -207,10 +211,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
unsigned int i;
int verbose = 0;
- /* This will be NULL if we encounter a situation where we should not
- link in libf2c. */
- const char *library = FORTRAN_LIBRARY;
-
/* 0 => -xnone in effect.
1 => -xfoo in effect. */
int saw_speclang = 0;
@@ -233,6 +233,8 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
int n_infiles = 0;
int n_outfiles = 0;
+ library = FORTRAN_LIBRARY;
+
#if 0
fprintf (stderr, "Incoming:");
for (i = 0; i < argc; i++)
@@ -472,7 +474,7 @@ lang_specific_pre_link (void)
{
if (spec_file)
free (spec_file);
- else
+ else if (library)
do_spec ("%:include(libgfortran.spec)");
return 0;
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index b54ff501fea..7f29ffb5afb 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "toplev.h"
+#include "sparseset.h"
#include "timevar.h"
#include "rtl.h"
#include "tm_p.h"
@@ -849,84 +850,95 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
}
-struct find_occurrence_data
-{
- rtx find;
- rtx *retval;
-};
+static df_ref *active_defs;
+#ifdef ENABLE_CHECKING
+static sparseset active_defs_check;
+#endif
-/* Callback for for_each_rtx, used in find_occurrence.
- See if PX is the rtx we have to find. Return 1 to stop for_each_rtx
- if successful, or 0 to continue traversing otherwise. */
+/* Fill the ACTIVE_DEFS array with the use->def link for the registers
+ mentioned in USE_REC. Register the valid entries in ACTIVE_DEFS_CHECK
+ too, for checking purposes. */
-static int
-find_occurrence_callback (rtx *px, void *data)
+static void
+register_active_defs (df_ref *use_rec)
{
- struct find_occurrence_data *fod = (struct find_occurrence_data *) data;
- rtx x = *px;
- rtx find = fod->find;
-
- if (x == find)
+ while (*use_rec)
{
- fod->retval = px;
- return 1;
- }
+ df_ref use = *use_rec++;
+ df_ref def = get_def_for_use (use);
+ int regno = DF_REF_REGNO (use);
- return 0;
+#ifdef ENABLE_CHECKING
+ sparseset_set_bit (active_defs_check, regno);
+#endif
+ active_defs[regno] = def;
+ }
}
-/* Return a pointer to one of the occurrences of register FIND in *PX. */
-static rtx *
-find_occurrence (rtx *px, rtx find)
+/* Build the use->def links that we use to update the dataflow info
+ for new uses. Note that building the links is very cheap and if
+ it were done earlier, they could be used to rule out invalid
+ propagations (in addition to what is done in all_uses_available_at).
+ I'm not doing this yet, though. */
+
+static void
+update_df_init (rtx def_insn, rtx insn)
{
- struct find_occurrence_data data;
+#ifdef ENABLE_CHECKING
+ sparseset_clear (active_defs_check);
+#endif
+ register_active_defs (DF_INSN_USES (def_insn));
+ register_active_defs (DF_INSN_USES (insn));
+ register_active_defs (DF_INSN_EQ_USES (insn));
+}
- gcc_assert (REG_P (find)
- || (GET_CODE (find) == SUBREG
- && REG_P (SUBREG_REG (find))));
- data.find = find;
- data.retval = NULL;
- for_each_rtx (px, find_occurrence_callback, &data);
- return data.retval;
-}
+/* Update the USE_DEF_REF array for the given use, using the active definitions
+ in the ACTIVE_DEFS array to match pseudos to their def. */
-
-/* Inside INSN, the expression rooted at *LOC has been changed, moving some
- uses from USE_VEC. Find those that are present, and create new items
- in the data flow object of the pass. Mark any new uses as having the
- given TYPE. */
-static void
-update_df (rtx insn, rtx *loc, df_ref *use_rec, enum df_ref_type type,
- int new_flags)
+static inline void
+update_uses (df_ref *use_rec)
{
- bool changed = false;
-
- /* Add a use for the registers that were propagated. */
while (*use_rec)
{
- df_ref use = *use_rec;
- df_ref orig_use = use, new_use;
- rtx *new_loc = find_occurrence (loc, DF_REF_REG (orig_use));
- use_rec++;
+ df_ref use = *use_rec++;
+ int regno = DF_REF_REGNO (use);
- if (!new_loc)
- continue;
+ /* Set up the use-def chain. */
+ if (DF_REF_ID (use) >= (int) VEC_length (df_ref, use_def_ref))
+ VEC_safe_grow_cleared (df_ref, heap, use_def_ref,
+ DF_REF_ID (use) + 1);
- /* Add a new insn use. Use the original type, because it says if the
- use was within a MEM. */
- new_use = df_ref_create (DF_REF_REG (orig_use), new_loc,
- insn, BLOCK_FOR_INSN (insn),
- type, DF_REF_FLAGS (orig_use) | new_flags);
+#ifdef ENABLE_CHECKING
+ gcc_assert (sparseset_bit_p (active_defs_check, regno));
+#endif
+ VEC_replace (df_ref, use_def_ref, DF_REF_ID (use), active_defs[regno]);
+ }
+}
- /* Set up the use-def chain. */
- gcc_assert (DF_REF_ID (new_use) == (int) VEC_length (df_ref, use_def_ref));
- VEC_safe_push (df_ref, heap, use_def_ref, get_def_for_use (orig_use));
- changed = true;
+
+/* Update the USE_DEF_REF array for the uses in INSN. Only update note
+ uses if NOTES_ONLY is true. */
+
+static void
+update_df (rtx insn, rtx note)
+{
+ struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+
+ if (note)
+ {
+ df_uses_create (&XEXP (note, 0), insn, DF_REF_IN_NOTE);
+ df_notes_rescan (insn);
+ }
+ else
+ {
+ df_uses_create (&PATTERN (insn), insn, 0);
+ df_insn_rescan (insn);
+ update_uses (DF_INSN_INFO_USES (insn_info));
}
- if (changed)
- df_insn_rescan (insn);
+
+ update_uses (DF_INSN_INFO_EQ_USES (insn_info));
}
@@ -940,13 +952,14 @@ static bool
try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx def_insn, bool set_reg_equal)
{
rtx insn = DF_REF_INSN (use);
- enum df_ref_type type = DF_REF_TYPE (use);
- int flags = DF_REF_FLAGS (use);
rtx set = single_set (insn);
+ rtx note = NULL_RTX;
bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
int old_cost = 0;
bool ok;
+ update_df_init (def_insn, insn);
+
/* forward_propagate_subreg may be operating on an instruction with
multiple sets. If so, assume the cost of the new instruction is
not greater than the old one. */
@@ -991,14 +1004,6 @@ try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx def_insn, bool set_reg_
{
confirm_change_group ();
num_changes++;
-
- df_ref_remove (use);
- if (!CONSTANT_P (new_rtx))
- {
- struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
- update_df (insn, loc, DF_INSN_INFO_USES (insn_info), type, flags);
- update_df (insn, loc, DF_INSN_INFO_EQ_USES (insn_info), type, flags);
- }
}
else
{
@@ -1011,21 +1016,13 @@ try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx def_insn, bool set_reg_
if (dump_file)
fprintf (dump_file, " Setting REG_EQUAL note\n");
- set_unique_reg_note (insn, REG_EQUAL, copy_rtx (new_rtx));
-
- /* ??? Is this still necessary if we add the note through
- set_unique_reg_note? */
- if (!CONSTANT_P (new_rtx))
- {
- struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
- update_df (insn, loc, DF_INSN_INFO_USES (insn_info),
- type, DF_REF_IN_NOTE);
- update_df (insn, loc, DF_INSN_INFO_EQ_USES (insn_info),
- type, DF_REF_IN_NOTE);
- }
+ note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (new_rtx));
}
}
+ if ((ok || note) && !CONSTANT_P (new_rtx))
+ update_df (insn, note);
+
return ok;
}
@@ -1153,6 +1150,7 @@ forward_propagate_asm (df_ref use, rtx def_insn, rtx def_set, rtx reg)
if (use_vec[0] && use_vec[1])
return false;
+ update_df_init (def_insn, use_insn);
speed_p = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn));
asm_operands = NULL_RTX;
switch (GET_CODE (use_pat))
@@ -1203,6 +1201,7 @@ forward_propagate_asm (df_ref use, rtx def_insn, rtx def_set, rtx reg)
if (num_changes_pending () == 0 || !apply_change_group ())
return false;
+ update_df (use_insn, NULL);
num_changes++;
return true;
}
@@ -1382,6 +1381,11 @@ fwprop_init (void)
build_single_def_use_links ();
df_set_flags (DF_DEFER_INSN_RESCAN);
+
+ active_defs = XNEWVEC (df_ref, max_reg_num ());
+#ifdef ENABLE_CHECKING
+ active_defs_check = sparseset_alloc (max_reg_num ());
+#endif
}
static void
@@ -1390,6 +1394,11 @@ fwprop_done (void)
loop_optimizer_finalize ();
VEC_free (df_ref, heap, use_def_ref);
+ free (active_defs);
+#ifdef ENABLE_CHECKING
+ sparseset_free (active_defs_check);
+#endif
+
free_dominance_info (CDI_DOMINATORS);
cleanup_cfg (0);
delete_trivially_dead_insns (get_insns (), max_reg_num ());
@@ -1416,7 +1425,7 @@ fwprop (void)
fwprop_init ();
- /* Go through all the uses. update_df will create new ones at the
+ /* Go through all the uses. df_uses_create will create new ones at the
end, and we'll go through them as well.
Do not forward propagate addresses into loops until after unrolling.
@@ -1463,7 +1472,7 @@ fwprop_addr (void)
unsigned i;
fwprop_init ();
- /* Go through all the uses. update_df will create new ones at the
+ /* Go through all the uses. df_uses_create will create new ones at the
end, and we'll go through them as well. */
for (i = 0; i < DF_USES_TABLE_SIZE (); i++)
{
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index 7d9da225c68..0013ce1ceb2 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -25,6 +25,8 @@
#include "double-int.h"
#include "version.h" /* for version_string & pkgversion_string. */
#include "hashtab.h"
+#include "xregex.h"
+#include "obstack.h"
#include "gengtype.h"
/* Data types, macros, etc. used only in this file. */
@@ -1731,6 +1733,251 @@ get_file_gtfilename (const input_file *inpf)
return result;
}
+/* Each input_file has its associated output file outf_p. The
+ association is computed by the function
+ get_output_file_with_visibility. The associated file is cached
+ inside input_file in its inpoutf field, so is really computed only
+ once. Associated output file paths (i.e. output_name-s) are
+ computed by a rule based regexp machinery, using the files_rules
+ array of struct file_rule_st. A for_name is also computed, giving
+ the source file name for which the output_file is generated; it is
+ often the last component of the input_file path. */
+
+
+/*
+ Regexpr machinery to compute the output_name and for_name-s of each
+ input_file. We have a sequence of file rules which gives the POSIX
+ extended regular expression to match an input file path, and two
+ transformed strings for the corresponding output_name and the
+ corresponding for_name. The transformed string contain dollars: $0
+ is replaced by the entire match, $1 is replaced by the substring
+ matching the first parenthesis in the regexp, etc. And $$ is replaced
+ by a single verbatim dollar. The rule order is important. The
+ general case is last, and the particular cases should come before.
+ An action routine can, when needed, update the out_name & for_name
+ and/or return the appropriate output file. It is invoked only when a
+ rule is triggered. When a rule is triggered, the output_name and
+ for_name are computed using their transform string in while $$, $0,
+ $1, ... are suitably replaced. If there is an action, it is called.
+ In some few cases, the action can directly return the outf_p, but
+ usually it just updates the output_name and for_name so should free
+ them before replacing them. The get_output_file_with_visibility
+ function creates an outf_p only once per each output_name, so it
+ scans the output_files list for previously seen output file names.
+ */
+
+/* Signature of actions in file rules. */
+typedef outf_p (frul_actionrout_t) (input_file*, char**, char**);
+
+
+struct file_rule_st {
+ const char* frul_srcexpr; /* Source string for regexp. */
+ int frul_rflags; /* Flags passed to regcomp, usually
+ * REG_EXTENDED. */
+ regex_t* frul_re; /* Compiled regular expression
+ obtained by regcomp. */
+ const char* frul_tr_out; /* Transformation string for making
+ * the output_name, with $1 ... $9 for
+ * subpatterns and $0 for the whole
+ * matched filename. */
+ const char* frul_tr_for; /* Tranformation string for making the
+ for_name. */
+ frul_actionrout_t* frul_action; /* The action, if non null, is
+ * called once the rule matches, on
+ * the transformed out_name &
+ * for_name. It could change them
+ * and/or give the output file. */
+};
+
+/* File rule action handling *.h files. */
+static outf_p header_dot_h_frul (input_file*, char**, char**);
+
+/* File rule action handling *.c files. */
+static outf_p source_dot_c_frul (input_file*, char**, char**);
+
+#define NULL_REGEX (regex_t*)0
+
+/* The prefix in our regexp-s matching the directory. */
+#define DIR_PREFIX_REGEX "^(([^/]*/)*)"
+
+#define NULL_FRULACT (frul_actionrout_t*)0
+
+/* The array of our rules governing file name generation. Rules order
+ matters, so change with extreme care! */
+
+struct file_rule_st files_rules[] = {
+ /* the c-family/ source directory is special. */
+ { DIR_PREFIX_REGEX "c-family/([[:alnum:]_-]*)\\.c$",
+ REG_EXTENDED, NULL_REGEX,
+ "gt-c-family-$3.h", "c-family/$3.c", NULL_FRULACT},
+
+ { DIR_PREFIX_REGEX "c-family/([[:alnum:]_-]*)\\.h$",
+ REG_EXTENDED, NULL_REGEX,
+ "gt-c-family-$3.h", "c-family/$3.h", NULL_FRULACT},
+
+ /* Both c-lang.h & c-tree.h gives gt-c-decl.h for c-decl.c ! */
+ { DIR_PREFIX_REGEX "c-lang\\.h$",
+ REG_EXTENDED, NULL_REGEX, "gt-c-decl.h", "c-decl.c", NULL_FRULACT},
+
+ { DIR_PREFIX_REGEX "c-tree\\.h$",
+ REG_EXTENDED, NULL_REGEX, "gt-c-decl.h", "c-decl.c", NULL_FRULACT},
+
+ /* cp/cp-tree.h gives gt-cp-tree.h for cp/tree.c ! */
+ { DIR_PREFIX_REGEX "cp/cp-tree\\.h$",
+ REG_EXTENDED, NULL_REGEX,
+ "gt-cp-tree.h", "cp/tree.c", NULL_FRULACT },
+
+ /* cp/decl.h & cp/decl.c gives gt-cp-decl.h for cp/decl.c ! */
+ { DIR_PREFIX_REGEX "cp/decl\\.[ch]$",
+ REG_EXTENDED, NULL_REGEX,
+ "gt-cp-decl.h", "cp/decl.c", NULL_FRULACT },
+
+ /* cp/name-lookup.h gives gt-cp-name-lookup.h for cp/name-lookup.c ! */
+ { DIR_PREFIX_REGEX "cp/name-lookup\\.h$",
+ REG_EXTENDED, NULL_REGEX,
+ "gt-cp-name-lookup.h", "cp/name-lookup.c", NULL_FRULACT },
+
+ /* objc/objc-act.h fives gt-objc-objc-act.h for objc/objc-act.c ! */
+ { DIR_PREFIX_REGEX "objc/objc-act\\.h$",
+ REG_EXTENDED, NULL_REGEX,
+ "gt-objc-objc-act.h", "objc/objc-act.c", NULL_FRULACT },
+
+ /* General cases. For header *.h and source *.c files, we need
+ * special actions to handle the language. */
+
+ /* Source *.c files are using get_file_gtfilename to compute their
+ output_name and get_file_basename to compute their for_name
+ thru the source_dot_c_frul action. */
+ { DIR_PREFIX_REGEX "([[:alnum:]_-]*)\\.c$",
+ REG_EXTENDED, NULL_REGEX, "gt-$3.h", "$3.c", source_dot_c_frul},
+ /* Common header files get "gtype-desc.c" as their output_name,
+ * while language specific header files are handled specially. So
+ * we need the header_dot_h_frul action. */
+ { DIR_PREFIX_REGEX "([[:alnum:]_-]*)\\.h$",
+ REG_EXTENDED, NULL_REGEX, "gt-$3.h", "$3.h", header_dot_h_frul},
+
+ { DIR_PREFIX_REGEX "([[:alnum:]_-]*)\\.in$",
+ REG_EXTENDED, NULL_REGEX, "gt-$3.h", "$3.in", NULL_FRULACT},
+
+ /* Mandatory null last entry signaling end of rules. */
+ {NULL, 0, NULL_REGEX, NULL, NULL, NULL_FRULACT}
+};
+
+/* Special file rules action for handling *.h header files. It gives
+ "gtype-desc.c" for common headers and corresponding output
+ files for language-specific header files. */
+static outf_p
+header_dot_h_frul (input_file* inpf, char**poutname, char**pforname)
+{
+ const char *basename = 0;
+ int lang_index = 0;
+ const char *inpname = get_input_file_name (inpf);
+ DBGPRINTF ("inpf %p inpname %s outname %s forname %s",
+ (void*) inpf, inpname, *poutname, *pforname);
+ basename = get_file_basename (inpf);
+ lang_index = get_prefix_langdir_index (basename);
+ DBGPRINTF ("basename %s lang_index %d", basename, lang_index);
+
+ if (lang_index >= 0)
+ {
+ /* The header is language specific. Given output_name &
+ for_name remains unchanged. The base_files array gives the
+ outf_p. */
+ DBGPRINTF ("header_dot_h found language specific @ %p '%s'",
+ (void*) base_files[lang_index],
+ (base_files[lang_index])->name);
+ return base_files[lang_index];
+ }
+ else
+ {
+ /* The header is common to all front-end languages. So
+ output_name is "gtype-desc.c" file. The calling function
+ get_output_file_with_visibility will find its outf_p. */
+ free (*poutname);
+ *poutname = xstrdup ("gtype-desc.c");
+ DBGPRINTF ("special 'gtype-desc.c' for inpname %s", inpname);
+ return NULL;
+ }
+}
+
+
+/* Special file rules action for handling *.c source files using
+ * get_file_gtfilename to compute their output_name and
+ * get_file_basename to compute their for_name. The output_name is
+ * gt-<LANG>-<BASE>.h for language specific source files, and
+ * gt-<BASE>.h for common source files. */
+static outf_p
+source_dot_c_frul (input_file* inpf, char**poutname, char**pforname)
+{
+ char *newbasename = CONST_CAST (char*, get_file_basename (inpf));
+ char *newoutname = CONST_CAST (char*, get_file_gtfilename (inpf));
+ const char *inpname = get_input_file_name (inpf);
+ DBGPRINTF ("inpf %p inpname %s original outname %s forname %s",
+ (void*) inpf, inpname, *poutname, *pforname);
+ DBGPRINTF ("newoutname %s", newoutname);
+ DBGPRINTF ("newbasename %s", newbasename);
+ free (*poutname);
+ free (*pforname);
+ *poutname = newoutname;
+ *pforname = newbasename;
+ return NULL;
+}
+
+/* Utility function for get_output_file_with_visibility which returns
+ * a malloc-ed substituted string using TRS on matching of the FILNAM
+ * file name, using the PMATCH array. */
+static char*
+matching_file_name_substitute (const char *filnam, regmatch_t pmatch[10],
+ const char *trs)
+{
+ struct obstack str_obstack;
+ char *str = NULL;
+ char *rawstr = NULL;
+ const char *pt = NULL;
+ DBGPRINTF ("filnam %s", filnam);
+ obstack_init (&str_obstack);
+ for (pt = trs; *pt; pt++) {
+ char c = *pt;
+ if (c == '$')
+ {
+ if (pt[1] == '$')
+ {
+ /* A double dollar $$ is substituted by a single verbatim
+ dollar, but who really uses dollar signs in file
+ paths? */
+ obstack_1grow (&str_obstack, '$');
+ }
+ else if (ISDIGIT (pt[1]))
+ {
+ /* Handle $0 $1 ... $9 by appropriate substitution. */
+ int dolnum = pt[1] - '0';
+ int so = pmatch[dolnum].rm_so;
+ int eo = pmatch[dolnum].rm_eo;
+ DBGPRINTF ("so=%d eo=%d dolnum=%d", so, eo, dolnum);
+ if (so>=0 && eo>=so)
+ obstack_grow (&str_obstack, filnam + so, eo - so);
+ }
+ else
+ {
+ /* This can happen only when files_rules is buggy! */
+ gcc_unreachable();
+ }
+ /* Always skip the character after the dollar. */
+ pt++;
+ }
+ else
+ obstack_1grow (&str_obstack, c);
+ }
+ obstack_1grow (&str_obstack, '\0');
+ rawstr = XOBFINISH (&str_obstack, char *);
+ str = xstrdup (rawstr);
+ obstack_free (&str_obstack, rawstr);
+ DBGPRINTF ("matched replacement %s", str);
+ rawstr = NULL;
+ return str;
+}
+
+
/* An output file, suitable for definitions, that can see declarations
made in INPF and is linked into every language that uses INPF.
Since the the result is cached inside INPF, that argument cannot be
@@ -1740,10 +1987,9 @@ outf_p
get_output_file_with_visibility (input_file *inpf)
{
outf_p r;
- size_t len;
- const char *basename;
- const char *for_name;
- const char *output_name;
+ char *for_name = NULL;
+ char *output_name = NULL;
+ const char* inpfname;
/* This can happen when we need a file with visibility on a
structure that we've never seen. We have to just hope that it's
@@ -1751,76 +1997,140 @@ get_output_file_with_visibility (input_file *inpf)
if (inpf == NULL)
inpf = system_h_file;
+ /* The result is cached in INPF, so return it if already known. */
+ if (inpf->inpoutf)
+ return inpf->inpoutf;
+
/* In plugin mode, return NULL unless the input_file is one of the
plugin_files. */
if (plugin_files)
{
size_t i;
for (i = 0; i < nb_plugin_files; i++)
- if (inpf == plugin_files[i])
- return plugin_output;
+ if (inpf == plugin_files[i])
+ {
+ inpf->inpoutf = plugin_output;
+ return plugin_output;
+ }
return NULL;
}
- /* Determine the output file name. */
- basename = get_file_basename (inpf);
+ inpfname = get_input_file_name (inpf);
- len = strlen (basename);
- if ((len > 2 && memcmp (basename + len - 2, ".c", 2) == 0)
- || (len > 2 && memcmp (basename + len - 2, ".y", 2) == 0)
- || (len > 3 && memcmp (basename + len - 3, ".in", 3) == 0))
- {
- output_name = get_file_gtfilename (inpf);
- for_name = basename;
- }
- /* Some headers get used by more than one front-end; hence, it
- would be inappropriate to spew them out to a single gtype-<lang>.h
- (and gengtype doesn't know how to direct spewage into multiple
- gtype-<lang>.h headers at this time). Instead, we pair up these
- headers with source files (and their special purpose gt-*.h headers). */
- else if (strncmp (basename, "c-family", 8) == 0
- && IS_DIR_SEPARATOR (basename[8])
- && strcmp (basename + 9, "c-common.h") == 0)
- output_name = "gt-c-family-c-common.h", for_name = "c-family/c-common.c";
- else if (strcmp (basename, "c-lang.h") == 0)
- output_name = "gt-c-decl.h", for_name = "c-decl.c";
- else if (strcmp (basename, "c-tree.h") == 0)
- output_name = "gt-c-decl.h", for_name = "c-decl.c";
- else if (strncmp (basename, "cp", 2) == 0 && IS_DIR_SEPARATOR (basename[2])
- && strcmp (basename + 3, "cp-tree.h") == 0)
- output_name = "gt-cp-tree.h", for_name = "cp/tree.c";
- else if (strncmp (basename, "cp", 2) == 0 && IS_DIR_SEPARATOR (basename[2])
- && strcmp (basename + 3, "decl.h") == 0)
- output_name = "gt-cp-decl.h", for_name = "cp/decl.c";
- else if (strncmp (basename, "cp", 2) == 0 && IS_DIR_SEPARATOR (basename[2])
- && strcmp (basename + 3, "name-lookup.h") == 0)
- output_name = "gt-cp-name-lookup.h", for_name = "cp/name-lookup.c";
- else if (strncmp (basename, "objc", 4) == 0
- && IS_DIR_SEPARATOR (basename[4])
- && strcmp (basename + 5, "objc-act.h") == 0)
- output_name = "gt-objc-objc-act.h", for_name = "objc/objc-act.c";
- else
- {
- int lang_index = get_prefix_langdir_index (basename);
+ /* Try each rule in sequence in files_rules until one is triggered. */
+ {
+ int rulix = 0;
+ DBGPRINTF ("passing input file @ %p named %s thru the files_rules",
+ (void*) inpf, inpfname);
+
+ for (; files_rules[rulix].frul_srcexpr != NULL; rulix++)
+ {
+ DBGPRINTF ("rulix#%d srcexpr %s",
+ rulix, files_rules[rulix].frul_srcexpr);
+
+ if (!files_rules[rulix].frul_re)
+ {
+ /* Compile the regexpr lazily. */
+ int err = 0;
+ files_rules[rulix].frul_re = XCNEW (regex_t);
+ err = regcomp (files_rules[rulix].frul_re,
+ files_rules[rulix].frul_srcexpr,
+ files_rules[rulix].frul_rflags);
+ if (err)
+ {
+ /* The regular expression compilation fails only when
+ file_rules is buggy. */
+ gcc_unreachable ();
+ }
+ }
- if (lang_index >= 0)
- return base_files[lang_index];
+ output_name = NULL;
+ for_name = NULL;
- output_name = "gtype-desc.c";
- for_name = NULL;
+ /* Match the regexpr and trigger the rule if matched. */
+ {
+ /* We have exactly ten pmatch-s, one for each $0, $1, $2,
+ $3, ... $9. */
+ regmatch_t pmatch[10];
+ memset (pmatch, 0, sizeof (pmatch));
+ if (!regexec (files_rules[rulix].frul_re,
+ inpfname, 10, pmatch, 0))
+ {
+ DBGPRINTF ("input @ %p filename %s matched rulix#%d pattern %s",
+ (void*) inpf, inpfname, rulix,
+ files_rules[rulix].frul_srcexpr);
+ for_name =
+ matching_file_name_substitute (inpfname, pmatch,
+ files_rules[rulix].frul_tr_for);
+ DBGPRINTF ("for_name %s", for_name);
+ output_name =
+ matching_file_name_substitute (inpfname, pmatch,
+ files_rules[rulix].frul_tr_out);
+ DBGPRINTF ("output_name %s", output_name);
+ if (files_rules[rulix].frul_action)
+ {
+ /* Invoke our action routine. */
+ outf_p of = NULL;
+ DBGPRINTF ("before action rulix#%d output_name %s for_name %s",
+ rulix, output_name, for_name);
+ of =
+ (files_rules[rulix].frul_action) (inpf,
+ &output_name, &for_name);
+ DBGPRINTF ("after action rulix#%d of=%p output_name %s for_name %s",
+ rulix, (void*)of, output_name, for_name);
+ /* If the action routine returned something, give it back
+ immediately and cache it in inpf. */
+ if (of)
+ {
+ inpf->inpoutf = of;
+ return of;
+ }
+ }
+ /* The rule matched, and had no action, or that action did
+ not return any output file but could have changed the
+ output_name or for_name. We break out of the loop on the
+ files_rules. */
+ break;
+ }
+ else
+ {
+ /* The regexpr did not match. */
+ DBGPRINTF ("rulix#%d did not match %s pattern %s",
+ rulix, inpfname, files_rules[rulix].frul_srcexpr);
+ continue;
+ }
+ }
+ }
+ }
+ if (!output_name || !for_name)
+ {
+ /* This is impossible, and could only happen if the files_rules is
+ incomplete or buggy. */
+ gcc_unreachable ();
}
- /* Look through to see if we've ever seen this output filename before. */
+ /* Look through to see if we've ever seen this output filename
+ before. If found, cache the result in inpf. */
for (r = output_files; r; r = r->next)
if (strcmp (r->name, output_name) == 0)
- return r;
+ {
+ inpf->inpoutf = r;
+ DBGPRINTF ("found r @ %p for output_name %s for_name %s", (void*)r,
+ output_name, for_name);
+ return r;
+ }
- /* If not, create it. */
+ /* If not found, create it, and cache it in inpf. */
r = create_file (for_name, output_name);
gcc_assert (r && r->name);
+ DBGPRINTF ("created r @ %p for output_name %s for_name %s", (void*) r,
+ output_name, for_name);
+ inpf->inpoutf = r;
return r;
+
+
}
/* The name of an output file, suitable for definitions, that can see
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index e561a63fdb8..8d0157bd426 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -600,15 +600,15 @@ maybe_fold_reference (tree expr, bool is_lhs)
}
/* Canonicalize MEM_REFs invariant address operand. */
else if (TREE_CODE (*t) == MEM_REF
- && TREE_CODE (TREE_OPERAND (*t, 0)) == ADDR_EXPR
- && !DECL_P (TREE_OPERAND (TREE_OPERAND (*t, 0), 0))
- && !CONSTANT_CLASS_P (TREE_OPERAND (TREE_OPERAND (*t, 0), 0)))
+ && !is_gimple_mem_ref_addr (TREE_OPERAND (*t, 0)))
{
+ bool volatile_p = TREE_THIS_VOLATILE (*t);
tree tem = fold_binary (MEM_REF, TREE_TYPE (*t),
TREE_OPERAND (*t, 0),
TREE_OPERAND (*t, 1));
if (tem)
{
+ TREE_THIS_VOLATILE (tem) = volatile_p;
*t = tem;
tem = maybe_fold_reference (expr, is_lhs);
if (tem)
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c
index 057f35b9815..cda0d169946 100644
--- a/gcc/gimple-pretty-print.c
+++ b/gcc/gimple-pretty-print.c
@@ -1898,7 +1898,8 @@ dump_bb_header (pretty_printer *buffer, basic_block bb, int indent, int flags)
}
}
pp_write_text_to_stream (buffer);
- check_bb_profile (bb, buffer->buffer->stream);
+ if (cfun)
+ check_bb_profile (bb, buffer->buffer->stream);
}
diff --git a/gcc/rtl.h b/gcc/rtl.h
index ab215d6ea48..d5a674898f3 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2510,6 +2510,7 @@ extern rtx find_base_term (rtx);
extern rtx gen_hard_reg_clobber (enum machine_mode, unsigned int);
extern rtx get_reg_known_value (unsigned int);
extern bool get_reg_known_equiv_p (unsigned int);
+extern rtx get_reg_base_value (unsigned int);
#ifdef STACK_REGS
extern int stack_regs_mentioned (const_rtx insn);
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index cb3c379524e..3b5603c7efa 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -1139,6 +1139,9 @@ init_regs_for_mode (enum machine_mode mode)
/* Can't use regs which aren't saved by
the prologue. */
|| !TEST_HARD_REG_BIT (sel_hrd.regs_ever_used, cur_reg + i)
+ /* Can't use regs with non-null REG_BASE_VALUE, because adjusting
+ it affects aliasing globally and invalidates all AV sets. */
+ || get_reg_base_value (cur_reg + i)
#ifdef LEAF_REGISTERS
/* We can't use a non-leaf register if we're in a
leaf function. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0f889d83720..a2e612975cf 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,29 @@
+2010-11-22 Ian Bolton <ian.bolton@arm.com>
+
+ * testsuite/c-c++-common/pr44832.c: Use -fno-short-enums option for
+ "target short_enums".
+ * testsuite/gcc.c-torture/compile/pr39845.c: Likewise.
+
+2010-11-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr28796-2.c: SKIP on SPARC/Solaris 8.
+
+ PR rtl-optimization/46603
+ * gcc.dg/vect/slp-multitypes-2.c: XFAIL execution on SPARC 32-bit.
+
+ PR testsuite/46230
+ * gcc.dg/vect/vect-peel-3.c (main): Prevent initialization loop from
+ being vectorized. Adjust dg-final pattern.
+ * gcc.dg/vect/pr46009.c: Add vect_int_mult target selector.
+
+ * gcc.dg/vect: Do not include <stdio.h> in testcases.
+ * gcc.dg/vect/costmodel/ppc: Likewise.
+
+2010-11-22 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/45652
+ * gcc.dg/pr45652.c: New.
+
2010-11-21 Richard Henderson <rth@redhat.com>
PR rtl-optimization/46571
diff --git a/gcc/testsuite/c-c++-common/pr44832.c b/gcc/testsuite/c-c++-common/pr44832.c
index 4138e37f01d..ccb2826ee08 100644
--- a/gcc/testsuite/c-c++-common/pr44832.c
+++ b/gcc/testsuite/c-c++-common/pr44832.c
@@ -1,6 +1,7 @@
/* PR debug/44832 */
/* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */
+/* { dg-options "-O2 -fcompare-debug -fno-short-enums" {target short_enums} } */
struct rtx_def;
typedef struct rtx_def *rtx;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr39845.c b/gcc/testsuite/gcc.c-torture/compile/pr39845.c
index beade5f4322..bd731989d08 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr39845.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr39845.c
@@ -1,3 +1,5 @@
+
+/* { dg-options "-fno-short-enums" {target short_enums} } */
typedef union tree_node *tree;
enum tree_code { EXCESS_PRECISION_EXPR };
enum built_in_function { BUILT_IN_ACOS, BUILT_IN_FPCLASSIFY, BUILT_IN_ISFINITE };
diff --git a/gcc/testsuite/gcc.dg/pr28796-2.c b/gcc/testsuite/gcc.dg/pr28796-2.c
index f56a5d4a444..9b87c5ab4e3 100644
--- a/gcc/testsuite/gcc.dg/pr28796-2.c
+++ b/gcc/testsuite/gcc.dg/pr28796-2.c
@@ -2,6 +2,7 @@
/* { dg-options "-O2 -funsafe-math-optimizations -fno-finite-math-only -DUNSAFE" } */
/* { dg-add-options ieee } */
/* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
+/* { dg-skip-if "Bug in _Q_dtoq" { sparc*-sun-solaris2.8 } } */
#include "tg-tests.h"
diff --git a/gcc/testsuite/gcc.dg/pr45652.c b/gcc/testsuite/gcc.dg/pr45652.c
new file mode 100644
index 00000000000..8f55f0c8cb1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr45652.c
@@ -0,0 +1,39 @@
+/* { dg-do run { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -fselective-scheduling2" } */
+
+struct S {
+ double i[2];
+};
+
+void __attribute__ ((noinline)) checkcd (struct S x)
+{
+ if (x.i[0] != 7.0 || x.i[1] != 8.0)
+ __builtin_abort ();
+}
+
+void __attribute__ ((noinline)) testvacd (int n, ...)
+{
+ int i;
+ __builtin_va_list ap;
+ __builtin_va_start (ap, n);
+ for (i = 0; i < n; i++)
+ {
+ struct S t = __builtin_va_arg (ap, struct S);
+ checkcd (t);
+ }
+ __builtin_va_end (ap);
+}
+
+void
+testitcd (void)
+{
+ struct S x = { { 7.0, 8.0 } };
+ testvacd (2, x, x);
+}
+
+int
+main ()
+{
+ testitcd ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-1.c
index 57e5665247d..c13ee3b181d 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-1.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 32
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-10.c b/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
index 991802fb87c..014f80f8a7e 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-11.c b/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
index 158f2875def..d329e2b70a4 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-13.c b/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
index 7e1d3ff798b..4e114d5f94a 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-14.c b/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
index 6ffbe28741a..fc6b457811f 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-15.c b/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
index b927348c810..cab46d6092c 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-16.c b/gcc/testsuite/gcc.dg/vect/bb-slp-16.c
index 16cd7a18d67..4390753db4d 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-16.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-16.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 32
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-17.c b/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
index bb4bd5d8bc5..a64543f8297 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-18.c b/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
index c5da3516c46..7869e32fe3e 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-19.c b/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
index 2cb1568488a..a314626f0d6 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-2.c b/gcc/testsuite/gcc.dg/vect/bb-slp-2.c
index 4414a989777..20a61a08d2d 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-2.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-20.c b/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
index ec12051e00a..9991fe39985 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-21.c b/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
index 697914ab053..acd332079cd 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-22.c b/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
index 7463bc653d9..2fa2c1b3276 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-23.c b/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
index d125f9d7115..1c09048ee07 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-3.c b/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
index c35f035e0f2..fee62d7f98f 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-4.c b/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
index faa90f3dfde..a7632f9832b 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-5.c b/gcc/testsuite/gcc.dg/vect/bb-slp-5.c
index 0775d998c8d..c4a8a881e02 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-5.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-6.c b/gcc/testsuite/gcc.dg/vect/bb-slp-6.c
index d351691c2fc..176010ae5d9 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-6.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-7.c b/gcc/testsuite/gcc.dg/vect/bb-slp-7.c
index e3fac8d5dbe..4f82122111a 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-7.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-7.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-8.c b/gcc/testsuite/gcc.dg/vect/bb-slp-8.c
index c5d661a4639..b1203f4dbba 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-8.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-8.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c b/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
index 08c053b1559..2251275d4fb 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c b/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
index 60f4fdb7959..62a691e1baf 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-9.c b/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
index 40a9f27408c..5535dee0641 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
index d14ae520c72..4e8d71b9673 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "../../tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
index 5eb01ebba86..4d75d565b98 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "../../tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c b/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c
index ac8c138b4a8..80ce3dc8d23 100644
--- a/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c
@@ -1,7 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target vect_float } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c b/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
index 6110a231987..3fcf77e0c34 100644
--- a/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target vect_float } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
index 30cb947bed0..547a49d58bf 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
index 2e43db13601..0a2149a4525 100644
--- a/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
+++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c b/gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
index 9c75e9dc5b0..c8864fba103 100644
--- a/gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
+++ b/gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c b/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
index d0b2ed4fff7..349bf8b30fe 100644
--- a/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
+++ b/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/pr45752.c b/gcc/testsuite/gcc.dg/vect/pr45752.c
index b04caa12655..18047d5250b 100644
--- a/gcc/testsuite/gcc.dg/vect/pr45752.c
+++ b/gcc/testsuite/gcc.dg/vect/pr45752.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/pr46009.c b/gcc/testsuite/gcc.dg/vect/pr46009.c
index 457dd37907a..a6a3217ee86 100644
--- a/gcc/testsuite/gcc.dg/vect/pr46009.c
+++ b/gcc/testsuite/gcc.dg/vect/pr46009.c
@@ -70,5 +70,5 @@ main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_int_mult } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-1.c b/gcc/testsuite/gcc.dg/vect/slp-1.c
index f7e20973818..6e95b616635 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-1.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-10.c b/gcc/testsuite/gcc.dg/vect/slp-10.c
index 9185c7eeb52..16a0c257dd6 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-10.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-10.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-11.c b/gcc/testsuite/gcc.dg/vect/slp-11.c
index 7e9c89c6b17..9f44e517e93 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-11.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-11.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-12a.c b/gcc/testsuite/gcc.dg/vect/slp-12a.c
index 5cf404100ba..6bbeb879faf 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-12a.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-12a.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-12b.c b/gcc/testsuite/gcc.dg/vect/slp-12b.c
index 5c5d133f770..863652a5b8a 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-12b.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-12b.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_uintfloat_cvt } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 64
diff --git a/gcc/testsuite/gcc.dg/vect/slp-13.c b/gcc/testsuite/gcc.dg/vect/slp-13.c
index 0041526b972..655e6ade1d0 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-13.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-13.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-14.c b/gcc/testsuite/gcc.dg/vect/slp-14.c
index 98a203cf5ca..9e0746b9bb3 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-14.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-14.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-15.c b/gcc/testsuite/gcc.dg/vect/slp-15.c
index dde0b746fae..898538a3db7 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-15.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-15.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-16.c b/gcc/testsuite/gcc.dg/vect/slp-16.c
index 5ca698f7d36..e5469d46c29 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-16.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-16.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-17.c b/gcc/testsuite/gcc.dg/vect/slp-17.c
index 0939f74d4db..b76346add2a 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-17.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-17.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-18.c b/gcc/testsuite/gcc.dg/vect/slp-18.c
index 91e1e114c1b..8cdb0ddb9ee 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-18.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-18.c
@@ -2,7 +2,6 @@
/* { dg-require-effective-target vect_intfloat_cvt } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-19.c b/gcc/testsuite/gcc.dg/vect/slp-19.c
index 1133df4f4e6..349c5ec6c92 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-19.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-19.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/slp-2.c b/gcc/testsuite/gcc.dg/vect/slp-2.c
index 2731747dbcf..69e1ed5e066 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-2.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-20.c b/gcc/testsuite/gcc.dg/vect/slp-20.c
index 86d3927a42c..5fd85743b5e 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-20.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-20.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-21.c b/gcc/testsuite/gcc.dg/vect/slp-21.c
index 182ad49939e..b4f4e24e0f4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-21.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-21.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-22.c b/gcc/testsuite/gcc.dg/vect/slp-22.c
index 18df4269a6c..3f669281670 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-22.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-22.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-24.c b/gcc/testsuite/gcc.dg/vect/slp-24.c
index bd9c7515e44..b536f2edc9c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-24.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-24.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/slp-26.c b/gcc/testsuite/gcc.dg/vect/slp-26.c
index 14be68bd289..6821b2ced0c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-26.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-26.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-28.c b/gcc/testsuite/gcc.dg/vect/slp-28.c
index 780a4472b81..41c482709c9 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-28.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-28.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 32
diff --git a/gcc/testsuite/gcc.dg/vect/slp-3.c b/gcc/testsuite/gcc.dg/vect/slp-3.c
index 18614cdfb2e..8c99b01e8e4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-3.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-3.c
@@ -2,7 +2,6 @@
/* { dg-add-options quad_vectors } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-33.c b/gcc/testsuite/gcc.dg/vect/slp-33.c
index 288c748af90..4b67d894e7c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-33.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-33.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-34.c b/gcc/testsuite/gcc.dg/vect/slp-34.c
index 3ed56eae4ec..63dbab05152 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-34.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-34.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-4.c b/gcc/testsuite/gcc.dg/vect/slp-4.c
index e1353584fd2..50ad2bd53a4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-4.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/slp-5.c b/gcc/testsuite/gcc.dg/vect/slp-5.c
index 033de778d27..b99cadf13ef 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-5.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/slp-6.c b/gcc/testsuite/gcc.dg/vect/slp-6.c
index 672b1d6e28a..e8d007b02fd 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-6.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-7.c b/gcc/testsuite/gcc.dg/vect/slp-7.c
index db9fb04099d..9e7ce8c8c13 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-7.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-7.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
index a3b93b5f015..b52838197d2 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
index 28274017d6f..3dd6b84e31a 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
index 2a04ce0c6d2..602517bfcd1 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 18
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
index 5d2140fda96..e9a2c6d4bf6 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
index 02faec741df..5c0761ebaab 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
@@ -1,7 +1,7 @@
/* { dg-require-effective-target vect_int } */
+/* { dg-do run { xfail { sparc*-*-* && ilp32 } } } PR rtl-opt/46603 */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
index 926cc28a4f6..63534489336 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
index 770ccfcea50..a13f08d3bf6 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c
index 869d87dbcf2..da4527646e1 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c
index 34f4f0b845a..38f4f5d1f1f 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
index 8021c494650..112db6b7239 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
index 3d3340ae83b..bd89c130da4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c b/gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
index 7d317e2e65f..f0cf329336c 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 8
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-1.c b/gcc/testsuite/gcc.dg/vect/slp-perm-1.c
index fcaef1e3966..756cf0b112e 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-1.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-2.c b/gcc/testsuite/gcc.dg/vect/slp-perm-2.c
index e6851911413..1bc95e2e98b 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-2.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-3.c b/gcc/testsuite/gcc.dg/vect/slp-perm-3.c
index e83124f34cb..88c02fba622 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-3.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-4.c b/gcc/testsuite/gcc.dg/vect/slp-perm-4.c
index 91a423249f8..239461a0f85 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-4.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-5.c b/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
index 4e0c145ef1f..f8ee4c10e55 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-6.c b/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
index 27e60369c6c..a2843a04b23 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-7.c b/gcc/testsuite/gcc.dg/vect/slp-perm-7.c
index 664a0f084e7..6291096f001 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-7.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-7.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M00 100
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-8.c b/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
index deec308449b..d211ef943b3 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 200
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-9.c b/gcc/testsuite/gcc.dg/vect/slp-perm-9.c
index f4387299622..d1653ba1b07 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-9.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-9.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 200
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
index 95faba8e9d4..1667c5dc3ab 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
index cb59c8c07ea..92d6669876e 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
index b7b97a710e4..5df53f919bc 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
index 0974b6642d8..40958f13146 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
index 03ab2a6eef4..ccfb888fc5a 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
index 2c7d5ce616b..23f3651eb3b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target vect_float } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-2.c b/gcc/testsuite/gcc.dg/vect/vect-complex-2.c
index a034082cd4d..498e742a33f 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-2.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target vect_double } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-4.c b/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
index 0e00e789ac1..288ff07c167 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target vect_int } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-5.c b/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
index a17830fa917..83d04cd0464 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target vect_int } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-1.c b/gcc/testsuite/gcc.dg/vect/vect-cond-1.c
index 4ee67132a82..e42752f97a4 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_condition } */
#include <stdlib.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-2.c b/gcc/testsuite/gcc.dg/vect/vect-cond-2.c
index c4dc5abaabc..97d3241a93e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_condition } */
#include <stdlib.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-3.c b/gcc/testsuite/gcc.dg/vect/vect-cond-3.c
index 56cfbb2e068..32ebf0fff4f 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-3.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_condition } */
#include <stdlib.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-4.c b/gcc/testsuite/gcc.dg/vect/vect-cond-4.c
index a46dfc58c2d..3c37c68250d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_condition } */
#include <stdlib.h>
-#include <stdio.h>
#include "tree-vect.h"
#define M 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-5.c b/gcc/testsuite/gcc.dg/vect/vect-cond-5.c
index 0996a92d18d..8d28a45ce4c 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_condition } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-cond-6.c b/gcc/testsuite/gcc.dg/vect/vect-cond-6.c
index e5e93919b3a..944c9c27262 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-cond-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-cond-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_condition } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
index e3358428a48..7dd6b494d21 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int_mult } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c
index be469be02de..50d0141748b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int_mult } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
index 87b5a04099e..f5376b8bb41 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
index 90e0da70a20..7ab6b69ad2a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int_mult } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
index f624d86502f..48457628f97 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int_mult } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
index f52b32bfad9..6b14e3bf590 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int_mult } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 4
diff --git a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
index 9e7ced7f927..34a6f600ef1 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define K 32
diff --git a/gcc/testsuite/gcc.dg/vect/vect-iv-11.c b/gcc/testsuite/gcc.dg/vect/vect-iv-11.c
index bcf2e36fc5a..ef1c5774409 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-iv-11.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-iv-11.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target vect_int } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-iv-6.c b/gcc/testsuite/gcc.dg/vect/vect-iv-6.c
index f9fa57813ff..96d3fbf525b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-iv-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-iv-6.c
@@ -1,5 +1,4 @@
/* { dg-require-effective-target vect_int_mult } */
-#include <stdio.h>
#include <stdarg.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
new file mode 100644
index 00000000000..145bb5d7e9f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
@@ -0,0 +1,50 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 64
+
+#define DOT1 43680
+#define DOT2 -20832
+
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned char CX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+
+__attribute__ ((noinline)) void
+foo1(int len) {
+ int i;
+ int result1 = 0;
+
+ for (i=0; i<len; i++) {
+ result1 += (X[i] * Y[i]);
+ CX[i] = 5;
+ }
+
+ if (result1 != DOT1)
+ abort ();
+}
+
+
+int main (void)
+{
+ int i, dot1, dot2;
+
+ check_vect ();
+
+ for (i=0; i<N; i++) {
+ X[i] = i;
+ Y[i] = 64-i;
+ CX[i] = i;
+ __asm__ volatile ("");
+ }
+
+ foo1 (N);
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_sdot_hi || vect_unpack } } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
index 4221d2db4a4..ae6ee1a06d5 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
@@ -2,7 +2,6 @@
#include <stdarg.h>
#include "tree-vect.h"
-#include <stdio.h>
#define N 64
diff --git a/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c b/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
index 3237d22a9fa..22b1d98de4b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_float } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c b/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c
index 112f1464679..0c8f91307db 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_float } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
index 01094d343e8..f5027d626cc 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_float } */
/* { dg-add-options quad_vectors } */
-#include <stdio.h>
#include <stdarg.h>
#include <signal.h>
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/vect-peel-3.c b/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
index 06d49077f2d..bc8adb46008 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 128
@@ -34,22 +33,23 @@ int main1 ()
}
int main (void)
-{
+{
int i;
check_vect ();
for (i = 0; i < N+10; i++)
{
+ asm volatile ("" : "+r" (i));
ib[i] = i;
ic[i] = i+2;
ia[i] = i/2;
- }
+ }
return main1 ();
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
index 641fe1ab434..83211eba49f 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
@@ -5,7 +5,6 @@
correct value is generated. */
#ifdef TRACE
-#include <stdio.h>
#endif
#include <stdarg.h>
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
index 243961b43f5..426069ffe46 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
index 1eaad435416..c30c98d7e0d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
index 259e91f491a..f5285361a3b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 16
diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
index 6609f59df6f..ff5171d92e6 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
@@ -1,7 +1,6 @@
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
-#include <stdio.h>
#include "tree-vect.h"
#define N 32
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 2d9c1233ea9..6e19d130169 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -1362,8 +1362,6 @@ get_base_constructor (tree base, HOST_WIDE_INT *bit_offset)
&& (TREE_STATIC (base) || DECL_EXTERNAL (base)))
return error_mark_node;
return DECL_INITIAL (base);
-
- break;
case ARRAY_REF:
case COMPONENT_REF:
@@ -1372,12 +1370,10 @@ get_base_constructor (tree base, HOST_WIDE_INT *bit_offset)
return NULL_TREE;
*bit_offset += bit_offset2;
return get_base_constructor (base, bit_offset);
- break;
case STRING_CST:
case CONSTRUCTOR:
return base;
- break;
default:
return NULL_TREE;