OSDN Git Service

* tree.h (TREE_ADDRESSABLE): Remove bogus usage for FIELD_DECL.
[pf3gnuchains/gcc-fork.git] / gcc / final.c
index 5d037f5..e9c8748 100644 (file)
@@ -1,6 +1,6 @@
 /* Convert RTL to assembler code and output it, for GNU compiler.
    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -207,6 +207,9 @@ static int dialect_number;
 /* Nonnull if the insn currently being emitted was a COND_EXEC pattern.  */
 rtx current_insn_predicate;
 
+/* True if printing into -fdump-final-insns= dump.  */   
+bool final_insns_dump_p;
+
 #ifdef HAVE_ATTR_length
 static int asm_insn_count (rtx);
 #endif
@@ -3526,10 +3529,7 @@ output_addr_const (FILE *file, rtx x)
 
     case SYMBOL_REF:
       if (SYMBOL_REF_DECL (x))
-       {
-         mark_decl_referenced (SYMBOL_REF_DECL (x));
-         assemble_external (SYMBOL_REF_DECL (x));
-       }
+       assemble_external (SYMBOL_REF_DECL (x));
 #ifdef ASM_OUTPUT_SYMBOL_REF
       ASM_OUTPUT_SYMBOL_REF (file, x);
 #else
@@ -4371,17 +4371,23 @@ rest_of_clean_state (void)
       else
        {
          const char *aname;
+         struct cgraph_node *node = cgraph_node (current_function_decl);
 
          aname = (IDENTIFIER_POINTER
                   (DECL_ASSEMBLER_NAME (current_function_decl)));
          fprintf (final_output, "\n;; Function (%s) %s\n\n", aname,
-            cfun->function_frequency == FUNCTION_FREQUENCY_HOT
+            node->frequency == NODE_FREQUENCY_HOT
             ? " (hot)"
-            : cfun->function_frequency == FUNCTION_FREQUENCY_UNLIKELY_EXECUTED
+            : node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED
             ? " (unlikely executed)"
+            : node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
+            ? " (executed once)"
             : "");
 
          flag_dump_noaddr = flag_dump_unnumbered = 1;
+         if (flag_compare_debug_opt || flag_compare_debug)
+           dump_flags |= TDF_NOUID;
+         final_insns_dump_p = true;
 
          for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
            if (LABEL_P (insn))
@@ -4415,6 +4421,7 @@ rest_of_clean_state (void)
     {
       flag_dump_noaddr = save_noaddr;
       flag_dump_unnumbered = save_unnumbered;
+      final_insns_dump_p = false;
 
       if (fclose (final_output))
        {