OSDN Git Service

* c-decl.c (finish_function): If USE_MAPPED_LOCATION set the location
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Apr 2005 17:45:32 +0000 (17:45 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Apr 2005 17:45:32 +0000 (17:45 +0000)
of the artification 'return 0' in main() to BUILTINS_LOCATION.
* tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION
before warning.

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

gcc/ChangeLog
gcc/c-decl.c
gcc/tree-cfg.c

index 7b44a81..47ff292 100644 (file)
@@ -1,3 +1,10 @@
+2005-04-05  Per Bothner  <per@bothner.com>
+
+       * c-decl.c (finish_function): If USE_MAPPED_LOCATION set the location
+       of the artification 'return 0' in main() to BUILTINS_LOCATION.
+       * tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION
+       before warning. 
+
 2004-04-05  Devang Patel  <dpatel@apple.com>
 
        * config/rs600/altivec.md (altivec_vsr<VI_char>): Rename to ..
index 9d82b9a..100f5a7 100644 (file)
@@ -6272,12 +6272,18 @@ finish_function (void)
          if (flag_isoc99)
            {
              tree stmt = c_finish_return (integer_zero_node);
+#ifdef USE_MAPPED_LOCATION
+             /* Hack.  We don't want the middle-end to warn that this return
+                is unreachable, so we mark its location as special.  Using
+                UNKNOWN_LOCATION has the problem that it gets clobbered in
+                annotate_one_with_locus.  A cleaner solution might be to
+                ensure ! should_carry_locus_p (stmt), but that needs a flag.
+             */
+             SET_EXPR_LOCATION (stmt, BUILTINS_LOCATION);
+#else
              /* Hack.  We don't want the middle-end to warn that this
                 return is unreachable, so put the statement on the
                 special line 0.  */
-#ifdef USE_MAPPED_LOCATION
-             SET_EXPR_LOCATION (stmt, UNKNOWN_LOCATION);
-#else
              annotate_with_file_line (stmt, input_filename, 0);
 #endif
            }
index d913759..00325fc 100644 (file)
@@ -2129,7 +2129,7 @@ remove_bb (basic_block bb)
      loop above, so the last statement we process is the first statement
      in the block.  */
 #ifdef USE_MAPPED_LOCATION
-  if (warn_notreached && loc != UNKNOWN_LOCATION)
+  if (warn_notreached && loc > BUILTINS_LOCATION)
     warning ("%Hwill never be executed", &loc);
 #else
   if (warn_notreached && loc)