Hi,
thus the below is what I actually tested on x86_64-linux. I think we
discuss already most of it.
Thanks!
Paolo.
////////////////////
2013-09-09 Jan Hubicka <j...@suse.cz>
Paolo Carlini <paolo.carl...@oracle.com>
* cgraphunit.c (analyze_functions): Save input_location, set it
to UNKNOWN_LOCATION and restore it at the end.
/cp
2013-09-09 Jan Hubicka <j...@suse.cz>
Paolo Carlini <paolo.carl...@oracle.com>
* error.c (print_instantiation_partial_context_line): If
loc == UNKNOWN_LOCATION return immediately.
/testsuite
2013-09-09 Jan Hubicka <j...@suse.cz>
Paolo Carlini <paolo.carl...@oracle.com>
* g++.dg/template/cond2.C: Tweak, do not expect a "required from".
Index: cgraphunit.c
===================================================================
--- cgraphunit.c (revision 202405)
+++ cgraphunit.c (working copy)
@@ -916,9 +916,11 @@ analyze_functions (void)
int i;
struct ipa_ref *ref;
bool changed = true;
+ location_t saved_loc = input_location;
bitmap_obstack_initialize (NULL);
cgraph_state = CGRAPH_STATE_CONSTRUCTION;
+ input_location = UNKNOWN_LOCATION;
/* Ugly, but the fixup can not happen at a time same body alias is created;
C++ FE is confused about the COMDAT groups being right. */
@@ -1099,6 +1101,8 @@ analyze_functions (void)
used by it. */
if (!seen_error ())
symtab_initialize_asm_name_hash ();
+
+ input_location = saved_loc;
}
/* Translate the ugly representation of aliases as alias pairs into nice
Index: cp/error.c
===================================================================
--- cp/error.c (revision 202405)
+++ cp/error.c (working copy)
@@ -3200,9 +3200,11 @@ print_instantiation_partial_context_line (diagnost
const struct tinst_level *t,
location_t loc, bool recursive_p)
{
- expanded_location xloc;
- xloc = expand_location (loc);
+ if (loc == UNKNOWN_LOCATION)
+ return;
+ expanded_location xloc = expand_location (loc);
+
if (context->show_column)
pp_verbatim (context->printer, _("%r%s:%d:%d:%R "),
"locus", xloc.file, xloc.line, xloc.column);
Index: testsuite/g++.dg/template/cond2.C
===================================================================
--- testsuite/g++.dg/template/cond2.C (revision 202405)
+++ testsuite/g++.dg/template/cond2.C (working copy)
@@ -6,5 +6,5 @@ template<int X> class c;
template<int X, int Y> int test(c<X ? : Y>&); // { dg-error "omitted" }
void test(c<2>*c2) {
- test<0, 2>(*c2); // { dg-message "required" }
+ test<0, 2>(*c2);
}