Merge branch 'vendor/GCC44'
authorJohn Marino <draco@marino.st>
Tue, 13 Mar 2012 23:06:56 +0000 (00:06 +0100)
committerJohn Marino <draco@marino.st>
Tue, 13 Mar 2012 23:06:56 +0000 (00:06 +0100)
13 files changed:
contrib/gcc-4.4/LAST_UPDATED
contrib/gcc-4.4/gcc/DATESTAMP
contrib/gcc-4.4/gcc/c-decl.c
contrib/gcc-4.4/gcc/config/i386/avxintrin.h
contrib/gcc-4.4/gcc/config/i386/i386.c
contrib/gcc-4.4/gcc/cp/decl2.c
contrib/gcc-4.4/gcc/doc/cpp.1
contrib/gcc-4.4/gcc/doc/g++.1
contrib/gcc-4.4/gcc/doc/gcc.1
contrib/gcc-4.4/gcc/doc/gcov.1
contrib/gcc-4.4/gcc/ipa-cp.c
contrib/gcc-4.4/gcc/recog.c
contrib/gcc-4.4/gcc/regmove.c

index ccf07bf..b110146 100644 (file)
@@ -1 +1 @@
-Obtained from SVN: branches/gcc-4_4-branch revision 180457
+Obtained from SVN: tags/gcc_4_4_7_release revision 185319
index 4d3e628..f2ba359 100644 (file)
@@ -6136,7 +6136,8 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
 
   /* If the declarator is not suitable for a function definition,
      cause a syntax error.  */
-  if (decl1 == 0)
+  if (decl1 == 0
+      || TREE_CODE (decl1) != FUNCTION_DECL)
     {
       label_context_stack_se = label_context_stack_se->next;
       label_context_stack_vm = label_context_stack_vm->next;
index 8055cc6..6d4213d 100644 (file)
@@ -759,7 +759,7 @@ _mm256_insert_epi8 (__m256i __X, int __D, int const __N)
 
 #ifdef __x86_64__
 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_insert_epi64 (__m256i __X, int __D, int const __N)
+_mm256_insert_epi64 (__m256i __X, long long __D, int const __N)
 {
   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
   __Y = _mm_insert_epi64 (__Y, __D, __N % 2);
index 09fc37c..4709d39 100644 (file)
@@ -11224,6 +11224,13 @@ print_operand (FILE *file, rtx x, int code)
          return;
 
        case 'H':
+         if (!offsettable_memref_p (x))
+           {
+             output_operand_lossage ("operand is not an offsettable memory "
+                                     "reference, invalid operand "
+                                     "code 'H'");
+             return;
+           }
          /* It doesn't actually matter what mode we use here, as we're
             only going to use this for printing.  */
          x = adjust_address_nv (x, DImode, 8);
index 7bfe773..744209e 100644 (file)
@@ -1152,9 +1152,9 @@ save_template_attributes (tree *attr_p, tree *decl_p)
 
   old_attrs = *q;
 
-  /* Place the late attributes at the beginning of the attribute
+  /* Merge the late attributes at the beginning with the attribute
      list.  */
-  TREE_CHAIN (tree_last (late_attrs)) = *q;
+  late_attrs = merge_attributes (late_attrs, *q);
   *q = late_attrs;
 
   if (!DECL_P (*decl_p) && *decl_p == TYPE_MAIN_VARIANT (*decl_p))
index 115014c..4873368 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 .\" ========================================================================
 .\"
 .IX Title "CPP 1"
-.TH CPP 1 "2011-04-16" "gcc-4.4.6" "GNU"
+.TH CPP 1 "2012-03-13" "gcc-4.4.7" "GNU"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index 9a69598..375ed3d 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 .\" ========================================================================
 .\"
 .IX Title "GCC 1"
-.TH GCC 1 "2011-04-16" "gcc-4.4.6" "GNU"
+.TH GCC 1 "2012-03-13" "gcc-4.4.7" "GNU"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index 9a69598..375ed3d 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 .\" ========================================================================
 .\"
 .IX Title "GCC 1"
-.TH GCC 1 "2011-04-16" "gcc-4.4.6" "GNU"
+.TH GCC 1 "2012-03-13" "gcc-4.4.7" "GNU"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index 624636c..2c0543c 100644 (file)
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 .\" ========================================================================
 .\"
 .IX Title "GCOV 1"
-.TH GCOV 1 "2011-04-16" "gcc-4.4.6" "GNU"
+.TH GCOV 1 "2012-03-13" "gcc-4.4.7" "GNU"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index cf678f2..c38e4ef 100644 (file)
@@ -508,7 +508,7 @@ ipcp_initialize_node_lattices (struct cgraph_node *node)
 
   if (ipa_is_called_with_var_arguments (info))
     type = IPA_BOTTOM;
-  else if (!node->needed)
+  else if (!node->needed && !node->local.externally_visible)
     type = IPA_TOP;
   /* When cloning is allowed, we can assume that externally visible functions
      are not called.  We will compensate this by cloning later.  */
index 70370e3..587ad1b 100644 (file)
@@ -2933,6 +2933,7 @@ peep2_find_free_register (int from, int to, const char *class_str,
   static int search_ofs;
   enum reg_class cl;
   HARD_REG_SET live;
+  df_ref *def_rec;
   int i;
 
   gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1);
@@ -2950,13 +2951,15 @@ peep2_find_free_register (int from, int to, const char *class_str,
 
   while (from != to)
     {
-      HARD_REG_SET this_live;
+      gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
+
+      /* Don't use registers set or clobbered by the insn.  */
+      for (def_rec = DF_INSN_DEFS (peep2_insn_data[from].insn);
+          *def_rec; def_rec++)
+       SET_HARD_REG_BIT (live, DF_REF_REGNO (*def_rec));
 
       if (++from >= MAX_INSNS_PER_PEEP2 + 1)
        from = 0;
-      gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
-      REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before);
-      IOR_HARD_REG_SET (live, this_live);
     }
 
   cl = (class_str[0] == 'r' ? GENERAL_REGS
index 8ce0ea0..d5f5c4d 100644 (file)
@@ -871,7 +871,7 @@ fixup_match_2 (rtx insn, rtx dst, rtx src, rtx offset)
          if (REG_N_CALLS_CROSSED (REGNO (src)) == 0)
            break;
 
-         if (call_used_regs [REGNO (dst)]
+         if ((HARD_REGISTER_P (dst) && call_used_regs [REGNO (dst)])
              || find_reg_fusage (p, CLOBBER, dst))
            break;
        }