+2004-10-27  Zack Weinberg  <zack@codesourcery.com>
+
+       * c-lex.c (cb_def_pragma): Clean up code for making location
+       palatable to diagnostic.c.
+
 2004-10-27  Steven Bosscher  <stevenb@suse.de>
 
        PR tree-optimization/17757
            patch originally created by Kelley Cook  <kcook@gcc.gnu.org>
 
        PR middle-end/14684
-       * opts.c (OPT_fprofile_generate): Default to -funroll-loops 
+       * opts.c (OPT_fprofile_generate): Default to -funroll-loops
        to match -fprofile-use.
 
 2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>
 
      -Wunknown-pragmas has been given.  */
   if (warn_unknown_pragmas > in_system_header)
     {
+      const unsigned char *space, *name;
+      const cpp_token *s;
 #ifndef USE_MAPPED_LOCATION
+      location_t fe_loc;
       const struct line_map *map = linemap_lookup (&line_table, loc);
+      fe_loc.file = map->to_file;
+      fe_loc.line = SOURCE_LINE (map, loc);
+#else
+      location_t fe_loc = loc;
 #endif
-      const unsigned char *space, *name;
-      const cpp_token *s;
 
       space = name = (const unsigned char *) "";
       s = cpp_get_token (pfile);
            name = cpp_token_as_text (pfile, s);
        }
 
-#ifdef USE_MAPPED_LOCATION
-      input_location = loc;
-#else
-      input_line = SOURCE_LINE (map, loc);
-#endif
-      warning ("ignoring #pragma %s %s", space, name);
+      warning ("%Hignoring #pragma %s %s", &fe_loc, space, name);
     }
 }