diff options
-rw-r--r-- | gcc/cp/cp-tree.h | 3 | ||||
-rw-r--r-- | gcc/cp/error.c | 1 | ||||
-rw-r--r-- | gcc/cp/lex.c | 5 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 69 | ||||
-rw-r--r-- | gcc/lto/lto.c | 1 | ||||
-rw-r--r-- | gcc/params.def | 9 | ||||
-rw-r--r-- | gcc/reload1.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/builtin3.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/error1.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/koenig5.C | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/overload/koenig1.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/decl-specifier-1.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/static10.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.mike/ns5.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.mike/ns7.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.ns/koenig5.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.ns/koenig9.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/lineno5.C | 1 |
18 files changed, 13 insertions, 99 deletions
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index a323501..67f4f93 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -5639,9 +5639,6 @@ extern tree cxx_omp_clause_dtor (tree, tree); extern void cxx_omp_finish_clause (tree); extern bool cxx_omp_privatize_by_reference (const_tree); -/* in name-lookup.c */ -extern void suggest_alternatives_for (tree); - /* -- end of C++ */ #endif /* ! GCC_CP_TREE_H */ diff --git a/gcc/cp/error.c b/gcc/cp/error.c index de45efe..1560fc6 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1700,7 +1700,6 @@ dump_expr (tree t, int flags) case NAMESPACE_DECL: case LABEL_DECL: case OVERLOAD: - case TYPE_DECL: case IDENTIFIER_NODE: dump_decl (t, (flags & ~TFF_DECL_SPECIFIERS) | TFF_NO_FUNCTION_ARGUMENTS); break; diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 9c6be41..c583d7d 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -450,10 +450,7 @@ unqualified_name_lookup_error (tree name) else { if (!objc_diagnose_private_ivar (name)) - { - error ("%qD was not declared in this scope", name); - suggest_alternatives_for (name); - } + error ("%qD was not declared in this scope", name); /* Prevent repeated error messages by creating a VAR_DECL with this NAME in the innermost block scope. */ if (current_function_decl) diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 0ee80e4..dc73544 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -30,10 +30,8 @@ along with GCC; see the file COPYING3. If not see #include "timevar.h" #include "toplev.h" #include "diagnostic-core.h" -#include "intl.h" #include "debug.h" #include "c-family/c-pragma.h" -#include "params.h" /* The bindings for a particular name in a particular scope. */ @@ -3919,73 +3917,6 @@ remove_hidden_names (tree fns) return fns; } -/* Suggest alternatives for NAME, an IDENTIFIER_NODE for which name - lookup failed. Search through all available namespaces and print out - possible candidates. */ - -void -suggest_alternatives_for (tree name) -{ - VEC(tree,heap) *candidates = NULL; - VEC(tree,heap) *namespaces_to_search = NULL; - int max_to_search = PARAM_VALUE (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP); - int n_searched = 0; - char *spaces; - const char *str; - tree t; - unsigned ix; - - VEC_safe_push (tree, heap, namespaces_to_search, global_namespace); - - while (!VEC_empty (tree, namespaces_to_search) - && n_searched < max_to_search) - { - tree scope = VEC_pop (tree, namespaces_to_search); - struct scope_binding binding = EMPTY_SCOPE_BINDING; - struct cp_binding_level *level = NAMESPACE_LEVEL (scope); - - /* Look in this namespace. */ - qualified_lookup_using_namespace (name, scope, &binding, 0); - - n_searched++; - - if (binding.value) - VEC_safe_push (tree, heap, candidates, binding.value); - - /* Add child namespaces. */ - for (t = level->namespaces; t; t = DECL_CHAIN (t)) - VEC_safe_push (tree, heap, namespaces_to_search, t); - } - - /* If we stopped before we could examine all namespaces, inform the - user. Do this even if we don't have any candidates, since there - might be more candidates further down that we weren't able to - find. */ - if (n_searched >= max_to_search) - inform (input_location, - "maximum limit of %d namespaces searched for %qE", - max_to_search, name); - - /* Nothing useful to report. */ - if (VEC_empty (tree, candidates)) - return; - - str = (VEC_length(tree, candidates) > 1 - ? _("suggested alternatives:") - : _("suggested alternative:")); - spaces = NULL; - - FOR_EACH_VEC_ELT (tree, candidates, ix, t) - { - inform (input_location, "%s %qE", (spaces ? spaces : str), t); - spaces = spaces ? spaces : get_spaces (str); - } - - VEC_free (tree, heap, candidates); - VEC_free (tree, heap, namespaces_to_search); - free (spaces); -} - /* Unscoped lookup of a global: iterate over current namespaces, considering using-directives. */ diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index fcb66ce..3db5ac1 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1932,6 +1932,7 @@ lto_fixup_tree (tree *tp, int *walk_subtrees, void *data) { /* walk_tree only handles TREE_OPERANDs. Do the rest here. */ lto_fixup_common (t, data); + LTO_FIXUP_SUBTREE (t->exp.block); *walk_subtrees = 1; } else diff --git a/gcc/params.def b/gcc/params.def index 2ea0013..6b6e0550 100644 --- a/gcc/params.def +++ b/gcc/params.def @@ -855,15 +855,6 @@ DEFPARAM (MIN_PARTITION_SIZE, "lto-min-partition", "Size of minimal paritition for WHOPR (in estimated instructions)", 1000, 0, 0) - -/* Diagnostic parameters. */ - -DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP, - "cxx-max-namespaces-for-diagnostic-help", - "Maximum number of namespaces to search for alternatives when " - "name lookup fails", - 1000, 0, 0) - /* Local variables: mode:c diff --git a/gcc/reload1.c b/gcc/reload1.c index 2f02ae3..da354a7 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -6600,6 +6600,17 @@ choose_reload_regs (struct insn_chain *chain) && (rld[r].nregs == max_group_size || ! reg_classes_intersect_p (rld[r].rclass, group_class))) search_equiv = rld[r].in; + /* If this is an output reload from a simple move insn, look + if an equivalence for the input is available. */ + else if (inheritance && rld[r].in == 0 && rld[r].out != 0) + { + rtx set = single_set (insn); + + if (set + && rtx_equal_p (rld[r].out, SET_DEST (set)) + && CONSTANT_P (SET_SRC (set))) + search_equiv = SET_SRC (set); + } if (search_equiv) { diff --git a/gcc/testsuite/g++.dg/ext/builtin3.C b/gcc/testsuite/g++.dg/ext/builtin3.C index a9ebce0..3d06dd7 100644 --- a/gcc/testsuite/g++.dg/ext/builtin3.C +++ b/gcc/testsuite/g++.dg/ext/builtin3.C @@ -10,5 +10,4 @@ extern "C" int printf(char*, ...); void foo() { printf("abc"); // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 12 } } diff --git a/gcc/testsuite/g++.dg/lookup/error1.C b/gcc/testsuite/g++.dg/lookup/error1.C index 3b34ee3..2264b23 100644 --- a/gcc/testsuite/g++.dg/lookup/error1.C +++ b/gcc/testsuite/g++.dg/lookup/error1.C @@ -4,7 +4,6 @@ namespace N { int i; } void foo() { i; } // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 6 } using namespace N; void bar() { i; } diff --git a/gcc/testsuite/g++.dg/lookup/koenig5.C b/gcc/testsuite/g++.dg/lookup/koenig5.C index bc1dc8c..6ecc25d 100644 --- a/gcc/testsuite/g++.dg/lookup/koenig5.C +++ b/gcc/testsuite/g++.dg/lookup/koenig5.C @@ -32,12 +32,10 @@ void g (N::A *a, M::B *b, O::C *c) One (a); // ok One (a, b); // ok One (b); // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 34 } Two (c); // ok Two (a, c); // ok Two (a); // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 39 } Two (a, a); // error masked by earlier error Two (b); // error masked by earlier error Two (a, b); // error masked by earlier error @@ -45,5 +43,4 @@ void g (N::A *a, M::B *b, O::C *c) Three (b); // ok Three (a, b); // ok Three (a); // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 47 } } diff --git a/gcc/testsuite/g++.dg/overload/koenig1.C b/gcc/testsuite/g++.dg/overload/koenig1.C index be0be69..1ed7bce 100644 --- a/gcc/testsuite/g++.dg/overload/koenig1.C +++ b/gcc/testsuite/g++.dg/overload/koenig1.C @@ -14,6 +14,5 @@ void g () B *bp; N::A *ap; f (bp); // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 16 } f (ap); } diff --git a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C index 48fc7fa..e81fbab 100644 --- a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C +++ b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C @@ -13,5 +13,4 @@ N::X X; // { dg-error "" "" } int main() { return sizeof(X); // { dg-error "" "" } - // { dg-message "note" "suggested alternative" { target *-*-* } 15 } } diff --git a/gcc/testsuite/g++.dg/template/static10.C b/gcc/testsuite/g++.dg/template/static10.C index 2f60f0c..ab857bd 100644 --- a/gcc/testsuite/g++.dg/template/static10.C +++ b/gcc/testsuite/g++.dg/template/static10.C @@ -20,5 +20,4 @@ namespace std { template<> void vector<int, allocator<int> >::swap(vector<int, allocator<int> >&) { } // { dg-error "" } - // { dg-message "note" "suggested alternative" { target *-*-* } 22 } } diff --git a/gcc/testsuite/g++.old-deja/g++.mike/ns5.C b/gcc/testsuite/g++.old-deja/g++.mike/ns5.C index f13da04..9d806ca 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/ns5.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/ns5.C @@ -4,4 +4,3 @@ namespace A { } int j = i; // { dg-error "" } - // { dg-message "note" "suggested alternative" { target *-*-* } 6 } diff --git a/gcc/testsuite/g++.old-deja/g++.mike/ns7.C b/gcc/testsuite/g++.old-deja/g++.mike/ns7.C index 31a71dd..57008db 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/ns7.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/ns7.C @@ -6,5 +6,4 @@ namespace A { namespace B { int j = i; // { dg-error "" } - // { dg-message "note" "suggested alternative" { target *-*-* } 8 } } diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C index 67b781d..33061ad 100644 --- a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C +++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C @@ -15,5 +15,4 @@ void g() // foo variable first, and therefore do not // perform argument-dependent lookup. bar(new X); // { dg-error "not declared" } - // { dg-message "note" "suggested alternative" { target *-*-* } 17 } } diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C index f246639..78b0e8b 100644 --- a/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C +++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C @@ -10,5 +10,4 @@ void foo(const char*,...); inline void bar() { foo("",count); // { dg-error "" } multiple overloaded count functions - // { dg-message "note" "suggested alternative" { target *-*-* } 12 } } diff --git a/gcc/testsuite/g++.old-deja/g++.other/lineno5.C b/gcc/testsuite/g++.old-deja/g++.other/lineno5.C index 20e49bc..d14bd90 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/lineno5.C +++ b/gcc/testsuite/g++.old-deja/g++.other/lineno5.C @@ -16,5 +16,4 @@ namespace tmp { class A { public: int kaka(tmp::B = b); // { dg-error "" } no b in scope - // { dg-message "note" "suggested alternative" { target *-*-* } 18 } }; |