aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/cp-tree.h3
-rw-r--r--gcc/cp/error.c1
-rw-r--r--gcc/cp/lex.c5
-rw-r--r--gcc/cp/name-lookup.c69
-rw-r--r--gcc/lto/lto.c1
-rw-r--r--gcc/params.def9
-rw-r--r--gcc/reload1.c11
-rw-r--r--gcc/testsuite/g++.dg/ext/builtin3.C1
-rw-r--r--gcc/testsuite/g++.dg/lookup/error1.C1
-rw-r--r--gcc/testsuite/g++.dg/lookup/koenig5.C3
-rw-r--r--gcc/testsuite/g++.dg/overload/koenig1.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/decl-specifier-1.C1
-rw-r--r--gcc/testsuite/g++.dg/template/static10.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/ns5.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/ns7.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig5.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig9.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/lineno5.C1
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 }
};