OSDN Git Service

2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Aug 2008 13:35:00 +0000 (13:35 +0000)
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Aug 2008 13:35:00 +0000 (13:35 +0000)
* diagnostic.c (inform): Add an explicit location_t parameter.
* toplev.h (inform): Update declaration.
* builtins.c: Update all calls to inform.
* c-common.c: Likewise.
* c-decl.c: Likewise.
* c-opts.c: Likewise.
* c-pch.c: Likewise.
* c-pragma.c: Likewise.
* c-typeck.c: Likewise.
* coverage.c: Likewise.
* opts.c: Likewise.
* toplev.c: Likewise.
* tree-cfg.c: Likewise.
* tree-ssa.c: Likewise.
cp/
* parser.c: Update all calls to inform.
* typeck.c: Likewise.
* init.c: Likewise.
* class.c: Likewise.
* call.c: Likewise.
* method.c: Likewise.
* friend.c: Likewise.
* typeck2.c: Likewise.
* pt.c: Likewise.
* name-lookup.c: Likewise.
* lex.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139293 138bc75d-0d04-0410-961f-82ee72b054a4

27 files changed:
gcc/ChangeLog
gcc/builtins.c
gcc/c-common.c
gcc/c-decl.c
gcc/c-opts.c
gcc/c-pch.c
gcc/c-pragma.c
gcc/c-typeck.c
gcc/coverage.c
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/class.c
gcc/cp/friend.c
gcc/cp/init.c
gcc/cp/lex.c
gcc/cp/method.c
gcc/cp/name-lookup.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/typeck.c
gcc/cp/typeck2.c
gcc/diagnostic.c
gcc/opts.c
gcc/toplev.c
gcc/toplev.h
gcc/tree-cfg.c
gcc/tree-ssa.c

index afe8e59..8a62653 100644 (file)
@@ -1,3 +1,20 @@
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * diagnostic.c (inform): Add an explicit location_t parameter.
+       * toplev.h (inform): Update declaration.
+       * builtins.c: Update all calls to inform.
+       * c-common.c: Likewise.
+       * c-decl.c: Likewise.
+       * c-opts.c: Likewise.
+       * c-pch.c: Likewise.
+       * c-pragma.c: Likewise.
+       * c-typeck.c: Likewise.
+       * coverage.c: Likewise.
+       * opts.c: Likewise.
+       * toplev.c: Likewise.
+       * tree-cfg.c: Likewise.
+       * tree-ssa.c: Likewise.
+
 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/37169
index ed18bf9..a9445a6 100644 (file)
@@ -4933,14 +4933,14 @@ gimplify_va_arg_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
       if (!gave_help && warned)
        {
          gave_help = true;
-         inform ("(so you should pass %qT not %qT to %<va_arg%>)",
+         inform (input_location, "(so you should pass %qT not %qT to %<va_arg%>)",
                   promoted_type, type);
        }
 
       /* We can, however, treat "undefined" any way we please.
         Call abort to encourage the user to fix the program.  */
       if (warned)
-       inform ("if this code is reached, the program will abort");
+       inform (input_location, "if this code is reached, the program will abort");
       t = build_call_expr (implicit_built_in_decls[BUILT_IN_TRAP], 0);
       gimplify_and_add (t, pre_p);
 
index 8bac9cb..639601d 100644 (file)
@@ -1436,7 +1436,7 @@ vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note)
   if (emit_lax_note && !emitted_lax_note)
     {
       emitted_lax_note = true;
-      inform ("use -flax-vector-conversions to permit "
+      inform (input_location, "use -flax-vector-conversions to permit "
               "conversions between vectors with differing "
               "element types or numbers of subparts");
     }
index 7be2ca4..2cf0f44 100644 (file)
@@ -1029,14 +1029,14 @@ diagnose_arglist_conflict (tree newdecl, tree olddecl,
       if (TREE_CHAIN (t) == 0
          && TYPE_MAIN_VARIANT (type) != void_type_node)
        {
-         inform ("a parameter list with an ellipsis can%'t match "
+         inform (input_location, "a parameter list with an ellipsis can%'t match "
                  "an empty parameter name list declaration");
          break;
        }
 
       if (c_type_promotes_to (type) != type)
        {
-         inform ("an argument type that has a default promotion can%'t match "
+         inform (input_location, "an argument type that has a default promotion can%'t match "
                  "an empty parameter name list declaration");
          break;
        }
@@ -1120,11 +1120,11 @@ locate_old_decl (tree decl)
   if (TREE_CODE (decl) == FUNCTION_DECL && DECL_BUILT_IN (decl))
     ;
   else if (DECL_INITIAL (decl))
-    inform ("previous definition of %q+D was here", decl);
+    inform (input_location, "previous definition of %q+D was here", decl);
   else if (C_DECL_IMPLICIT (decl))
-    inform ("previous implicit declaration of %q+D was here", decl);
+    inform (input_location, "previous implicit declaration of %q+D was here", decl);
   else
-    inform ("previous declaration of %q+D was here", decl);
+    inform (input_location, "previous declaration of %q+D was here", decl);
 }
 
 /* Subroutine of duplicate_decls.  Compare NEWDECL to OLDDECL.
index dccb45e..164ca4a 100644 (file)
@@ -321,7 +321,7 @@ c_common_handle_option (size_t scode, const char *arg, int value)
            error ("-I- specified twice");
          quote_chain_split = true;
          split_quote_chain ();
-         inform ("obsolete option -I- used, please use -iquote instead");
+         inform (input_location, "obsolete option -I- used, please use -iquote instead");
        }
       break;
 
index 520b866..b4f7050 100644 (file)
@@ -463,7 +463,7 @@ c_common_pch_pragma (cpp_reader *pfile, const char *name)
   if (!cpp_get_options (pfile)->preprocessed)
     {
       error ("pch_preprocess pragma should only be used with -fpreprocessed");
-      inform ("use #include instead");
+      inform (input_location, "use #include instead");
       return;
     }
 
@@ -474,7 +474,7 @@ c_common_pch_pragma (cpp_reader *pfile, const char *name)
   if (c_common_valid_pch (pfile, name, fd) != 1)
     {
       if (!cpp_get_options (pfile)->warn_invalid_pch)
-       inform ("use -Winvalid-pch for more information");
+       inform (input_location, "use -Winvalid-pch for more information");
       fatal_error ("%s: PCH file was invalid", name);
     }
 
index b2bbfae..63c0acb 100644 (file)
@@ -1203,7 +1203,7 @@ handle_pragma_message (cpp_reader *ARG_UNUSED(dummy))
     warning (OPT_Wpragmas, "junk at end of %<#pragma message%>");
 
   if (TREE_STRING_LENGTH (message) > 1)
-    inform ("#pragma message: %s", TREE_STRING_POINTER (message));
+    inform (input_location, "#pragma message: %s", TREE_STRING_POINTER (message));
 }
 
 /* A vector of registered pragma callbacks.  */
index 7646272..a22d544 100644 (file)
@@ -2411,7 +2411,7 @@ build_function_call (tree function, tree params)
       if (warning (0, "function called through a non-compatible type"))
        /* We can, however, treat "undefined" any way we please.
           Call abort to encourage the user to fix the program.  */
-       inform ("if this code is reached, the program will abort");
+       inform (input_location, "if this code is reached, the program will abort");
 
       if (VOID_TYPE_P (return_type))
        return trap;
index 6432bb1..2d4f791 100644 (file)
@@ -334,7 +334,7 @@ get_coverage_counts (unsigned counter, unsigned expected,
       static int warned = 0;
 
       if (!warned++)
-       inform ((flag_guess_branch_prob
+       inform (input_location, (flag_guess_branch_prob
                 ? "file %s not found, execution counts estimated"
                 : "file %s not found, execution counts assumed to be zero"),
                da_file_name);
@@ -369,9 +369,9 @@ get_coverage_counts (unsigned counter, unsigned expected,
       if (!inhibit_warnings)
        {
          if (entry->checksum != checksum)
-           inform ("checksum is %x instead of %x", entry->checksum, checksum);
+           inform (input_location, "checksum is %x instead of %x", entry->checksum, checksum);
          else
-           inform ("number of counters is %d instead of %d",
+           inform (input_location, "number of counters is %d instead of %d",
                    entry->summary.num, expected);
        }
 
@@ -379,12 +379,12 @@ get_coverage_counts (unsigned counter, unsigned expected,
          && !inhibit_warnings
          && !warned++)
        {
-         inform ("coverage mismatch ignored due to -Wcoverage-mismatch");
-         inform (flag_guess_branch_prob
+         inform (input_location, "coverage mismatch ignored due to -Wcoverage-mismatch");
+         inform (input_location, flag_guess_branch_prob
                  ? "execution counts estimated"
                  : "execution counts assumed to be zero");
          if (!flag_guess_branch_prob)
-           inform ("this can result in poorly optimized code");
+           inform (input_location, "this can result in poorly optimized code");
        }
 
       return NULL;
index 4ffb96e..3b6e97e 100644 (file)
@@ -1,3 +1,17 @@
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * parser.c: Update all calls to inform.
+       * typeck.c: Likewise.
+       * init.c: Likewise.
+       * class.c: Likewise.
+       * call.c: Likewise.
+       * method.c: Likewise.
+       * friend.c: Likewise.
+       * typeck2.c: Likewise.
+       * pt.c: Likewise.
+       * name-lookup.c: Likewise.
+       * lex.c: Likewise.
+
 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/37156
index ccfce64..0348eb1 100644 (file)
@@ -2545,24 +2545,24 @@ print_z_candidate (const char *msgstr, struct z_candidate *candidate)
   if (TREE_CODE (candidate->fn) == IDENTIFIER_NODE)
     {
       if (candidate->num_convs == 3)
-       inform ("%s %D(%T, %T, %T) <built-in>", msgstr, candidate->fn,
+       inform (input_location, "%s %D(%T, %T, %T) <built-in>", msgstr, candidate->fn,
                candidate->convs[0]->type,
                candidate->convs[1]->type,
                candidate->convs[2]->type);
       else if (candidate->num_convs == 2)
-       inform ("%s %D(%T, %T) <built-in>", msgstr, candidate->fn,
+       inform (input_location, "%s %D(%T, %T) <built-in>", msgstr, candidate->fn,
                candidate->convs[0]->type,
                candidate->convs[1]->type);
       else
-       inform ("%s %D(%T) <built-in>", msgstr, candidate->fn,
+       inform (input_location, "%s %D(%T) <built-in>", msgstr, candidate->fn,
                candidate->convs[0]->type);
     }
   else if (TYPE_P (candidate->fn))
-    inform ("%s %T <conversion>", msgstr, candidate->fn);
+    inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
   else if (candidate->viable == -1)
-    inform ("%s %+#D <near match>", msgstr, candidate->fn);
+    inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn);
   else
-    inform ("%s %+#D", msgstr, candidate->fn);
+    inform (input_location, "%s %+#D", msgstr, candidate->fn);
 }
 
 static void
@@ -6651,7 +6651,7 @@ joust (struct z_candidate *cand1, struct z_candidate *cand2, bool warn)
              && warning (OPT_Wconversion, "  for conversion from %qT to %qT",
                          source, w->second_conv->type)) 
            {
-             inform ("  because conversion sequence for the argument is better");
+             inform (input_location, "  because conversion sequence for the argument is better");
            }
        }
       else
index d0033c7..9e98f1c 100644 (file)
@@ -6174,7 +6174,7 @@ resolve_address_of_overloaded_function (tree target_type,
       permerror (input_location, "assuming pointer to member %qD", fn);
       if (!explained)
        {
-         inform ("(a pointer to member can only be formed with %<&%E%>)", fn);
+         inform (input_location, "(a pointer to member can only be formed with %<&%E%>)", fn);
          explained = 1;
        }
     }
index 4d9a14c..03748fe 100644 (file)
@@ -574,7 +574,7 @@ do_friend (tree ctype, tree declarator, tree decl,
                                "%q#D declares a non-template function", decl);
              if (! explained && warned)
                {
-                 inform ("(if this is not what you intended, make sure "
+                 inform (input_location, "(if this is not what you intended, make sure "
                          "the function template has already been declared "
                          "and add <> after the function name here) ");
                  explained = 1;
index 609747f..34c22fe 100644 (file)
@@ -3039,7 +3039,7 @@ build_delete (tree type, tree addr, special_function_kind auto_delete,
                           "delete operator:"))
                {
                  cxx_incomplete_type_diagnostic (addr, type, DK_WARNING);
-                 inform ("neither the destructor nor the class-specific "
+                 inform (input_location, "neither the destructor nor the class-specific "
                          "operator delete will be called, even if they are "
                          "declared when the class is defined.");
                }
index 4b7f614..d5ddce8 100644 (file)
@@ -490,7 +490,7 @@ unqualified_fn_lookup_error (tree name)
          static bool hint;
          if (!hint)
            {
-             inform ("(if you use %<-fpermissive%>, G++ will accept your "
+             inform (input_location, "(if you use %<-fpermissive%>, G++ will accept your "
                     "code, but allowing the use of an undeclared name is "
                     "deprecated)");
              hint = true;
index b215d2a..5b4c273 100644 (file)
@@ -813,8 +813,8 @@ synthesize_method (tree fndecl)
   pop_deferring_access_checks ();
 
   if (error_count != errorcount || warning_count != warningcount)
-    inform ("%Hsynthesized method %qD first required here ",
-           &input_location, fndecl);
+    inform (input_location, "synthesized method %qD first required here ",
+           fndecl);
 }
 
 /* Use EXTRACTOR to locate the relevant function called for each base &
index 180860e..e1c57b4 100644 (file)
@@ -1226,7 +1226,7 @@ check_for_out_of_scope_variable (tree decl)
          static bool hint;
          if (!hint)
            {
-             inform ("(if you use %<-fpermissive%> G++ will accept your code)");
+             inform (input_location, "(if you use %<-fpermissive%> G++ will accept your code)");
              hint = true;
            }
        }
index 21904ca..9f992b9 100644 (file)
@@ -2229,8 +2229,9 @@ cp_parser_check_for_definition_in_return_type (cp_declarator *declarator,
       && declarator->kind == cdk_function)
     {
       error ("%Hnew types may not be defined in a return type", &type_location);
-      inform ("%H(perhaps a semicolon is missing after the definition of %qT)",
-             &type_location, type);
+      inform (type_location, 
+             "(perhaps a semicolon is missing after the definition of %qT)",
+             type);
     }
 }
 
@@ -2358,8 +2359,9 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser,
                    if (TREE_CODE (field) == TYPE_DECL
                        && DECL_NAME (field) == id)
                      {
-                       inform ("%H(perhaps %<typename %T::%E%> was intended)",
-                               &location, BINFO_TYPE (b), id);
+                       inform (location, 
+                               "(perhaps %<typename %T::%E%> was intended)",
+                               BINFO_TYPE (b), id);
                        break;
                      }
                  if (field)
@@ -5576,8 +5578,8 @@ cp_parser_new_expression (cp_parser* parser)
        {
          error ("%Harray bound forbidden after parenthesized type-id",
                 &token->location);
-         inform ("%Htry removing the parentheses around the type-id",
-                &token->location);
+         inform (token->location, 
+                 "try removing the parentheses around the type-id");
          cp_parser_direct_new_declarator (parser);
        }
       nelts = NULL_TREE;
@@ -9984,13 +9986,13 @@ cp_parser_template_id (cp_parser *parser,
                     "%<<::%> cannot begin a template-argument list"))
        {
          static bool hint = false;
-         inform ("%H%<<:%> is an alternate spelling for %<[%>. Insert whitespace "
-             "between %<<%> and %<::%>",
-             &next_token->location);
+         inform (next_token->location,
+                 "%<<:%> is an alternate spelling for %<[%>."
+                 " Insert whitespace between %<<%> and %<::%>");
          if (!hint && !flag_permissive)
            {
-             inform ("%H(if you use %<-fpermissive%> G++ will accept your code)",
-                      &next_token->location);
+             inform (next_token->location, "(if you use %<-fpermissive%>"
+                     " G++ will accept your code)");
              hint = true;
            }
        }
@@ -10180,7 +10182,7 @@ cp_parser_template_name (cp_parser* parser,
          /* Explain what went wrong.  */
          error ("%Hnon-template %qD used as template",
                 &token->location, identifier);
-         inform ("use %<%T::template %D%> to indicate that it is a template",
+         inform (input_location, "use %<%T::template %D%> to indicate that it is a template",
                  parser->scope, identifier);
          /* If parsing tentatively, find the location of the "<" token.  */
          if (cp_parser_simulate_error (parser))
@@ -13168,7 +13170,7 @@ cp_parser_direct_declarator (cp_parser* parser,
                        {
                          error ("%Hinvalid use of constructor as a template",
                                 &declarator_id_start_token->location);
-                         inform ("use %<%T::%D%> instead of %<%T::%D%> to "
+                         inform (input_location, "use %<%T::%D%> instead of %<%T::%D%> to "
                                  "name the constructor in a qualified name",
                                  class_type,
                                  DECL_NAME (TYPE_TI_TEMPLATE (class_type)),
index 51a8abf..4df53e8 100644 (file)
@@ -2741,9 +2741,9 @@ check_for_bare_parameter_packs (tree t)
             name = DECL_NAME (pack);
 
          if (name)
-           inform ("        %qD", name);
+           inform (input_location, "        %qD", name);
          else
-           inform ("        <anonymous>");
+           inform (input_location, "        <anonymous>");
 
           parameter_packs = TREE_CHAIN (parameter_packs);
         }
@@ -4020,7 +4020,7 @@ push_template_decl_real (tree decl, bool is_friend)
 template arguments to %qD do not match original template %qD",
                 decl, DECL_TEMPLATE_RESULT (tmpl));
          if (!uses_template_parms (TI_ARGS (tinfo)))
-           inform ("use template<> for an explicit specialization");
+           inform (input_location, "use template<> for an explicit specialization");
          /* Avoid crash in import_export_decl.  */
          DECL_INTERFACE_KNOWN (decl) = 1;
          return error_mark_node;
@@ -4141,7 +4141,7 @@ redeclare_class_template (tree type, tree parms)
     {
       error ("redeclared with %d template parameter(s)", 
              TREE_VEC_LENGTH (parms));
-      inform ("previous declaration %q+D used %d template parameter(s)", 
+      inform (input_location, "previous declaration %q+D used %d template parameter(s)", 
              tmpl, TREE_VEC_LENGTH (tmpl_parms));
       return false;
     }
@@ -4187,7 +4187,7 @@ redeclare_class_template (tree type, tree parms)
             A template-parameter may not be given default arguments
             by two different declarations in the same scope.  */
          error ("redefinition of default argument for %q#D", parm);
-         inform ("%Joriginal definition appeared here", tmpl_parm);
+         inform (input_location, "%Joriginal definition appeared here", tmpl_parm);
          return false;
        }
 
@@ -4570,7 +4570,7 @@ convert_nontype_argument (tree type, tree expr)
        {
          error ("%qE is not a valid template argument for type %qT "
                 "because it is a pointer", expr, type);
-         inform ("try using %qE instead", TREE_OPERAND (expr, 0));
+         inform (input_location, "try using %qE instead", TREE_OPERAND (expr, 0));
          return NULL_TREE;
        }
 
@@ -4608,7 +4608,7 @@ convert_nontype_argument (tree type, tree expr)
          error ("%qE is not a valid template argument for type %qT "
                 "because it is of type %qT", expr, type,
                 TREE_TYPE (expr));
-         inform ("standard conversions are not allowed in this context");
+         inform (input_location, "standard conversions are not allowed in this context");
          return NULL_TREE;
        }
     }
@@ -9722,7 +9722,7 @@ tsubst_qualified_id (tree qualified_id, tree args,
            {
              error ("dependent-name %qE is parsed as a non-type, but "
                     "instantiation yields a type", qualified_id);
-             inform ("say %<typename %E%> if a type is meant", qualified_id);
+             inform (input_location, "say %<typename %E%> if a type is meant", qualified_id);
            }
          return error_mark_node;
        }
index fbf9884..f955efe 100644 (file)
@@ -4009,7 +4009,7 @@ build_x_unary_op (enum tree_code code, tree xarg, tsubst_flags_t complain)
               error ("invalid use of %qE to form a pointer-to-member-function",
                      xarg);
               if (TREE_CODE (xarg) != OFFSET_REF)
-                inform ("  a qualified-id is required");
+                inform (input_location, "  a qualified-id is required");
              return error_mark_node;
            }
          else
index c905386..9a39076 100644 (file)
@@ -313,18 +313,18 @@ abstract_virtuals_error (tree decl, tree type)
       unsigned ix;
       tree fn;
 
-      inform ("%J  because the following virtual functions are pure "
+      inform (input_location, "%J  because the following virtual functions are pure "
              "within %qT:", TYPE_MAIN_DECL (type), type);
 
       for (ix = 0; VEC_iterate (tree, pure, ix, fn); ix++)
-       inform ("\t%+#D", fn);
+       inform (input_location, "\t%+#D", fn);
       /* Now truncate the vector.  This leaves it non-null, so we know
         there are pure virtuals, but empty so we don't list them out
         again.  */
       VEC_truncate (tree, pure, 0);
     }
   else
-    inform ("%J  since type %qT has pure virtual functions",
+    inform (input_location, "%J  since type %qT has pure virtual functions",
            TYPE_MAIN_DECL (type), type);
 
   return 1;
index dfd3c9d..dbe94a8 100644 (file)
@@ -489,16 +489,16 @@ emit_diagnostic (diagnostic_t kind, location_t location, int opt,
   return report_diagnostic (&diagnostic);
 }
 
-/* An informative note.  Use this for additional details on an error
+/* An informative note at LOCATION.  Use this for additional details on an error
    message.  */
 void
-inform (const char *gmsgid, ...)
+inform (location_t location, const char *gmsgid, ...)
 {
   diagnostic_info diagnostic;
   va_list ap;
 
   va_start (ap, gmsgid);
-  diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_NOTE);
+  diagnostic_set_info (&diagnostic, gmsgid, &ap, location, DK_NOTE);
   report_diagnostic (&diagnostic);
   va_end (ap);
 }
index 7d58229..1de217e 100644 (file)
@@ -1088,8 +1088,8 @@ decode_options (unsigned int argc, const char **argv)
 
   if (flag_exceptions && flag_reorder_blocks_and_partition)
     {
-      inform
-           ("-freorder-blocks-and-partition does not work with exceptions");
+      inform (input_location, 
+             "-freorder-blocks-and-partition does not work with exceptions");
       flag_reorder_blocks_and_partition = 0;
       flag_reorder_blocks = 1;
     }
@@ -1100,7 +1100,7 @@ decode_options (unsigned int argc, const char **argv)
   if (flag_unwind_tables && ! targetm.unwind_tables_default
       && flag_reorder_blocks_and_partition)
     {
-      inform ("-freorder-blocks-and-partition does not support unwind info");
+      inform (input_location, "-freorder-blocks-and-partition does not support unwind info");
       flag_reorder_blocks_and_partition = 0;
       flag_reorder_blocks = 1;
     }
@@ -1113,8 +1113,8 @@ decode_options (unsigned int argc, const char **argv)
       && (!targetm.have_named_sections
          || (flag_unwind_tables && targetm.unwind_tables_default)))
     {
-      inform
-       ("-freorder-blocks-and-partition does not work on this architecture");
+      inform (input_location,
+             "-freorder-blocks-and-partition does not work on this architecture");
       flag_reorder_blocks_and_partition = 0;
       flag_reorder_blocks = 1;
     }
index 2690869..3226652 100644 (file)
@@ -1350,7 +1350,7 @@ init_asm_output (const char *name)
                                                   NULL);
            }
          else
-           inform ("-frecord-gcc-switches is not supported by the current target");
+           inform (input_location, "-frecord-gcc-switches is not supported by the current target");
        }
 
 #ifdef ASM_COMMENT_START
index 435cc97..a73cbf8 100644 (file)
@@ -69,7 +69,7 @@ extern bool pedwarn_at (location_t, int, const char *, ...)
      ATTRIBUTE_GCC_DIAG(3,4);
 extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
 extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
-extern void inform (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
+extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
 extern void verbatim (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
 
 extern void rest_of_decl_compilation (tree, int, int);
index 08920ae..39a04e9 100644 (file)
@@ -3842,7 +3842,7 @@ verify_stmt (gimple_stmt_iterator *gsi)
   if (addr)
     {
       debug_generic_expr (addr);
-      inform ("in statement");
+      inform (input_location, "in statement");
       debug_gimple_stmt (stmt);
       return true;
     }
index 74968bf..fb692f8 100644 (file)
@@ -1423,7 +1423,7 @@ warn_uninit (tree t, const char *gmsgid, void *data)
       if (xloc.file != floc.file
          || xloc.line < floc.line
          || xloc.line > LOCATION_LINE (cfun->function_end_locus))
-       inform ("%J%qD was declared here", var, var);
+       inform (input_location, "%J%qD was declared here", var, var);
     }
 }