public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/marxin/heads/fold-GCC_VERSION-for-old)] Fold GCC_VERSION >= $old_release to TRUE.
@ 2022-05-04 13:40 Martin Liska
  0 siblings, 0 replies; 2+ messages in thread
From: Martin Liska @ 2022-05-04 13:40 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:0abce8d65f9224fadc69c0d11b9035bba8a51093

commit 0abce8d65f9224fadc69c0d11b9035bba8a51093
Author: Martin Liska <mliska@suse.cz>
Date:   Tue Feb 1 12:40:59 2022 +0100

    Fold GCC_VERSION >= $old_release to TRUE.

Diff:
---
 gcc/bitmap.cc              |  73 +------------------------------
 gcc/bitmap.h               |  18 ++------
 gcc/config/ia64/ia64.cc    |   5 +--
 gcc/config/rs6000/rs6000.h |   2 -
 gcc/cp/cp-tree.h           |   4 +-
 gcc/cp/tree.cc             |   2 +-
 gcc/defaults.h             |   2 +-
 gcc/diagnostic-core.h      |   4 --
 gcc/dwarf2cfi.cc           |   4 +-
 gcc/dwarf2out.cc           |  16 +++----
 gcc/fortran/gfortran.h     |   4 --
 gcc/gcc.cc                 |   2 -
 gcc/genautomata.cc         |   6 +--
 gcc/genconditions.cc       |   9 +---
 gcc/genmatch.cc            |  12 ------
 gcc/genmodes.cc            |   4 +-
 gcc/genoutput.cc           |   2 +-
 gcc/ggc-page.cc            |   9 ----
 gcc/ggc-tests.cc           |   2 -
 gcc/ggc.h                  |   4 --
 gcc/hwint.cc               | 104 ---------------------------------------------
 gcc/hwint.h                |  32 ++------------
 gcc/ira-int.h              |   6 +--
 gcc/jit/jit-common.h       |   4 --
 gcc/machmode.h             |  20 ---------
 gcc/output.h               |   4 --
 gcc/pretty-print.h         |   4 --
 gcc/rtl.cc                 |   2 +-
 gcc/rtl.h                  |   6 +--
 gcc/sbitmap.cc             |  37 ++--------------
 gcc/stringpool.h           |   2 -
 gcc/system.h               |  62 +++------------------------
 gcc/tree-vrp.cc            |   5 ---
 gcc/tree.cc                |   2 +-
 gcc/tree.h                 |  20 ++-------
 gcc/var-tracking.cc        |   2 +-
 gcc/vec.h                  |   8 +---
 gcc/wide-int.cc            |   2 +-
 38 files changed, 52 insertions(+), 454 deletions(-)

diff --git a/gcc/bitmap.cc b/gcc/bitmap.cc
index 88c329f9325..a19d8cddea5 100644
--- a/gcc/bitmap.cc
+++ b/gcc/bitmap.cc
@@ -1081,33 +1081,6 @@ bitmap_get_aligned_chunk (const_bitmap head, unsigned int chunk,
   return (ptr->bits[word_num] >> bit_num) & max_value;
 }
 \f
-#if GCC_VERSION < 3400
-/* Table of number of set bits in a character, indexed by value of char.  */
-static const unsigned char popcount_table[] =
-{
-    0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
-};
-
-static unsigned long
-bitmap_popcount (BITMAP_WORD a)
-{
-  unsigned long ret = 0;
-  unsigned i;
-
-  /* Just do this the table way for now  */
-  for (i = 0; i < BITMAP_WORD_BITS; i+= 8)
-    ret += popcount_table[(a >> i) & 0xff];
-  return ret;
-}
-#endif
-
 /* Count and return the number of bits set in the bitmap word BITS.  */
 static unsigned long
 bitmap_count_bits_in_word (const BITMAP_WORD *bits)
@@ -1116,13 +1089,9 @@ bitmap_count_bits_in_word (const BITMAP_WORD *bits)
 
   for (unsigned ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
     {
-#if GCC_VERSION >= 3400
       /* Note that popcountl matches BITMAP_WORD in type, so the actual size
 	 of BITMAP_WORD is not material.  */
       count += __builtin_popcountl (bits[ix]);
-#else
-      count += bitmap_popcount (bits[ix]);
-#endif
     }
   return count;
 }
@@ -1201,13 +1170,9 @@ bitmap_single_bit_set_p (const_bitmap a)
 
   for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
     {
-#if GCC_VERSION >= 3400
       /* Note that popcountl matches BITMAP_WORD in type, so the actual size
 	 of BITMAP_WORD is not material.  */
       count += __builtin_popcountl (elt->bits[ix]);
-#else
-      count += bitmap_popcount (elt->bits[ix]);
-#endif
       if (count > 1)
 	return false;
     }
@@ -1244,31 +1209,9 @@ bitmap_first_set_bit (const_bitmap a)
  found_bit:
   bit_no += ix * BITMAP_WORD_BITS;
 
-#if GCC_VERSION >= 3004
   gcc_assert (sizeof (long) == sizeof (word));
   bit_no += __builtin_ctzl (word);
-#else
-  /* Binary search for the first set bit.  */
-#if BITMAP_WORD_BITS > 64
-#error "Fill out the table."
-#endif
-#if BITMAP_WORD_BITS > 32
-  if (!(word & 0xffffffff))
-    word >>= 32, bit_no += 32;
-#endif
-  if (!(word & 0xffff))
-    word >>= 16, bit_no += 16;
-  if (!(word & 0xff))
-    word >>= 8, bit_no += 8;
-  if (!(word & 0xf))
-    word >>= 4, bit_no += 4;
-  if (!(word & 0x3))
-    word >>= 2, bit_no += 2;
-  if (!(word & 0x1))
-    word >>= 1, bit_no += 1;
-
- gcc_checking_assert (word & 1);
-#endif
+
  return bit_no;
 }
 
@@ -1302,22 +1245,8 @@ bitmap_last_set_bit (const_bitmap a)
   gcc_assert (elt->bits[ix] != 0);
  found_bit:
   bit_no += ix * BITMAP_WORD_BITS;
-#if GCC_VERSION >= 3004
   gcc_assert (sizeof (long) == sizeof (word));
   bit_no += BITMAP_WORD_BITS - __builtin_clzl (word) - 1;
-#else
-  /* Hopefully this is a twos-complement host...  */
-  BITMAP_WORD x = word;
-  x |= (x >> 1);
-  x |= (x >> 2);
-  x |= (x >> 4);
-  x |= (x >> 8);
-  x |= (x >> 16);
-#if BITMAP_WORD_BITS > 32
-  x |= (x >> 32);
-#endif
-  bit_no += bitmap_popcount (x) - 1;
-#endif
 
   return bit_no;
 }
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index 7fba443aff1..e7bf67a5474 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -708,20 +708,10 @@ bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 static inline void
 bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
 {
-#if (GCC_VERSION >= 3004)
-  {
-    unsigned int n = __builtin_ctzl (bi->bits);
-    gcc_assert (sizeof (unsigned long) == sizeof (BITMAP_WORD));
-    bi->bits >>= n;
-    *bit_no += n;
-  }
-#else
-  while (!(bi->bits & 1))
-    {
-      bi->bits >>= 1;
-      *bit_no += 1;
-    }
-#endif
+  unsigned int n = __builtin_ctzl (bi->bits);
+  gcc_assert (sizeof (unsigned long) == sizeof (BITMAP_WORD));
+  bi->bits >>= n;
+  *bit_no += n;
 }
 
 /* Advance to the next nonzero bit of a single bitmap, we will have
diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
index f9fb681a36c..445a391f0f8 100644
--- a/gcc/config/ia64/ia64.cc
+++ b/gcc/config/ia64/ia64.cc
@@ -6213,11 +6213,8 @@ ia64_safe_type (rtx_insn *insn)
    If a predicate register is written by an AND.ORCM we set WRITTEN_BY_AND
    to true; if it was written by an OR.ANDCM we set WRITTEN_BY_OR to true.  */
 
-#if GCC_VERSION >= 4000
 #define RWS_FIELD_TYPE __extension__ unsigned short
-#else
-#define RWS_FIELD_TYPE unsigned int
-#endif
+
 struct reg_write_state
 {
   RWS_FIELD_TYPE write_count : 2;
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 523256a5c9d..4e83372a291 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -2586,9 +2586,7 @@ typedef struct GTY(()) machine_function
 
 #define TARGET_SUPPORTS_WIDE_INT 1
 
-#if (GCC_VERSION >= 3000)
 #pragma GCC poison TARGET_FLOAT128 OPTION_MASK_FLOAT128 MASK_FLOAT128
-#endif
 
 /* Whether a given VALUE is a valid 16 or 34-bit signed integer.  */
 #define SIGNED_INTEGER_NBIT_P(VALUE, N)					\
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 8d7cf240b68..7b240a8b87d 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -632,7 +632,7 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
 #define BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK(NODE) \
   TREE_CHECK(NODE,BOUND_TEMPLATE_TEMPLATE_PARM)
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_TREE_CHECKING
 
 /* Returns t iff the node can have a TEMPLATE_INFO field.  */
 
@@ -2998,7 +2998,7 @@ struct GTY(()) lang_decl {
 #define STRIP_TEMPLATE(NODE) \
   (TREE_CODE (NODE) == TEMPLATE_DECL ? DECL_TEMPLATE_RESULT (NODE) : NODE)
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_TREE_CHECKING
 
 #define LANG_DECL_MIN_CHECK(NODE) __extension__			\
 ({ struct lang_decl *lt = DECL_LANG_SPECIFIC (NODE);		\
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index ed0d0d22950..98175bfeb11 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -6129,7 +6129,7 @@ cp_tree_c_finish_parsing ()
   deleted_copy_types = NULL;
 }
 \f
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_TREE_CHECKING
 /* Complain that some language-specific thing hanging off a tree
    node has been accessed improperly.  */
 
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 7c7a80e596e..fbd4d8e5ae6 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -949,7 +949,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define DEFAULT_USE_CXA_ATEXIT 0
 #endif
 
-#if GCC_VERSION >= 3000 && defined IN_GCC
+#ifdef IN_GCC
 /* These old constraint macros shouldn't appear anywhere in a
    configuration using MD constraint definitions.  */
 #endif
diff --git a/gcc/diagnostic-core.h b/gcc/diagnostic-core.h
index 286954ac2f8..0df0c896406 100644
--- a/gcc/diagnostic-core.h
+++ b/gcc/diagnostic-core.h
@@ -60,11 +60,7 @@ extern const char *trim_filename (const char *);
 /* None of these functions are suitable for ATTRIBUTE_PRINTF, because
    each language front end can extend them with its own set of format
    specifiers.  We must use custom format checks.  */
-#if (CHECKING_P && GCC_VERSION >= 4001) || GCC_VERSION == BUILDING_GCC_VERSION
 #define ATTRIBUTE_GCC_DIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m, n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_GCC_DIAG(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
      ATTRIBUTE_NORETURN;
 extern void internal_error_no_backtrace (const char *, ...)
diff --git a/gcc/dwarf2cfi.cc b/gcc/dwarf2cfi.cc
index ab7c5cc5b27..6aae3bdb5aa 100644
--- a/gcc/dwarf2cfi.cc
+++ b/gcc/dwarf2cfi.cc
@@ -45,9 +45,7 @@ along with GCC; see the file COPYING3.  If not see
    totally replaced in this file; make sure it stays that way.  */
 #undef DWARF2_UNWIND_INFO
 #undef DWARF2_FRAME_INFO
-#if (GCC_VERSION >= 3000)
- #pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
-#endif
+#pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
 
 #ifndef INCOMING_RETURN_ADDR_RTX
 #define INCOMING_RETURN_ADDR_RTX  (gcc_unreachable (), NULL_RTX)
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index 5681b01749a..d31818f999d 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -133,9 +133,7 @@ int vms_file_stats_name (const char *, long long *, long *, char *, int *);
    totally replaced in this file; make sure it stays that way.  */
 #undef DWARF2_UNWIND_INFO
 #undef DWARF2_FRAME_INFO
-#if (GCC_VERSION >= 3000)
- #pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
-#endif
+#pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
 
 /* The size of the target's pointer type.  */
 #ifndef PTR_SIZE
@@ -3370,10 +3368,8 @@ bool
 dwarf2out_default_as_loc_support (void)
 {
   return DWARF2_ASM_LINE_DEBUG_INFO;
-#if (GCC_VERSION >= 3000)
-# undef DWARF2_ASM_LINE_DEBUG_INFO
-# pragma GCC poison DWARF2_ASM_LINE_DEBUG_INFO
-#endif
+#undef DWARF2_ASM_LINE_DEBUG_INFO
+#pragma GCC poison DWARF2_ASM_LINE_DEBUG_INFO
 }
 
 /* Return true if GCC configure detected assembler support for views
@@ -3383,10 +3379,8 @@ bool
 dwarf2out_default_as_locview_support (void)
 {
   return DWARF2_ASM_VIEW_DEBUG_INFO;
-#if (GCC_VERSION >= 3000)
-# undef DWARF2_ASM_VIEW_DEBUG_INFO
-# pragma GCC poison DWARF2_ASM_VIEW_DEBUG_INFO
-#endif
+#undef DWARF2_ASM_VIEW_DEBUG_INFO
+#pragma GCC poison DWARF2_ASM_VIEW_DEBUG_INFO
 }
 
 /* A bit is set in ZERO_VIEW_P if we are using the assembler-supported
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 7bf1d5a0452..7baab4bfceb 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -1072,11 +1072,7 @@ typedef struct
 
 /* In order for the "gfc" format checking to work correctly, you must
    have declared a typedef locus first.  */
-#if GCC_VERSION >= 4001
 #define ATTRIBUTE_GCC_GFC(m, n) __attribute__ ((__format__ (__gcc_gfc__, m, n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_GCC_GFC(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 
 
 /* Suppress error messages or re-enable them.  */
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index bb07cc244e3..c5b92b380b2 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -163,9 +163,7 @@ env_manager::restore ()
 }
 
 /* Forbid other uses of getenv and putenv.  */
-#if (GCC_VERSION >= 3000)
 #pragma GCC poison getenv putenv
-#endif
 
 \f
 
diff --git a/gcc/genautomata.cc b/gcc/genautomata.cc
index e43314e4ea3..a290122f62c 100644
--- a/gcc/genautomata.cc
+++ b/gcc/genautomata.cc
@@ -879,7 +879,7 @@ struct state_ainsn_table
 /* Macros to access members of unions.  Use only them for access to
    union members of declarations and regexps.  */
 
-#if CHECKING_P && (GCC_VERSION >= 2007)
+#if CHECKING_P
 
 #define DECL_UNIT(d) __extension__					\
 (({ __typeof (d) const _decl = (d);					\
@@ -1070,7 +1070,7 @@ regexp_mode_check_failed (enum regexp_mode mode,
   exit (1);
 }
 
-#else /* #if CHECKING_P && (GCC_VERSION >= 2007) */
+#else /* #if CHECKING_P */
 
 #define DECL_UNIT(d) (&(d)->decl.unit)
 #define DECL_BYPASS(d) (&(d)->decl.bypass)
@@ -1088,7 +1088,7 @@ regexp_mode_check_failed (enum regexp_mode mode,
 #define REGEXP_ALLOF(r) (&(r)->regexp.allof)
 #define REGEXP_ONEOF(r) (&(r)->regexp.oneof)
 
-#endif /* #if CHECKING_P && (GCC_VERSION >= 2007) */
+#endif /* #if CHECKING_P */
 
 #define XCREATENODE(T) ((T *) create_node (sizeof (T)))
 #define XCREATENODEVEC(T, N) ((T *) create_node (sizeof (T) * (N)))
diff --git a/gcc/genconditions.cc b/gcc/genconditions.cc
index f63a3f495c5..8845309fd91 100644
--- a/gcc/genconditions.cc
+++ b/gcc/genconditions.cc
@@ -58,7 +58,6 @@ write_header (void)
 /* It is necessary, but not entirely safe, to include the headers below\n\
    in a generator program.  As a defensive measure, don't do so when the\n\
    table isn't going to have anything in it.  */\n\
-#if GCC_VERSION >= 3001\n\
 \n\
 /* Do not allow checking to confuse the issue.  */\n\
 #undef CHECKING_P\n\
@@ -108,8 +107,7 @@ write_header (void)
 extern rtx_insn *insn;\n\
 extern rtx ins1;\n\
 extern rtx operands[];\n\
-\n\
-#endif /* gcc >= 3.0.1 */\n");
+\n");
 }
 
 /* Write out one entry in the conditions table, using the data pointed
@@ -170,12 +168,11 @@ struct c_test\n\
    vary at run time.  It works in 3.0.1 and later; 3.0 only when not\n\
    optimizing.  */\n\
 \n\
-#if GCC_VERSION >= 3001\n\
 static const struct c_test insn_conditions[] = {\n");
 
   traverse_c_tests (write_one_condition, 0);
 
-  puts ("  { nullptr, -1 }\n};\n#endif /* gcc >= 3.0.1 */\n");
+  puts ("  { nullptr, -1 }\n};\n");
 }
 
 /* Emit code which will convert the C-format table to a
@@ -191,7 +188,6 @@ write_writer (void)
 	"  unsigned int i;\n"
         "  const char *p;\n"
         "  puts (\"(define_conditions [\");\n"
-	"#if GCC_VERSION >= 3001\n"
 	"  for (i = 0; i < ARRAY_SIZE (insn_conditions) - 1; i++)\n"
 	"    {\n"
 	"      printf (\"  (%d \\\"\", insn_conditions[i].value);\n"
@@ -207,7 +203,6 @@ write_writer (void)
 	"        }\n"
         "      puts (\"\\\")\");\n"
         "    }\n"
-	"#endif /* gcc >= 3.0.1 */\n"
 	"  puts (\"])\");\n"
         "  fflush (stdout);\n"
         "return ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE;\n"
diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc
index 2eda7300821..a10a51b0c13 100644
--- a/gcc/genmatch.cc
+++ b/gcc/genmatch.cc
@@ -70,9 +70,7 @@ linemap_client_expand_location_to_spelling_point (location_t loc,
 }
 
 static bool
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 5, 0)))
-#endif
 diagnostic_cb (cpp_reader *, enum cpp_diagnostic_level errtype,
 	       enum cpp_warning_reason, rich_location *richloc,
 	       const char *msg, va_list *ap)
@@ -115,9 +113,7 @@ notfound:
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 fatal_at (const cpp_token *tk, const char *msg, ...)
 {
   rich_location richloc (line_table, tk->src_loc);
@@ -128,9 +124,7 @@ fatal_at (const cpp_token *tk, const char *msg, ...)
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 fatal_at (location_t loc, const char *msg, ...)
 {
   rich_location richloc (line_table, loc);
@@ -141,9 +135,7 @@ fatal_at (location_t loc, const char *msg, ...)
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 warning_at (const cpp_token *tk, const char *msg, ...)
 {
   rich_location richloc (line_table, tk->src_loc);
@@ -154,9 +146,7 @@ warning_at (const cpp_token *tk, const char *msg, ...)
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 warning_at (location_t loc, const char *msg, ...)
 {
   rich_location richloc (line_table, loc);
@@ -169,9 +159,7 @@ warning_at (location_t loc, const char *msg, ...)
 /* Like fprintf, but print INDENT spaces at the beginning.  */
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 3, 4)))
-#endif
 fprintf_indent (FILE *f, unsigned int indent, const char *format, ...)
 {
   va_list ap;
diff --git a/gcc/genmodes.cc b/gcc/genmodes.cc
index 59850bb070a..0f4d746c157 100644
--- a/gcc/genmodes.cc
+++ b/gcc/genmodes.cc
@@ -1399,13 +1399,13 @@ emit_insn_modes_inline_h (void)
 #ifndef GCC_INSN_MODES_INLINE_H\n\
 #define GCC_INSN_MODES_INLINE_H");
 
-  puts ("\n#if !defined (USED_FOR_TARGET) && GCC_VERSION >= 4001\n");
+  puts ("\n#if !defined (USED_FOR_TARGET)\n");
   emit_mode_size_inline ();
   emit_mode_nunits_inline ();
   emit_mode_inner_inline ();
   emit_mode_unit_size_inline ();
   emit_mode_unit_precision_inline ();
-  puts ("#endif /* GCC_VERSION >= 4001 */");
+  puts ("#endif");
 
   puts ("\
 \n\
diff --git a/gcc/genoutput.cc b/gcc/genoutput.cc
index 6bb03e2864f..853bec0201d 100644
--- a/gcc/genoutput.cc
+++ b/gcc/genoutput.cc
@@ -291,7 +291,7 @@ output_insn_data (void)
 	break;
       }
 
-  printf ("#if GCC_VERSION >= 2007\n__extension__\n#endif\n");
+  printf ("\n__extension__\n");
   printf ("\nconst struct insn_data_d insn_data[] = \n{\n");
 
   for (d = idata; d; d = d->next)
diff --git a/gcc/ggc-page.cc b/gcc/ggc-page.cc
index 7a7a1b0901f..8fe07b80066 100644
--- a/gcc/ggc-page.cc
+++ b/gcc/ggc-page.cc
@@ -568,11 +568,7 @@ push_by_depth (page_entry *p, unsigned long *s)
   G.save_in_use[G.by_depth_in_use++] = s;
 }
 
-#if (GCC_VERSION < 3001)
-#define prefetch(X) ((void) X)
-#else
 #define prefetch(X) __builtin_prefetch (X)
-#endif
 
 #define save_in_use_p_i(__i) \
   (G.save_in_use[__i])
@@ -1340,12 +1336,7 @@ ggc_internal_alloc (size_t size, void (*f)(void *), size_t s, size_t n
 	  while (~entry->in_use_p[word] == 0)
 	    ++word;
 
-#if GCC_VERSION >= 3004
 	  bit = __builtin_ctzl (~entry->in_use_p[word]);
-#else
-	  while ((entry->in_use_p[word] >> bit) & 1)
-	    ++bit;
-#endif
 
 	  hint = word * HOST_BITS_PER_LONG + bit;
 	}
diff --git a/gcc/ggc-tests.cc b/gcc/ggc-tests.cc
index 620989489b6..d028da339e6 100644
--- a/gcc/ggc-tests.cc
+++ b/gcc/ggc-tests.cc
@@ -180,10 +180,8 @@ int test_struct_with_dtor::dtor_call_count;
 static void
 test_finalization ()
 {
-#if GCC_VERSION >= 4003
   ASSERT_FALSE (need_finalization_p <test_struct> ());
   ASSERT_TRUE (need_finalization_p <test_struct_with_dtor> ());
-#endif
 
   /* Create some garbage.  */
   const int count = 10;
diff --git a/gcc/ggc.h b/gcc/ggc.h
index aeec1bafb9b..0f72f368a72 100644
--- a/gcc/ggc.h
+++ b/gcc/ggc.h
@@ -170,11 +170,7 @@ template<typename T>
 inline bool
 need_finalization_p ()
 {
-#if GCC_VERSION >= 4003
   return !__has_trivial_destructor (T);
-#else
-  return true;
-#endif
 }
 
 template<typename T>
diff --git a/gcc/hwint.cc b/gcc/hwint.cc
index e53e0bf7906..fa2df400842 100644
--- a/gcc/hwint.cc
+++ b/gcc/hwint.cc
@@ -21,110 +21,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 
-#if GCC_VERSION < 3004
-
-/* The functions clz_hwi, ctz_hwi, ffs_hwi, floor_log2, ceil_log2,
-   and exact_log2 are defined as inline functions in hwint.h
-   if GCC_VERSION >= 3004.
-   The definitions here are used for older versions of GCC and
-   non-GCC bootstrap compilers.  */
-
-/* Given X, an unsigned number, return the largest int Y such that 2**Y <= X.
-   If X is 0, return -1.  */
-
-int
-floor_log2 (unsigned HOST_WIDE_INT x)
-{
-  int t = 0;
-
-  if (x == 0)
-    return -1;
-
-  if (HOST_BITS_PER_WIDE_INT > 64)
-    if (x >= HOST_WIDE_INT_1U << (t + 64))
-      t += 64;
-  if (HOST_BITS_PER_WIDE_INT > 32)
-    if (x >= HOST_WIDE_INT_1U << (t + 32))
-      t += 32;
-  if (x >= HOST_WIDE_INT_1U << (t + 16))
-    t += 16;
-  if (x >= HOST_WIDE_INT_1U << (t + 8))
-    t += 8;
-  if (x >= HOST_WIDE_INT_1U << (t + 4))
-    t += 4;
-  if (x >= HOST_WIDE_INT_1U << (t + 2))
-    t += 2;
-  if (x >= HOST_WIDE_INT_1U << (t + 1))
-    t += 1;
-
-  return t;
-}
-
-/* Given X, an unsigned number, return the least Y such that 2**Y >= X.  */
-
-int
-ceil_log2 (unsigned HOST_WIDE_INT x)
-{
-  return x == 0 ? 0 : floor_log2 (x - 1) + 1;
-}
-
-/* Return the logarithm of X, base 2, considering X unsigned,
-   if X is a power of 2.  Otherwise, returns -1.  */
-
-int
-exact_log2 (unsigned HOST_WIDE_INT x)
-{
-  if (!pow2p_hwi (x))
-    return -1;
-  return floor_log2 (x);
-}
-
-/* Given X, an unsigned number, return the number of least significant bits
-   that are zero.  When X == 0, the result is the word size.  */
-
-int
-ctz_hwi (unsigned HOST_WIDE_INT x)
-{
-  return x ? floor_log2 (least_bit_hwi (x)) : HOST_BITS_PER_WIDE_INT;
-}
-
-/* Similarly for most significant bits.  */
-
-int
-clz_hwi (unsigned HOST_WIDE_INT x)
-{
-  return HOST_BITS_PER_WIDE_INT - 1 - floor_log2 (x);
-}
-
-/* Similar to ctz_hwi, except that the least significant bit is numbered
-   starting from 1, and X == 0 yields 0.  */
-
-int
-ffs_hwi (unsigned HOST_WIDE_INT x)
-{
-  return 1 + floor_log2 (least_bit_hwi (x));
-}
-
-/* Return the number of set bits in X.  */
-
-int
-popcount_hwi (unsigned HOST_WIDE_INT x)
-{
-  int i, ret = 0;
-  size_t bits = sizeof (x) * CHAR_BIT;
-
-  for (i = 0; i < bits; i += 1)
-    {
-      ret += x & 1;
-      x >>= 1;
-    }
-
-  return ret;
-}
-
-#endif /* GCC_VERSION < 3004 */
-
-
 /* Compute the greatest common divisor of two numbers A and B using
    Euclid's algorithm.  */
 
diff --git a/gcc/hwint.h b/gcc/hwint.h
index c160bea0cb2..f3b5a779a65 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -28,18 +28,16 @@
 #define HOST_LONG_LONG_FORMAT "ll"
 #endif
 
-/* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined, but
-   GCC_VERSION >= 3000, assume this is the second or later stage of a
+/* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined
+   assume this is the second or later stage of a
    bootstrap, we do have long long, and it's 64 bits.  (This is
    required by C99; we do have some ports that violate that assumption
    but they're all cross-compile-only.)  Just in case, force a
    constraint violation if that assumption is incorrect.  */
 #if !defined HAVE_LONG_LONG
-# if GCC_VERSION >= 3000
-#  define HAVE_LONG_LONG 1
-#  define SIZEOF_LONG_LONG 8
+# define HAVE_LONG_LONG 1
+# define SIZEOF_LONG_LONG 8
 extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
-# endif
 #endif
 
 #ifdef HAVE_LONG_LONG
@@ -160,26 +158,6 @@ pow2p_hwi (unsigned HOST_WIDE_INT x)
   return x && pow2_or_zerop (x);
 }
 
-#if GCC_VERSION < 3004
-
-extern int clz_hwi (unsigned HOST_WIDE_INT x);
-extern int ctz_hwi (unsigned HOST_WIDE_INT x);
-extern int ffs_hwi (unsigned HOST_WIDE_INT x);
-
-/* Return the number of set bits in X.  */
-extern int popcount_hwi (unsigned HOST_WIDE_INT x);
-
-/* Return log2, or -1 if not exact.  */
-extern int exact_log2                  (unsigned HOST_WIDE_INT);
-
-/* Return floor of log2, with -1 for zero.  */
-extern int floor_log2                  (unsigned HOST_WIDE_INT);
-
-/* Return the smallest n such that 2**n >= X.  */
-extern int ceil_log2			(unsigned HOST_WIDE_INT);
-
-#else /* GCC_VERSION >= 3004 */
-
 /* For convenience, define 0 -> word_size.  */
 static inline int
 clz_hwi (unsigned HOST_WIDE_INT x)
@@ -251,8 +229,6 @@ exact_log2 (unsigned HOST_WIDE_INT x)
   return pow2p_hwi (x) ? ctz_hwi (x) : -1;
 }
 
-#endif /* GCC_VERSION >= 3004 */
-
 #define HOST_WIDE_INT_MIN (HOST_WIDE_INT) \
   (HOST_WIDE_INT_1U << (HOST_BITS_PER_WIDE_INT - 1))
 #define HOST_WIDE_INT_MAX (~(HOST_WIDE_INT_MIN))
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index f42a314fa7f..76ce6b4d75c 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -151,7 +151,7 @@ extern int ira_loop_tree_height;
 extern ira_loop_tree_node_t ira_bb_nodes;
 
 /* Two access macros to the nodes representing basic blocks.  */
-#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_IRA_CHECKING
 #define IRA_BB_NODE_BY_INDEX(index) __extension__			\
 (({ ira_loop_tree_node_t _node = (&ira_bb_nodes[index]);		\
      if (_node->children != NULL || _node->loop != NULL || _node->bb == NULL)\
@@ -173,7 +173,7 @@ extern ira_loop_tree_node_t ira_bb_nodes;
 extern ira_loop_tree_node_t ira_loop_nodes;
 
 /* Two access macros to the nodes representing loops.  */
-#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_IRA_CHECKING
 #define IRA_LOOP_NODE_BY_INDEX(index) __extension__			\
 (({ ira_loop_tree_node_t const _node = (&ira_loop_nodes[index]);	\
      if (_node->children == NULL || _node->bb != NULL			\
@@ -655,7 +655,7 @@ extern int ira_move_loops_num, ira_additional_jumps_num;
 /* Set, clear or test bit number I in R, a bit vector of elements with
    minimal index and maximal index equal correspondingly to MIN and
    MAX.  */
-#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_IRA_CHECKING
 
 #define SET_MINMAX_SET_BIT(R, I, MIN, MAX) __extension__	        \
   (({ int _min = (MIN), _max = (MAX), _i = (I);				\
diff --git a/gcc/jit/jit-common.h b/gcc/jit/jit-common.h
index 3ff7447fbf3..773a2d8df43 100644
--- a/gcc/jit/jit-common.h
+++ b/gcc/jit/jit-common.h
@@ -29,11 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-iterator.h"
 
 #ifdef GCC_VERSION
-#if GCC_VERSION >= 4001
 #define GNU_PRINTF(M, N) __attribute__ ((format (gnu_printf, (M), (N))))
-#else
-#define GNU_PRINTF(M, N)
-#endif
 #endif
 
 const int NUM_GCC_JIT_TYPES = GCC_JIT_TYPE_INT128_T + 1;
diff --git a/gcc/machmode.h b/gcc/machmode.h
index 45df720df73..d84bdd5797d 100644
--- a/gcc/machmode.h
+++ b/gcc/machmode.h
@@ -545,12 +545,8 @@ complex_mode::includes_p (machine_mode m)
 ALWAYS_INLINE poly_uint16
 mode_to_bytes (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_size_inline (mode) : mode_size[mode]);
-#else
-  return mode_size[mode];
-#endif
 }
 
 /* Return the base GET_MODE_BITSIZE value for MODE.  */
@@ -574,13 +570,9 @@ mode_to_precision (machine_mode mode)
 ALWAYS_INLINE scalar_mode
 mode_to_inner (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return scalar_mode::from_int (__builtin_constant_p (mode)
 				? mode_inner_inline (mode)
 				: mode_inner[mode]);
-#else
-  return scalar_mode::from_int (mode_inner[mode]);
-#endif
 }
 
 /* Return the base GET_MODE_UNIT_SIZE value for MODE.  */
@@ -588,12 +580,8 @@ mode_to_inner (machine_mode mode)
 ALWAYS_INLINE unsigned char
 mode_to_unit_size (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_unit_size_inline (mode) : mode_unit_size[mode]);
-#else
-  return mode_unit_size[mode];
-#endif
 }
 
 /* Return the base GET_MODE_UNIT_PRECISION value for MODE.  */
@@ -601,12 +589,8 @@ mode_to_unit_size (machine_mode mode)
 ALWAYS_INLINE unsigned short
 mode_to_unit_precision (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_unit_precision_inline (mode) : mode_unit_precision[mode]);
-#else
-  return mode_unit_precision[mode];
-#endif
 }
 
 /* Return the base GET_MODE_NUNITS value for MODE.  */
@@ -614,12 +598,8 @@ mode_to_unit_precision (machine_mode mode)
 ALWAYS_INLINE poly_uint16
 mode_to_nunits (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_nunits_inline (mode) : mode_nunits[mode]);
-#else
-  return mode_nunits[mode];
-#endif
 }
 
 /* Get the size in bytes of an object of mode MODE.  */
diff --git a/gcc/output.h b/gcc/output.h
index 6dea630913a..2fce8b5c19f 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -115,11 +115,7 @@ extern void output_addr_const (FILE *, rtx);
 
 /* Output a string of assembler code, substituting numbers, strings
    and fixed syntactic prefixes.  */
-#if GCC_VERSION >= 3004
 #define ATTRIBUTE_ASM_FPRINTF(m, n) __attribute__ ((__format__ (__asm_fprintf__, m, n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_ASM_FPRINTF(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 
 extern void fprint_whex (FILE *, unsigned HOST_WIDE_INT);
 extern void fprint_ul (FILE *, unsigned long);
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index fc588447460..425ae339ae0 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -374,11 +374,7 @@ extern void pp_separate_with (pretty_printer *, char);
 
 /* This header may be included before diagnostics-core.h, hence the duplicate
    definitions to allow for GCC-specific formats.  */
-#if GCC_VERSION >= 3005
 #define ATTRIBUTE_GCC_PPDIAG(m, n) __attribute__ ((__format__ (GCC_PPDIAG_STYLE, m ,n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_GCC_PPDIAG(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 extern void pp_printf (pretty_printer *, const char *, ...)
      ATTRIBUTE_GCC_PPDIAG(2,3);
 
diff --git a/gcc/rtl.cc b/gcc/rtl.cc
index 86c322b19ca..74be7342803 100644
--- a/gcc/rtl.cc
+++ b/gcc/rtl.cc
@@ -869,7 +869,7 @@ dump_rtx_statistics (void)
   fprintf (stderr, "-----------------------------------------------\n");
 }
 \f
-#if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_RTL_CHECKING
 
 /* Disable warnings about missing quoting in GCC diagnostics for
    the internal_error calls.  Their format strings deliberately don't
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 488016bb42a..5e77be2f024 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1076,7 +1076,7 @@ is_a_helper <rtx_note *>::test (rtx_insn *insn)
 
 /* General accessor macros for accessing the fields of an rtx.  */
 
-#if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_RTL_CHECKING
 /* The bit with a star outside the statement expr and an & inside is
    so that N can be evaluated only once.  */
 #define RTL_CHECK1(RTX, N, C1) __extension__				\
@@ -1257,7 +1257,7 @@ extern void rtvec_check_failed_bounds (const_rtvec, int, const char *, int,
 /* Access an individual rtx flag, with no checking of any kind.  */
 #define RTX_FLAG(RTX, FLAG)	((RTX)->FLAG)
 
-#if defined ENABLE_RTL_FLAG_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_RTL_FLAG_CHECKING
 #define RTL_FLAG_CHECK1(NAME, RTX, C1) __extension__			\
 ({ __typeof (RTX) const _rtx = (RTX);					\
    if (GET_CODE (_rtx) != C1)						\
@@ -1823,7 +1823,7 @@ enum label_kind
   LABEL_WEAK_ENTRY	/* alternate entry point, exported as weak symbol */
 };
 
-#if defined ENABLE_RTL_FLAG_CHECKING && (GCC_VERSION > 2007)
+#if defined ENABLE_RTL_FLAG_CHECKING
 
 /* Retrieve the kind of LABEL.  */
 #define LABEL_KIND(LABEL) __extension__					\
diff --git a/gcc/sbitmap.cc b/gcc/sbitmap.cc
index 5ac2b6d0f67..0a6fddadab8 100644
--- a/gcc/sbitmap.cc
+++ b/gcc/sbitmap.cc
@@ -375,33 +375,6 @@ bitmap_bit_in_range_p (const_sbitmap bmap, unsigned int start, unsigned int end)
   return (bmap->elms[start_word] & mask) != 0;
 }
 
-#if GCC_VERSION < 3400
-/* Table of number of set bits in a character, indexed by value of char.  */
-static const unsigned char popcount_table[] =
-{
-    0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
-};
-
-static unsigned long
-sbitmap_popcount (SBITMAP_ELT_TYPE a)
-{
-  unsigned long ret = 0;
-  unsigned i;
-
-  /* Just do this the table way for now  */
-  for (i = 0; i < HOST_BITS_PER_WIDEST_FAST_INT; i += 8)
-    ret += popcount_table[(a >> i) & 0xff];
-  return ret;
-}
-#endif
-
 /* Count and return the number of bits set in the bitmap BMAP.  */
 
 unsigned int
@@ -411,16 +384,12 @@ bitmap_count_bits (const_sbitmap bmap)
   for (unsigned int i = 0; i < bmap->size; i++)
     if (bmap->elms[i])
       {
-#if GCC_VERSION < 3400
-	count += sbitmap_popcount (bmap->elms[i]);
-#else
-# if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
+#if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
 	count += __builtin_popcountl (bmap->elms[i]);
-# elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
+#elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
 	count += __builtin_popcountll (bmap->elms[i]);
-# else
+#else
 	count += __builtin_popcount (bmap->elms[i]);
-# endif
 #endif
       }
   return count;
diff --git a/gcc/stringpool.h b/gcc/stringpool.h
index 5e301c6011b..b43110cc7a0 100644
--- a/gcc/stringpool.h
+++ b/gcc/stringpool.h
@@ -33,11 +33,9 @@ extern tree maybe_get_identifier (const char *);
    known.  */
 extern tree get_identifier_with_length (const char *, size_t);
 
-#if GCC_VERSION >= 3000
 #define get_identifier(str) \
   (__builtin_constant_p (str)				\
     ? get_identifier_with_length ((str), strlen (str))  \
     : get_identifier (str))
-#endif
 
 #endif  // GCC_STRINGPOOL_H
diff --git a/gcc/system.h b/gcc/system.h
index c5562cc49a3..1688b763ef5 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -596,17 +596,15 @@ extern int vsnprintf (char *, size_t, const char *, va_list);
 #ifdef __cplusplus
 #define HAVE_DESIGNATED_INITIALIZERS 0
 #else
-#define HAVE_DESIGNATED_INITIALIZERS \
-  ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))
+#define HAVE_DESIGNATED_INITIALIZERS 1
 #endif
 #endif
 
 #if !defined(HAVE_DESIGNATED_UNION_INITIALIZERS)
 #ifdef __cplusplus
-#define HAVE_DESIGNATED_UNION_INITIALIZERS (GCC_VERSION >= 4007)
+#define HAVE_DESIGNATED_UNION_INITIALIZERS 1
 #else
-#define HAVE_DESIGNATED_UNION_INITIALIZERS \
-  ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))
+#define HAVE_DESIGNATED_UNION_INITIALIZERS 1
 #endif
 #endif
 
@@ -722,20 +720,6 @@ extern int vsnprintf (char *, size_t, const char *, va_list);
 #define offsetof(TYPE, MEMBER)	((size_t) &((TYPE *) 0)->MEMBER)
 #endif
 
-/* Various error reporting routines want to use __FUNCTION__.  */
-#if (GCC_VERSION < 2007)
-#ifndef __FUNCTION__
-#define __FUNCTION__ "?"
-#endif /* ! __FUNCTION__ */
-#endif
-
-/* __builtin_expect(A, B) evaluates to A, but notifies the compiler that
-   the most likely value of A is B.  This feature was added at some point
-   between 2.95 and 3.0.  Let's use 3.0 as the lower bound for now.  */
-#if (GCC_VERSION < 3000)
-#define __builtin_expect(a, b) (a)
-#endif
-
 /* Some of the headers included by <memory> can use "abort" within a
    namespace, e.g. "_VSTD::abort();", which fails after we use the
    preprocessor to redefine "abort" as "fancy_abort" below.  */
@@ -781,12 +765,9 @@ extern void fancy_abort (const char *, int, const char *)
 #if ENABLE_ASSERT_CHECKING
 #define gcc_assert(EXPR) 						\
    ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0))
-#elif (GCC_VERSION >= 4005)
+#else
 #define gcc_assert(EXPR) 						\
   ((void)(__builtin_expect (!(EXPR), 0) ? __builtin_unreachable (), 0 : 0))
-#else
-/* Include EXPR, so that unused variable warnings do not occur.  */
-#define gcc_assert(EXPR) ((void)(0 && (EXPR)))
 #endif
 
 #if CHECKING_P
@@ -796,21 +777,13 @@ extern void fancy_abort (const char *, int, const char *)
 #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR)))
 #endif
 
-#if GCC_VERSION >= 4000
 #define ALWAYS_INLINE inline __attribute__ ((always_inline))
-#else
-#define ALWAYS_INLINE inline
-#endif
 
-#if GCC_VERSION >= 3004
 #define WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
-#else
-#define WARN_UNUSED_RESULT
-#endif
 
 /* Use gcc_unreachable() to mark unreachable locations (like an
    unreachable default case of a switch.  Do not use gcc_assert(0).  */
-#if (GCC_VERSION >= 4005) && !ENABLE_ASSERT_CHECKING
+#if !ENABLE_ASSERT_CHECKING
 #define gcc_unreachable() __builtin_unreachable ()
 #else
 #define gcc_unreachable() (fancy_abort (__FILE__, __LINE__, __FUNCTION__))
@@ -826,11 +799,7 @@ extern void fancy_abort (const char *, int, const char *)
 # define gcc_fallthrough()
 #endif
 
-#if GCC_VERSION >= 3001
 #define STATIC_CONSTANT_P(X) (__builtin_constant_p (X) && (X))
-#else
-#define STATIC_CONSTANT_P(X) (false && (X))
-#endif
 
 /* static_assert (COND, MESSAGE) is available in C++11 onwards.  */
 #if __cplusplus >= 201103L
@@ -871,12 +840,6 @@ extern void fancy_abort (const char *, int, const char *)
 /* Some compilers do not allow the use of unsigned char in bitfields.  */
 #define BOOL_BITFIELD unsigned int
 
-/* GCC older than 4.4 have broken C++ value initialization handling, see
-   PR11309, PR30111, PR33916, PR82939 and PR84405 for more details.  */
-#if GCC_VERSION > 0 && GCC_VERSION < 4004 && !defined(__clang__)
-# define BROKEN_VALUE_INITIALIZATION
-#endif
-
 /* As the last action in this file, we poison the identifiers that
    shouldn't be used.  Note, luckily gcc-3.0's token-based integrated
    preprocessor won't trip on poisoned identifiers that arrive from
@@ -899,8 +862,6 @@ extern void fancy_abort (const char *, int, const char *)
 #define realloc xrealloc
 #endif
 
-#if (GCC_VERSION >= 3000)
-
 /* Note autoconf checks for prototype declarations and includes
    system.h while doing so.  Only poison these tokens if actually
    compiling gcc, so that the autoconf declaration tests for malloc
@@ -1130,8 +1091,6 @@ extern void fancy_abort (const char *, int, const char *)
    'if (flag_checking)', or with CHECKING_P macro.  */
 #pragma GCC poison ENABLE_CHECKING
 
-#endif /* GCC >= 3.0 */
-
 /* This macro allows casting away const-ness to pass -Wcast-qual
    warnings.  DO NOT USE THIS UNLESS YOU REALLY HAVE TO!  It should
    only be used in certain specific cases.  One valid case is where
@@ -1151,7 +1110,7 @@ extern void fancy_abort (const char *, int, const char *)
 #ifdef __cplusplus
 #define CONST_CAST2(TOTYPE,FROMTYPE,X) (const_cast<TOTYPE> (X))
 #else
-#if defined(__GNUC__) && GCC_VERSION > 4000
+#ifdef __GNUC__
 /* GCC 4.0.x has a bug where it may ICE on this expression,
    so does GCC 3.4.x (PR17436).  */
 #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
@@ -1182,13 +1141,9 @@ helper_const_non_const_cast (const char *p)
 
 /* Activate certain diagnostics as warnings (not errors via the
    -Werror flag).  */
-#if GCC_VERSION >= 4003
-/* If asserts are disabled, activate -Wuninitialized as a warning (not
-   an error/-Werror).  */
 #ifndef ENABLE_ASSERT_CHECKING
 #pragma GCC diagnostic warning "-Wuninitialized"
 #endif
-#endif
 
 #ifdef ENABLE_VALGRIND_ANNOTATIONS
 # ifdef HAVE_VALGRIND_MEMCHECK_H
@@ -1229,13 +1184,8 @@ helper_const_non_const_cast (const char *p)
 
 /* In LTO -fwhole-program build we still want to keep the debug functions available
    for debugger.  Mark them as used to prevent removal.  */
-#if (GCC_VERSION > 4000)
 #define DEBUG_FUNCTION __attribute__ ((__used__))
 #define DEBUG_VARIABLE __attribute__ ((__used__))
-#else
-#define DEBUG_FUNCTION
-#define DEBUG_VARIABLE
-#endif
 
 /* General macro to extract bit Y of X.  */
 #define TEST_BIT(X, Y) (((X) >> (Y)) & 1)
diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc
index 0cbd9d369ca..436fafcaa0f 100644
--- a/gcc/tree-vrp.cc
+++ b/gcc/tree-vrp.cc
@@ -2955,12 +2955,7 @@ vrp_asserts::find_switch_asserts (basic_block bb, gswitch *last)
   edge e;
   struct case_info *ci;
   size_t n = gimple_switch_num_labels (last);
-#if GCC_VERSION >= 4000
   unsigned int idx;
-#else
-  /* Work around GCC 3.4 bug (PR 37086).  */
-  volatile unsigned int idx;
-#endif
 
   bsi = gsi_for_stmt (last);
   op = gimple_switch_index (last);
diff --git a/gcc/tree.cc b/gcc/tree.cc
index 4cf3785270b..ac32282fc11 100644
--- a/gcc/tree.cc
+++ b/gcc/tree.cc
@@ -8775,7 +8775,7 @@ get_file_function_name (const char *type)
   return get_identifier (buf);
 }
 \f
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 /* Complain that the tree code of NODE does not match the expected 0
    terminated list of trailing codes. The trailing code list can be
diff --git a/gcc/tree.h b/gcc/tree.h
index 8844471e9a5..b503295ced0 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -246,7 +246,7 @@ as_internal_fn (combined_fn code)
 
 /* When checking is enabled, errors will be generated if a tree node
    is accessed incorrectly. The macros die with a fatal error.  */
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 #define TREE_CHECK(T, CODE) \
 (tree_check ((T), __FILE__, __LINE__, __FUNCTION__, (CODE)))
@@ -2831,16 +2831,12 @@ extern void decl_value_expr_insert (tree, tree);
 /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set.  */
 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
 
-#if (GCC_VERSION >= 2007)
 #define DECL_RTL_KNOWN_SET(decl) __extension__				\
 ({  tree const __d = (decl);						\
     gcc_checking_assert (DECL_RTL_SET_P (__d));				\
     /* Dereference it so the compiler knows it can't be NULL even	\
        without assertion checking.  */					\
     &*DECL_RTL_IF_SET (__d); })
-#else
-#define DECL_RTL_KNOWN_SET(decl) (&*DECL_RTL_IF_SET (decl))
-#endif
 
 /* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'.  */
 #define DECL_REGISTER(NODE) (DECL_WRTL_CHECK (NODE)->decl_common.decl_flag_0)
@@ -3448,7 +3444,7 @@ extern tree build_target_option_node (struct gcc_options *opts,
 
 extern void prepare_target_option_nodes_for_pch (void);
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 inline tree
 tree_check (tree __t, const char *__f, int __l, const char *__g, tree_code __c)
@@ -3663,10 +3659,8 @@ tree_int_cst_elt_check (tree __t, int __i,
 
 /* Workaround -Wstrict-overflow false positive during profiledbootstrap.  */
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wstrict-overflow"
-#endif
 
 inline tree *
 tree_vec_elt_check (tree __t, int __i,
@@ -3679,9 +3673,7 @@ tree_vec_elt_check (tree __t, int __i,
   return &CONST_CAST_TREE (__t)->vec.a[__i];
 }
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic pop
-#endif
 
 inline tree *
 omp_clause_elt_check (tree __t, int __i,
@@ -3889,10 +3881,8 @@ non_type_check (const_tree __t, const char *__f, int __l, const char *__g)
   return __t;
 }
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wstrict-overflow"
-#endif
 
 inline const_tree *
 tree_vec_elt_check (const_tree __t, int __i,
@@ -3906,9 +3896,7 @@ tree_vec_elt_check (const_tree __t, int __i,
   //return &__t->vec.a[__i];
 }
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic pop
-#endif
 
 inline const_tree *
 omp_clause_elt_check (const_tree __t, int __i,
@@ -3945,7 +3933,7 @@ tree_operand_length (const_tree node)
     return TREE_CODE_LENGTH (TREE_CODE (node));
 }
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 /* Special checks for TREE_OPERANDs.  */
 inline tree *
@@ -4679,7 +4667,7 @@ extern unsigned HOST_WIDE_INT tree_to_uhwi (const_tree)
   ATTRIBUTE_NONNULL (1) ATTRIBUTE_PURE;
 extern poly_uint64 tree_to_poly_uint64 (const_tree)
   ATTRIBUTE_NONNULL (1) ATTRIBUTE_PURE;
-#if !defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 4003)
+#ifndef ENABLE_TREE_CHECKING
 extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
 tree_to_shwi (const_tree t)
 {
diff --git a/gcc/var-tracking.cc b/gcc/var-tracking.cc
index 7c3ad0a55bd..2a3a0684e97 100644
--- a/gcc/var-tracking.cc
+++ b/gcc/var-tracking.cc
@@ -404,7 +404,7 @@ int_mem_offset (const_rtx mem)
   return 0;
 }
 
-#if CHECKING_P && (GCC_VERSION >= 2007)
+#if CHECKING_P
 
 /* Access VAR's Ith part's offset, checking that it's not a one-part
    variable.  */
diff --git a/gcc/vec.h b/gcc/vec.h
index 3ba7ea7edc2..3cb2772301c 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -295,10 +295,8 @@ va_heap::reserve (vec<T, va_heap, vl_embed> *&v, unsigned reserve, bool exact
 }
 
 
-#if GCC_VERSION >= 4007
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wfree-nonheap-object"
-#endif
 
 /* Free the heap space allocated for vector V.  */
 
@@ -317,9 +315,7 @@ va_heap::release (vec<T, va_heap, vl_embed> *&v)
   v = NULL;
 }
 
-#if GCC_VERSION >= 4007
 #pragma GCC diagnostic pop
-#endif
 
 /* Allocator type for GC vectors.  Notice that we need the structure
    declaration even if GC is not enabled.  */
@@ -2349,8 +2345,6 @@ make_array_slice (T *base, unsigned int size)
   return array_slice<T> (base, size);
 }
 
-#if (GCC_VERSION >= 3000)
-# pragma GCC poison m_vec m_vecpfx m_vecdata
-#endif
+#pragma GCC poison m_vec m_vecpfx m_vecdata
 
 #endif // GCC_VEC_H
diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc
index f61b9fefc13..ffd96e6b9d9 100644
--- a/gcc/wide-int.cc
+++ b/gcc/wide-int.cc
@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3.  If not see
 
 #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
 /* Do not include longlong.h when compiler is clang-based. See PR61146.  */
-#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) && !defined(__clang__)
+#if (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) && !defined(__clang__)
 typedef unsigned HOST_HALF_WIDE_INT UHWtype;
 typedef unsigned HOST_WIDE_INT UWtype;
 typedef unsigned int UQItype __attribute__ ((mode (QI)));


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [gcc(refs/users/marxin/heads/fold-GCC_VERSION-for-old)] Fold GCC_VERSION >= $old_release to TRUE.
@ 2022-02-01 12:11 Martin Liska
  0 siblings, 0 replies; 2+ messages in thread
From: Martin Liska @ 2022-02-01 12:11 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:fdab8b2fa6f89cdaf3a01e3e41fbcafba4d38348

commit fdab8b2fa6f89cdaf3a01e3e41fbcafba4d38348
Author: Martin Liska <mliska@suse.cz>
Date:   Tue Feb 1 12:40:59 2022 +0100

    Fold GCC_VERSION >= $old_release to TRUE.

Diff:
---
 gcc/bitmap.cc              |  73 +------------------------------
 gcc/bitmap.h               |  18 ++------
 gcc/config/ia64/ia64.cc    |   5 +--
 gcc/config/rs6000/rs6000.h |   2 -
 gcc/cp/cp-tree.h           |   4 +-
 gcc/cp/tree.cc             |   2 +-
 gcc/defaults.h             |   2 +-
 gcc/diagnostic-core.h      |   4 --
 gcc/dwarf2cfi.cc           |   4 +-
 gcc/dwarf2out.cc           |  16 +++----
 gcc/fortran/gfortran.h     |   4 --
 gcc/gcc.cc                 |   2 -
 gcc/genautomata.cc         |   6 +--
 gcc/genconditions.cc       |   9 +---
 gcc/genmatch.cc            |  12 ------
 gcc/genmodes.cc            |   4 +-
 gcc/genoutput.cc           |   2 +-
 gcc/ggc-page.cc            |   9 ----
 gcc/ggc-tests.cc           |   2 -
 gcc/ggc.h                  |   4 --
 gcc/hwint.cc               | 104 ---------------------------------------------
 gcc/hwint.h                |  32 ++------------
 gcc/ira-int.h              |   6 +--
 gcc/jit/jit-common.h       |   4 --
 gcc/machmode.h             |  20 ---------
 gcc/output.h               |   4 --
 gcc/pretty-print.h         |   4 --
 gcc/rtl.cc                 |   2 +-
 gcc/rtl.h                  |   6 +--
 gcc/sbitmap.cc             |  37 ++--------------
 gcc/stringpool.h           |   2 -
 gcc/system.h               |  62 +++------------------------
 gcc/tree-vrp.cc            |   5 ---
 gcc/tree.cc                |   2 +-
 gcc/tree.h                 |  20 ++-------
 gcc/var-tracking.cc        |   2 +-
 gcc/vec.h                  |   8 +---
 gcc/wide-int.cc            |   2 +-
 38 files changed, 52 insertions(+), 454 deletions(-)

diff --git a/gcc/bitmap.cc b/gcc/bitmap.cc
index 88c329f9325..a19d8cddea5 100644
--- a/gcc/bitmap.cc
+++ b/gcc/bitmap.cc
@@ -1081,33 +1081,6 @@ bitmap_get_aligned_chunk (const_bitmap head, unsigned int chunk,
   return (ptr->bits[word_num] >> bit_num) & max_value;
 }
 \f
-#if GCC_VERSION < 3400
-/* Table of number of set bits in a character, indexed by value of char.  */
-static const unsigned char popcount_table[] =
-{
-    0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
-};
-
-static unsigned long
-bitmap_popcount (BITMAP_WORD a)
-{
-  unsigned long ret = 0;
-  unsigned i;
-
-  /* Just do this the table way for now  */
-  for (i = 0; i < BITMAP_WORD_BITS; i+= 8)
-    ret += popcount_table[(a >> i) & 0xff];
-  return ret;
-}
-#endif
-
 /* Count and return the number of bits set in the bitmap word BITS.  */
 static unsigned long
 bitmap_count_bits_in_word (const BITMAP_WORD *bits)
@@ -1116,13 +1089,9 @@ bitmap_count_bits_in_word (const BITMAP_WORD *bits)
 
   for (unsigned ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
     {
-#if GCC_VERSION >= 3400
       /* Note that popcountl matches BITMAP_WORD in type, so the actual size
 	 of BITMAP_WORD is not material.  */
       count += __builtin_popcountl (bits[ix]);
-#else
-      count += bitmap_popcount (bits[ix]);
-#endif
     }
   return count;
 }
@@ -1201,13 +1170,9 @@ bitmap_single_bit_set_p (const_bitmap a)
 
   for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
     {
-#if GCC_VERSION >= 3400
       /* Note that popcountl matches BITMAP_WORD in type, so the actual size
 	 of BITMAP_WORD is not material.  */
       count += __builtin_popcountl (elt->bits[ix]);
-#else
-      count += bitmap_popcount (elt->bits[ix]);
-#endif
       if (count > 1)
 	return false;
     }
@@ -1244,31 +1209,9 @@ bitmap_first_set_bit (const_bitmap a)
  found_bit:
   bit_no += ix * BITMAP_WORD_BITS;
 
-#if GCC_VERSION >= 3004
   gcc_assert (sizeof (long) == sizeof (word));
   bit_no += __builtin_ctzl (word);
-#else
-  /* Binary search for the first set bit.  */
-#if BITMAP_WORD_BITS > 64
-#error "Fill out the table."
-#endif
-#if BITMAP_WORD_BITS > 32
-  if (!(word & 0xffffffff))
-    word >>= 32, bit_no += 32;
-#endif
-  if (!(word & 0xffff))
-    word >>= 16, bit_no += 16;
-  if (!(word & 0xff))
-    word >>= 8, bit_no += 8;
-  if (!(word & 0xf))
-    word >>= 4, bit_no += 4;
-  if (!(word & 0x3))
-    word >>= 2, bit_no += 2;
-  if (!(word & 0x1))
-    word >>= 1, bit_no += 1;
-
- gcc_checking_assert (word & 1);
-#endif
+
  return bit_no;
 }
 
@@ -1302,22 +1245,8 @@ bitmap_last_set_bit (const_bitmap a)
   gcc_assert (elt->bits[ix] != 0);
  found_bit:
   bit_no += ix * BITMAP_WORD_BITS;
-#if GCC_VERSION >= 3004
   gcc_assert (sizeof (long) == sizeof (word));
   bit_no += BITMAP_WORD_BITS - __builtin_clzl (word) - 1;
-#else
-  /* Hopefully this is a twos-complement host...  */
-  BITMAP_WORD x = word;
-  x |= (x >> 1);
-  x |= (x >> 2);
-  x |= (x >> 4);
-  x |= (x >> 8);
-  x |= (x >> 16);
-#if BITMAP_WORD_BITS > 32
-  x |= (x >> 32);
-#endif
-  bit_no += bitmap_popcount (x) - 1;
-#endif
 
   return bit_no;
 }
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index 7fba443aff1..e7bf67a5474 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -708,20 +708,10 @@ bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 static inline void
 bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
 {
-#if (GCC_VERSION >= 3004)
-  {
-    unsigned int n = __builtin_ctzl (bi->bits);
-    gcc_assert (sizeof (unsigned long) == sizeof (BITMAP_WORD));
-    bi->bits >>= n;
-    *bit_no += n;
-  }
-#else
-  while (!(bi->bits & 1))
-    {
-      bi->bits >>= 1;
-      *bit_no += 1;
-    }
-#endif
+  unsigned int n = __builtin_ctzl (bi->bits);
+  gcc_assert (sizeof (unsigned long) == sizeof (BITMAP_WORD));
+  bi->bits >>= n;
+  *bit_no += n;
 }
 
 /* Advance to the next nonzero bit of a single bitmap, we will have
diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
index f9fb681a36c..445a391f0f8 100644
--- a/gcc/config/ia64/ia64.cc
+++ b/gcc/config/ia64/ia64.cc
@@ -6213,11 +6213,8 @@ ia64_safe_type (rtx_insn *insn)
    If a predicate register is written by an AND.ORCM we set WRITTEN_BY_AND
    to true; if it was written by an OR.ANDCM we set WRITTEN_BY_OR to true.  */
 
-#if GCC_VERSION >= 4000
 #define RWS_FIELD_TYPE __extension__ unsigned short
-#else
-#define RWS_FIELD_TYPE unsigned int
-#endif
+
 struct reg_write_state
 {
   RWS_FIELD_TYPE write_count : 2;
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 5fdb8f2c82c..dda886f89df 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -2591,9 +2591,7 @@ typedef struct GTY(()) machine_function
 
 #define TARGET_SUPPORTS_WIDE_INT 1
 
-#if (GCC_VERSION >= 3000)
 #pragma GCC poison TARGET_FLOAT128 OPTION_MASK_FLOAT128 MASK_FLOAT128
-#endif
 
 /* Whether a given VALUE is a valid 16 or 34-bit signed integer.  */
 #define SIGNED_INTEGER_NBIT_P(VALUE, N)					\
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index b9eb71fbc3a..b386fbe1ae9 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -631,7 +631,7 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
 #define BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK(NODE) \
   TREE_CHECK(NODE,BOUND_TEMPLATE_TEMPLATE_PARM)
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_TREE_CHECKING
 
 /* Returns t iff the node can have a TEMPLATE_INFO field.  */
 
@@ -2986,7 +2986,7 @@ struct GTY(()) lang_decl {
 #define STRIP_TEMPLATE(NODE) \
   (TREE_CODE (NODE) == TEMPLATE_DECL ? DECL_TEMPLATE_RESULT (NODE) : NODE)
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_TREE_CHECKING
 
 #define LANG_DECL_MIN_CHECK(NODE) __extension__			\
 ({ struct lang_decl *lt = DECL_LANG_SPECIFIC (NODE);		\
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index 056f10f13b4..a852d72dadf 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -6107,7 +6107,7 @@ cp_tree_c_finish_parsing ()
   deleted_copy_types = NULL;
 }
 \f
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_TREE_CHECKING
 /* Complain that some language-specific thing hanging off a tree
    node has been accessed improperly.  */
 
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 7c7a80e596e..fbd4d8e5ae6 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -949,7 +949,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define DEFAULT_USE_CXA_ATEXIT 0
 #endif
 
-#if GCC_VERSION >= 3000 && defined IN_GCC
+#ifdef IN_GCC
 /* These old constraint macros shouldn't appear anywhere in a
    configuration using MD constraint definitions.  */
 #endif
diff --git a/gcc/diagnostic-core.h b/gcc/diagnostic-core.h
index 286954ac2f8..0df0c896406 100644
--- a/gcc/diagnostic-core.h
+++ b/gcc/diagnostic-core.h
@@ -60,11 +60,7 @@ extern const char *trim_filename (const char *);
 /* None of these functions are suitable for ATTRIBUTE_PRINTF, because
    each language front end can extend them with its own set of format
    specifiers.  We must use custom format checks.  */
-#if (CHECKING_P && GCC_VERSION >= 4001) || GCC_VERSION == BUILDING_GCC_VERSION
 #define ATTRIBUTE_GCC_DIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m, n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_GCC_DIAG(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
      ATTRIBUTE_NORETURN;
 extern void internal_error_no_backtrace (const char *, ...)
diff --git a/gcc/dwarf2cfi.cc b/gcc/dwarf2cfi.cc
index 9ca97d7a3bf..c8e3d8eb223 100644
--- a/gcc/dwarf2cfi.cc
+++ b/gcc/dwarf2cfi.cc
@@ -45,9 +45,7 @@ along with GCC; see the file COPYING3.  If not see
    totally replaced in this file; make sure it stays that way.  */
 #undef DWARF2_UNWIND_INFO
 #undef DWARF2_FRAME_INFO
-#if (GCC_VERSION >= 3000)
- #pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
-#endif
+#pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
 
 #ifndef INCOMING_RETURN_ADDR_RTX
 #define INCOMING_RETURN_ADDR_RTX  (gcc_unreachable (), NULL_RTX)
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index ad1d804dcaf..ffc9365165f 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -133,9 +133,7 @@ int vms_file_stats_name (const char *, long long *, long *, char *, int *);
    totally replaced in this file; make sure it stays that way.  */
 #undef DWARF2_UNWIND_INFO
 #undef DWARF2_FRAME_INFO
-#if (GCC_VERSION >= 3000)
- #pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
-#endif
+#pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO
 
 /* The size of the target's pointer type.  */
 #ifndef PTR_SIZE
@@ -3370,10 +3368,8 @@ bool
 dwarf2out_default_as_loc_support (void)
 {
   return DWARF2_ASM_LINE_DEBUG_INFO;
-#if (GCC_VERSION >= 3000)
-# undef DWARF2_ASM_LINE_DEBUG_INFO
-# pragma GCC poison DWARF2_ASM_LINE_DEBUG_INFO
-#endif
+#undef DWARF2_ASM_LINE_DEBUG_INFO
+#pragma GCC poison DWARF2_ASM_LINE_DEBUG_INFO
 }
 
 /* Return true if GCC configure detected assembler support for views
@@ -3383,10 +3379,8 @@ bool
 dwarf2out_default_as_locview_support (void)
 {
   return DWARF2_ASM_VIEW_DEBUG_INFO;
-#if (GCC_VERSION >= 3000)
-# undef DWARF2_ASM_VIEW_DEBUG_INFO
-# pragma GCC poison DWARF2_ASM_VIEW_DEBUG_INFO
-#endif
+#undef DWARF2_ASM_VIEW_DEBUG_INFO
+#pragma GCC poison DWARF2_ASM_VIEW_DEBUG_INFO
 }
 
 /* A bit is set in ZERO_VIEW_P if we are using the assembler-supported
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 993879feda4..631bdeecc67 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -1072,11 +1072,7 @@ typedef struct
 
 /* In order for the "gfc" format checking to work correctly, you must
    have declared a typedef locus first.  */
-#if GCC_VERSION >= 4001
 #define ATTRIBUTE_GCC_GFC(m, n) __attribute__ ((__format__ (__gcc_gfc__, m, n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_GCC_GFC(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 
 
 /* Suppress error messages or re-enable them.  */
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index a4d863ca457..e54a9ec295a 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -163,9 +163,7 @@ env_manager::restore ()
 }
 
 /* Forbid other uses of getenv and putenv.  */
-#if (GCC_VERSION >= 3000)
 #pragma GCC poison getenv putenv
-#endif
 
 \f
 
diff --git a/gcc/genautomata.cc b/gcc/genautomata.cc
index e43314e4ea3..a290122f62c 100644
--- a/gcc/genautomata.cc
+++ b/gcc/genautomata.cc
@@ -879,7 +879,7 @@ struct state_ainsn_table
 /* Macros to access members of unions.  Use only them for access to
    union members of declarations and regexps.  */
 
-#if CHECKING_P && (GCC_VERSION >= 2007)
+#if CHECKING_P
 
 #define DECL_UNIT(d) __extension__					\
 (({ __typeof (d) const _decl = (d);					\
@@ -1070,7 +1070,7 @@ regexp_mode_check_failed (enum regexp_mode mode,
   exit (1);
 }
 
-#else /* #if CHECKING_P && (GCC_VERSION >= 2007) */
+#else /* #if CHECKING_P */
 
 #define DECL_UNIT(d) (&(d)->decl.unit)
 #define DECL_BYPASS(d) (&(d)->decl.bypass)
@@ -1088,7 +1088,7 @@ regexp_mode_check_failed (enum regexp_mode mode,
 #define REGEXP_ALLOF(r) (&(r)->regexp.allof)
 #define REGEXP_ONEOF(r) (&(r)->regexp.oneof)
 
-#endif /* #if CHECKING_P && (GCC_VERSION >= 2007) */
+#endif /* #if CHECKING_P */
 
 #define XCREATENODE(T) ((T *) create_node (sizeof (T)))
 #define XCREATENODEVEC(T, N) ((T *) create_node (sizeof (T) * (N)))
diff --git a/gcc/genconditions.cc b/gcc/genconditions.cc
index 202813dac8c..fcabd45fa58 100644
--- a/gcc/genconditions.cc
+++ b/gcc/genconditions.cc
@@ -58,7 +58,6 @@ write_header (void)
 /* It is necessary, but not entirely safe, to include the headers below\n\
    in a generator program.  As a defensive measure, don't do so when the\n\
    table isn't going to have anything in it.  */\n\
-#if GCC_VERSION >= 3001\n\
 \n\
 /* Do not allow checking to confuse the issue.  */\n\
 #undef CHECKING_P\n\
@@ -108,8 +107,7 @@ write_header (void)
 extern rtx_insn *insn;\n\
 extern rtx ins1;\n\
 extern rtx operands[];\n\
-\n\
-#endif /* gcc >= 3.0.1 */\n");
+\n");
 }
 
 /* Write out one entry in the conditions table, using the data pointed
@@ -170,12 +168,11 @@ struct c_test\n\
    vary at run time.  It works in 3.0.1 and later; 3.0 only when not\n\
    optimizing.  */\n\
 \n\
-#if GCC_VERSION >= 3001\n\
 static const struct c_test insn_conditions[] = {\n");
 
   traverse_c_tests (write_one_condition, 0);
 
-  puts ("\n};\n#endif /* gcc >= 3.0.1 */\n");
+  puts ("\n};\n");
 }
 
 /* Emit code which will convert the C-format table to a
@@ -191,7 +188,6 @@ write_writer (void)
 	"  unsigned int i;\n"
         "  const char *p;\n"
         "  puts (\"(define_conditions [\");\n"
-	"#if GCC_VERSION >= 3001\n"
 	"  for (i = 0; i < ARRAY_SIZE (insn_conditions); i++)\n"
 	"    {\n"
 	"      printf (\"  (%d \\\"\", insn_conditions[i].value);\n"
@@ -207,7 +203,6 @@ write_writer (void)
 	"        }\n"
         "      puts (\"\\\")\");\n"
         "    }\n"
-	"#endif /* gcc >= 3.0.1 */\n"
 	"  puts (\"])\");\n"
         "  fflush (stdout);\n"
         "return ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE;\n"
diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc
index 97f6f00fa68..f358fd5d2b1 100644
--- a/gcc/genmatch.cc
+++ b/gcc/genmatch.cc
@@ -70,9 +70,7 @@ linemap_client_expand_location_to_spelling_point (location_t loc,
 }
 
 static bool
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 5, 0)))
-#endif
 diagnostic_cb (cpp_reader *, enum cpp_diagnostic_level errtype,
 	       enum cpp_warning_reason, rich_location *richloc,
 	       const char *msg, va_list *ap)
@@ -115,9 +113,7 @@ notfound:
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 fatal_at (const cpp_token *tk, const char *msg, ...)
 {
   rich_location richloc (line_table, tk->src_loc);
@@ -128,9 +124,7 @@ fatal_at (const cpp_token *tk, const char *msg, ...)
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 fatal_at (location_t loc, const char *msg, ...)
 {
   rich_location richloc (line_table, loc);
@@ -141,9 +135,7 @@ fatal_at (location_t loc, const char *msg, ...)
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 warning_at (const cpp_token *tk, const char *msg, ...)
 {
   rich_location richloc (line_table, tk->src_loc);
@@ -154,9 +146,7 @@ warning_at (const cpp_token *tk, const char *msg, ...)
 }
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 2, 3)))
-#endif
 warning_at (location_t loc, const char *msg, ...)
 {
   rich_location richloc (line_table, loc);
@@ -169,9 +159,7 @@ warning_at (location_t loc, const char *msg, ...)
 /* Like fprintf, but print INDENT spaces at the beginning.  */
 
 static void
-#if GCC_VERSION >= 4001
 __attribute__((format (printf, 3, 4)))
-#endif
 fprintf_indent (FILE *f, unsigned int indent, const char *format, ...)
 {
   va_list ap;
diff --git a/gcc/genmodes.cc b/gcc/genmodes.cc
index 0185716f73b..5da3337fac1 100644
--- a/gcc/genmodes.cc
+++ b/gcc/genmodes.cc
@@ -1370,13 +1370,13 @@ emit_insn_modes_inline_h (void)
 #ifndef GCC_INSN_MODES_INLINE_H\n\
 #define GCC_INSN_MODES_INLINE_H");
 
-  puts ("\n#if !defined (USED_FOR_TARGET) && GCC_VERSION >= 4001\n");
+  puts ("\n#if !defined (USED_FOR_TARGET)\n");
   emit_mode_size_inline ();
   emit_mode_nunits_inline ();
   emit_mode_inner_inline ();
   emit_mode_unit_size_inline ();
   emit_mode_unit_precision_inline ();
-  puts ("#endif /* GCC_VERSION >= 4001 */");
+  puts ("#endif");
 
   puts ("\
 \n\
diff --git a/gcc/genoutput.cc b/gcc/genoutput.cc
index 6bb03e2864f..853bec0201d 100644
--- a/gcc/genoutput.cc
+++ b/gcc/genoutput.cc
@@ -291,7 +291,7 @@ output_insn_data (void)
 	break;
       }
 
-  printf ("#if GCC_VERSION >= 2007\n__extension__\n#endif\n");
+  printf ("\n__extension__\n");
   printf ("\nconst struct insn_data_d insn_data[] = \n{\n");
 
   for (d = idata; d; d = d->next)
diff --git a/gcc/ggc-page.cc b/gcc/ggc-page.cc
index 7a7a1b0901f..8fe07b80066 100644
--- a/gcc/ggc-page.cc
+++ b/gcc/ggc-page.cc
@@ -568,11 +568,7 @@ push_by_depth (page_entry *p, unsigned long *s)
   G.save_in_use[G.by_depth_in_use++] = s;
 }
 
-#if (GCC_VERSION < 3001)
-#define prefetch(X) ((void) X)
-#else
 #define prefetch(X) __builtin_prefetch (X)
-#endif
 
 #define save_in_use_p_i(__i) \
   (G.save_in_use[__i])
@@ -1340,12 +1336,7 @@ ggc_internal_alloc (size_t size, void (*f)(void *), size_t s, size_t n
 	  while (~entry->in_use_p[word] == 0)
 	    ++word;
 
-#if GCC_VERSION >= 3004
 	  bit = __builtin_ctzl (~entry->in_use_p[word]);
-#else
-	  while ((entry->in_use_p[word] >> bit) & 1)
-	    ++bit;
-#endif
 
 	  hint = word * HOST_BITS_PER_LONG + bit;
 	}
diff --git a/gcc/ggc-tests.cc b/gcc/ggc-tests.cc
index 620989489b6..d028da339e6 100644
--- a/gcc/ggc-tests.cc
+++ b/gcc/ggc-tests.cc
@@ -180,10 +180,8 @@ int test_struct_with_dtor::dtor_call_count;
 static void
 test_finalization ()
 {
-#if GCC_VERSION >= 4003
   ASSERT_FALSE (need_finalization_p <test_struct> ());
   ASSERT_TRUE (need_finalization_p <test_struct_with_dtor> ());
-#endif
 
   /* Create some garbage.  */
   const int count = 10;
diff --git a/gcc/ggc.h b/gcc/ggc.h
index aeec1bafb9b..0f72f368a72 100644
--- a/gcc/ggc.h
+++ b/gcc/ggc.h
@@ -170,11 +170,7 @@ template<typename T>
 inline bool
 need_finalization_p ()
 {
-#if GCC_VERSION >= 4003
   return !__has_trivial_destructor (T);
-#else
-  return true;
-#endif
 }
 
 template<typename T>
diff --git a/gcc/hwint.cc b/gcc/hwint.cc
index e53e0bf7906..fa2df400842 100644
--- a/gcc/hwint.cc
+++ b/gcc/hwint.cc
@@ -21,110 +21,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 
-#if GCC_VERSION < 3004
-
-/* The functions clz_hwi, ctz_hwi, ffs_hwi, floor_log2, ceil_log2,
-   and exact_log2 are defined as inline functions in hwint.h
-   if GCC_VERSION >= 3004.
-   The definitions here are used for older versions of GCC and
-   non-GCC bootstrap compilers.  */
-
-/* Given X, an unsigned number, return the largest int Y such that 2**Y <= X.
-   If X is 0, return -1.  */
-
-int
-floor_log2 (unsigned HOST_WIDE_INT x)
-{
-  int t = 0;
-
-  if (x == 0)
-    return -1;
-
-  if (HOST_BITS_PER_WIDE_INT > 64)
-    if (x >= HOST_WIDE_INT_1U << (t + 64))
-      t += 64;
-  if (HOST_BITS_PER_WIDE_INT > 32)
-    if (x >= HOST_WIDE_INT_1U << (t + 32))
-      t += 32;
-  if (x >= HOST_WIDE_INT_1U << (t + 16))
-    t += 16;
-  if (x >= HOST_WIDE_INT_1U << (t + 8))
-    t += 8;
-  if (x >= HOST_WIDE_INT_1U << (t + 4))
-    t += 4;
-  if (x >= HOST_WIDE_INT_1U << (t + 2))
-    t += 2;
-  if (x >= HOST_WIDE_INT_1U << (t + 1))
-    t += 1;
-
-  return t;
-}
-
-/* Given X, an unsigned number, return the least Y such that 2**Y >= X.  */
-
-int
-ceil_log2 (unsigned HOST_WIDE_INT x)
-{
-  return x == 0 ? 0 : floor_log2 (x - 1) + 1;
-}
-
-/* Return the logarithm of X, base 2, considering X unsigned,
-   if X is a power of 2.  Otherwise, returns -1.  */
-
-int
-exact_log2 (unsigned HOST_WIDE_INT x)
-{
-  if (!pow2p_hwi (x))
-    return -1;
-  return floor_log2 (x);
-}
-
-/* Given X, an unsigned number, return the number of least significant bits
-   that are zero.  When X == 0, the result is the word size.  */
-
-int
-ctz_hwi (unsigned HOST_WIDE_INT x)
-{
-  return x ? floor_log2 (least_bit_hwi (x)) : HOST_BITS_PER_WIDE_INT;
-}
-
-/* Similarly for most significant bits.  */
-
-int
-clz_hwi (unsigned HOST_WIDE_INT x)
-{
-  return HOST_BITS_PER_WIDE_INT - 1 - floor_log2 (x);
-}
-
-/* Similar to ctz_hwi, except that the least significant bit is numbered
-   starting from 1, and X == 0 yields 0.  */
-
-int
-ffs_hwi (unsigned HOST_WIDE_INT x)
-{
-  return 1 + floor_log2 (least_bit_hwi (x));
-}
-
-/* Return the number of set bits in X.  */
-
-int
-popcount_hwi (unsigned HOST_WIDE_INT x)
-{
-  int i, ret = 0;
-  size_t bits = sizeof (x) * CHAR_BIT;
-
-  for (i = 0; i < bits; i += 1)
-    {
-      ret += x & 1;
-      x >>= 1;
-    }
-
-  return ret;
-}
-
-#endif /* GCC_VERSION < 3004 */
-
-
 /* Compute the greatest common divisor of two numbers A and B using
    Euclid's algorithm.  */
 
diff --git a/gcc/hwint.h b/gcc/hwint.h
index c160bea0cb2..f3b5a779a65 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -28,18 +28,16 @@
 #define HOST_LONG_LONG_FORMAT "ll"
 #endif
 
-/* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined, but
-   GCC_VERSION >= 3000, assume this is the second or later stage of a
+/* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined
+   assume this is the second or later stage of a
    bootstrap, we do have long long, and it's 64 bits.  (This is
    required by C99; we do have some ports that violate that assumption
    but they're all cross-compile-only.)  Just in case, force a
    constraint violation if that assumption is incorrect.  */
 #if !defined HAVE_LONG_LONG
-# if GCC_VERSION >= 3000
-#  define HAVE_LONG_LONG 1
-#  define SIZEOF_LONG_LONG 8
+# define HAVE_LONG_LONG 1
+# define SIZEOF_LONG_LONG 8
 extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
-# endif
 #endif
 
 #ifdef HAVE_LONG_LONG
@@ -160,26 +158,6 @@ pow2p_hwi (unsigned HOST_WIDE_INT x)
   return x && pow2_or_zerop (x);
 }
 
-#if GCC_VERSION < 3004
-
-extern int clz_hwi (unsigned HOST_WIDE_INT x);
-extern int ctz_hwi (unsigned HOST_WIDE_INT x);
-extern int ffs_hwi (unsigned HOST_WIDE_INT x);
-
-/* Return the number of set bits in X.  */
-extern int popcount_hwi (unsigned HOST_WIDE_INT x);
-
-/* Return log2, or -1 if not exact.  */
-extern int exact_log2                  (unsigned HOST_WIDE_INT);
-
-/* Return floor of log2, with -1 for zero.  */
-extern int floor_log2                  (unsigned HOST_WIDE_INT);
-
-/* Return the smallest n such that 2**n >= X.  */
-extern int ceil_log2			(unsigned HOST_WIDE_INT);
-
-#else /* GCC_VERSION >= 3004 */
-
 /* For convenience, define 0 -> word_size.  */
 static inline int
 clz_hwi (unsigned HOST_WIDE_INT x)
@@ -251,8 +229,6 @@ exact_log2 (unsigned HOST_WIDE_INT x)
   return pow2p_hwi (x) ? ctz_hwi (x) : -1;
 }
 
-#endif /* GCC_VERSION >= 3004 */
-
 #define HOST_WIDE_INT_MIN (HOST_WIDE_INT) \
   (HOST_WIDE_INT_1U << (HOST_BITS_PER_WIDE_INT - 1))
 #define HOST_WIDE_INT_MAX (~(HOST_WIDE_INT_MIN))
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index 957604b22e9..c2231a5d9fb 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -151,7 +151,7 @@ extern int ira_loop_tree_height;
 extern ira_loop_tree_node_t ira_bb_nodes;
 
 /* Two access macros to the nodes representing basic blocks.  */
-#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_IRA_CHECKING
 #define IRA_BB_NODE_BY_INDEX(index) __extension__			\
 (({ ira_loop_tree_node_t _node = (&ira_bb_nodes[index]);		\
      if (_node->children != NULL || _node->loop != NULL || _node->bb == NULL)\
@@ -173,7 +173,7 @@ extern ira_loop_tree_node_t ira_bb_nodes;
 extern ira_loop_tree_node_t ira_loop_nodes;
 
 /* Two access macros to the nodes representing loops.  */
-#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_IRA_CHECKING
 #define IRA_LOOP_NODE_BY_INDEX(index) __extension__			\
 (({ ira_loop_tree_node_t const _node = (&ira_loop_nodes[index]);	\
      if (_node->children == NULL || _node->bb != NULL			\
@@ -655,7 +655,7 @@ extern int ira_move_loops_num, ira_additional_jumps_num;
 /* Set, clear or test bit number I in R, a bit vector of elements with
    minimal index and maximal index equal correspondingly to MIN and
    MAX.  */
-#if defined ENABLE_IRA_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_IRA_CHECKING
 
 #define SET_MINMAX_SET_BIT(R, I, MIN, MAX) __extension__	        \
   (({ int _min = (MIN), _max = (MAX), _i = (I);				\
diff --git a/gcc/jit/jit-common.h b/gcc/jit/jit-common.h
index 1a8cd8bac7b..fce31a63c3a 100644
--- a/gcc/jit/jit-common.h
+++ b/gcc/jit/jit-common.h
@@ -29,11 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-iterator.h"
 
 #ifdef GCC_VERSION
-#if GCC_VERSION >= 4001
 #define GNU_PRINTF(M, N) __attribute__ ((format (gnu_printf, (M), (N))))
-#else
-#define GNU_PRINTF(M, N)
-#endif
 #endif
 
 const int NUM_GCC_JIT_TYPES = GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE + 1;
diff --git a/gcc/machmode.h b/gcc/machmode.h
index 45df720df73..d84bdd5797d 100644
--- a/gcc/machmode.h
+++ b/gcc/machmode.h
@@ -545,12 +545,8 @@ complex_mode::includes_p (machine_mode m)
 ALWAYS_INLINE poly_uint16
 mode_to_bytes (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_size_inline (mode) : mode_size[mode]);
-#else
-  return mode_size[mode];
-#endif
 }
 
 /* Return the base GET_MODE_BITSIZE value for MODE.  */
@@ -574,13 +570,9 @@ mode_to_precision (machine_mode mode)
 ALWAYS_INLINE scalar_mode
 mode_to_inner (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return scalar_mode::from_int (__builtin_constant_p (mode)
 				? mode_inner_inline (mode)
 				: mode_inner[mode]);
-#else
-  return scalar_mode::from_int (mode_inner[mode]);
-#endif
 }
 
 /* Return the base GET_MODE_UNIT_SIZE value for MODE.  */
@@ -588,12 +580,8 @@ mode_to_inner (machine_mode mode)
 ALWAYS_INLINE unsigned char
 mode_to_unit_size (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_unit_size_inline (mode) : mode_unit_size[mode]);
-#else
-  return mode_unit_size[mode];
-#endif
 }
 
 /* Return the base GET_MODE_UNIT_PRECISION value for MODE.  */
@@ -601,12 +589,8 @@ mode_to_unit_size (machine_mode mode)
 ALWAYS_INLINE unsigned short
 mode_to_unit_precision (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_unit_precision_inline (mode) : mode_unit_precision[mode]);
-#else
-  return mode_unit_precision[mode];
-#endif
 }
 
 /* Return the base GET_MODE_NUNITS value for MODE.  */
@@ -614,12 +598,8 @@ mode_to_unit_precision (machine_mode mode)
 ALWAYS_INLINE poly_uint16
 mode_to_nunits (machine_mode mode)
 {
-#if GCC_VERSION >= 4001
   return (__builtin_constant_p (mode)
 	  ? mode_nunits_inline (mode) : mode_nunits[mode]);
-#else
-  return mode_nunits[mode];
-#endif
 }
 
 /* Get the size in bytes of an object of mode MODE.  */
diff --git a/gcc/output.h b/gcc/output.h
index 6dea630913a..2fce8b5c19f 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -115,11 +115,7 @@ extern void output_addr_const (FILE *, rtx);
 
 /* Output a string of assembler code, substituting numbers, strings
    and fixed syntactic prefixes.  */
-#if GCC_VERSION >= 3004
 #define ATTRIBUTE_ASM_FPRINTF(m, n) __attribute__ ((__format__ (__asm_fprintf__, m, n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_ASM_FPRINTF(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 
 extern void fprint_whex (FILE *, unsigned HOST_WIDE_INT);
 extern void fprint_ul (FILE *, unsigned long);
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index fc588447460..425ae339ae0 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -374,11 +374,7 @@ extern void pp_separate_with (pretty_printer *, char);
 
 /* This header may be included before diagnostics-core.h, hence the duplicate
    definitions to allow for GCC-specific formats.  */
-#if GCC_VERSION >= 3005
 #define ATTRIBUTE_GCC_PPDIAG(m, n) __attribute__ ((__format__ (GCC_PPDIAG_STYLE, m ,n))) ATTRIBUTE_NONNULL(m)
-#else
-#define ATTRIBUTE_GCC_PPDIAG(m, n) ATTRIBUTE_NONNULL(m)
-#endif
 extern void pp_printf (pretty_printer *, const char *, ...)
      ATTRIBUTE_GCC_PPDIAG(2,3);
 
diff --git a/gcc/rtl.cc b/gcc/rtl.cc
index f17474bfee1..5968bef1051 100644
--- a/gcc/rtl.cc
+++ b/gcc/rtl.cc
@@ -869,7 +869,7 @@ dump_rtx_statistics (void)
   fprintf (stderr, "-----------------------------------------------\n");
 }
 \f
-#if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_RTL_CHECKING
 
 /* Disable warnings about missing quoting in GCC diagnostics for
    the internal_error calls.  Their format strings deliberately don't
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 9df2fab622e..a2d307fbff5 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1076,7 +1076,7 @@ is_a_helper <rtx_note *>::test (rtx_insn *insn)
 
 /* General accessor macros for accessing the fields of an rtx.  */
 
-#if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_RTL_CHECKING
 /* The bit with a star outside the statement expr and an & inside is
    so that N can be evaluated only once.  */
 #define RTL_CHECK1(RTX, N, C1) __extension__				\
@@ -1257,7 +1257,7 @@ extern void rtvec_check_failed_bounds (const_rtvec, int, const char *, int,
 /* Access an individual rtx flag, with no checking of any kind.  */
 #define RTX_FLAG(RTX, FLAG)	((RTX)->FLAG)
 
-#if defined ENABLE_RTL_FLAG_CHECKING && (GCC_VERSION >= 2007)
+#if defined ENABLE_RTL_FLAG_CHECKING
 #define RTL_FLAG_CHECK1(NAME, RTX, C1) __extension__			\
 ({ __typeof (RTX) const _rtx = (RTX);					\
    if (GET_CODE (_rtx) != C1)						\
@@ -1823,7 +1823,7 @@ enum label_kind
   LABEL_WEAK_ENTRY	/* alternate entry point, exported as weak symbol */
 };
 
-#if defined ENABLE_RTL_FLAG_CHECKING && (GCC_VERSION > 2007)
+#if defined ENABLE_RTL_FLAG_CHECKING
 
 /* Retrieve the kind of LABEL.  */
 #define LABEL_KIND(LABEL) __extension__					\
diff --git a/gcc/sbitmap.cc b/gcc/sbitmap.cc
index 5ac2b6d0f67..0a6fddadab8 100644
--- a/gcc/sbitmap.cc
+++ b/gcc/sbitmap.cc
@@ -375,33 +375,6 @@ bitmap_bit_in_range_p (const_sbitmap bmap, unsigned int start, unsigned int end)
   return (bmap->elms[start_word] & mask) != 0;
 }
 
-#if GCC_VERSION < 3400
-/* Table of number of set bits in a character, indexed by value of char.  */
-static const unsigned char popcount_table[] =
-{
-    0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
-    3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
-};
-
-static unsigned long
-sbitmap_popcount (SBITMAP_ELT_TYPE a)
-{
-  unsigned long ret = 0;
-  unsigned i;
-
-  /* Just do this the table way for now  */
-  for (i = 0; i < HOST_BITS_PER_WIDEST_FAST_INT; i += 8)
-    ret += popcount_table[(a >> i) & 0xff];
-  return ret;
-}
-#endif
-
 /* Count and return the number of bits set in the bitmap BMAP.  */
 
 unsigned int
@@ -411,16 +384,12 @@ bitmap_count_bits (const_sbitmap bmap)
   for (unsigned int i = 0; i < bmap->size; i++)
     if (bmap->elms[i])
       {
-#if GCC_VERSION < 3400
-	count += sbitmap_popcount (bmap->elms[i]);
-#else
-# if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
+#if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
 	count += __builtin_popcountl (bmap->elms[i]);
-# elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
+#elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
 	count += __builtin_popcountll (bmap->elms[i]);
-# else
+#else
 	count += __builtin_popcount (bmap->elms[i]);
-# endif
 #endif
       }
   return count;
diff --git a/gcc/stringpool.h b/gcc/stringpool.h
index 5e301c6011b..b43110cc7a0 100644
--- a/gcc/stringpool.h
+++ b/gcc/stringpool.h
@@ -33,11 +33,9 @@ extern tree maybe_get_identifier (const char *);
    known.  */
 extern tree get_identifier_with_length (const char *, size_t);
 
-#if GCC_VERSION >= 3000
 #define get_identifier(str) \
   (__builtin_constant_p (str)				\
     ? get_identifier_with_length ((str), strlen (str))  \
     : get_identifier (str))
-#endif
 
 #endif  // GCC_STRINGPOOL_H
diff --git a/gcc/system.h b/gcc/system.h
index c25cd64366f..c4660e09499 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -595,17 +595,15 @@ extern int vsnprintf (char *, size_t, const char *, va_list);
 #ifdef __cplusplus
 #define HAVE_DESIGNATED_INITIALIZERS 0
 #else
-#define HAVE_DESIGNATED_INITIALIZERS \
-  ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))
+#define HAVE_DESIGNATED_INITIALIZERS 1
 #endif
 #endif
 
 #if !defined(HAVE_DESIGNATED_UNION_INITIALIZERS)
 #ifdef __cplusplus
-#define HAVE_DESIGNATED_UNION_INITIALIZERS (GCC_VERSION >= 4007)
+#define HAVE_DESIGNATED_UNION_INITIALIZERS 1
 #else
-#define HAVE_DESIGNATED_UNION_INITIALIZERS \
-  ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))
+#define HAVE_DESIGNATED_UNION_INITIALIZERS 1
 #endif
 #endif
 
@@ -721,20 +719,6 @@ extern int vsnprintf (char *, size_t, const char *, va_list);
 #define offsetof(TYPE, MEMBER)	((size_t) &((TYPE *) 0)->MEMBER)
 #endif
 
-/* Various error reporting routines want to use __FUNCTION__.  */
-#if (GCC_VERSION < 2007)
-#ifndef __FUNCTION__
-#define __FUNCTION__ "?"
-#endif /* ! __FUNCTION__ */
-#endif
-
-/* __builtin_expect(A, B) evaluates to A, but notifies the compiler that
-   the most likely value of A is B.  This feature was added at some point
-   between 2.95 and 3.0.  Let's use 3.0 as the lower bound for now.  */
-#if (GCC_VERSION < 3000)
-#define __builtin_expect(a, b) (a)
-#endif
-
 /* Some of the headers included by <memory> can use "abort" within a
    namespace, e.g. "_VSTD::abort();", which fails after we use the
    preprocessor to redefine "abort" as "fancy_abort" below.  */
@@ -780,12 +764,9 @@ extern void fancy_abort (const char *, int, const char *)
 #if ENABLE_ASSERT_CHECKING
 #define gcc_assert(EXPR) 						\
    ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0))
-#elif (GCC_VERSION >= 4005)
+#else
 #define gcc_assert(EXPR) 						\
   ((void)(__builtin_expect (!(EXPR), 0) ? __builtin_unreachable (), 0 : 0))
-#else
-/* Include EXPR, so that unused variable warnings do not occur.  */
-#define gcc_assert(EXPR) ((void)(0 && (EXPR)))
 #endif
 
 #if CHECKING_P
@@ -795,21 +776,13 @@ extern void fancy_abort (const char *, int, const char *)
 #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR)))
 #endif
 
-#if GCC_VERSION >= 4000
 #define ALWAYS_INLINE inline __attribute__ ((always_inline))
-#else
-#define ALWAYS_INLINE inline
-#endif
 
-#if GCC_VERSION >= 3004
 #define WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
-#else
-#define WARN_UNUSED_RESULT
-#endif
 
 /* Use gcc_unreachable() to mark unreachable locations (like an
    unreachable default case of a switch.  Do not use gcc_assert(0).  */
-#if (GCC_VERSION >= 4005) && !ENABLE_ASSERT_CHECKING
+#if !ENABLE_ASSERT_CHECKING
 #define gcc_unreachable() __builtin_unreachable ()
 #else
 #define gcc_unreachable() (fancy_abort (__FILE__, __LINE__, __FUNCTION__))
@@ -825,11 +798,7 @@ extern void fancy_abort (const char *, int, const char *)
 # define gcc_fallthrough()
 #endif
 
-#if GCC_VERSION >= 3001
 #define STATIC_CONSTANT_P(X) (__builtin_constant_p (X) && (X))
-#else
-#define STATIC_CONSTANT_P(X) (false && (X))
-#endif
 
 /* static_assert (COND, MESSAGE) is available in C++11 onwards.  */
 #if __cplusplus >= 201103L
@@ -870,12 +839,6 @@ extern void fancy_abort (const char *, int, const char *)
 /* Some compilers do not allow the use of unsigned char in bitfields.  */
 #define BOOL_BITFIELD unsigned int
 
-/* GCC older than 4.4 have broken C++ value initialization handling, see
-   PR11309, PR30111, PR33916, PR82939 and PR84405 for more details.  */
-#if GCC_VERSION > 0 && GCC_VERSION < 4004 && !defined(__clang__)
-# define BROKEN_VALUE_INITIALIZATION
-#endif
-
 /* As the last action in this file, we poison the identifiers that
    shouldn't be used.  Note, luckily gcc-3.0's token-based integrated
    preprocessor won't trip on poisoned identifiers that arrive from
@@ -898,8 +861,6 @@ extern void fancy_abort (const char *, int, const char *)
 #define realloc xrealloc
 #endif
 
-#if (GCC_VERSION >= 3000)
-
 /* Note autoconf checks for prototype declarations and includes
    system.h while doing so.  Only poison these tokens if actually
    compiling gcc, so that the autoconf declaration tests for malloc
@@ -1129,8 +1090,6 @@ extern void fancy_abort (const char *, int, const char *)
    'if (flag_checking)', or with CHECKING_P macro.  */
 #pragma GCC poison ENABLE_CHECKING
 
-#endif /* GCC >= 3.0 */
-
 /* This macro allows casting away const-ness to pass -Wcast-qual
    warnings.  DO NOT USE THIS UNLESS YOU REALLY HAVE TO!  It should
    only be used in certain specific cases.  One valid case is where
@@ -1150,7 +1109,7 @@ extern void fancy_abort (const char *, int, const char *)
 #ifdef __cplusplus
 #define CONST_CAST2(TOTYPE,FROMTYPE,X) (const_cast<TOTYPE> (X))
 #else
-#if defined(__GNUC__) && GCC_VERSION > 4000
+#ifdef __GNUC__
 /* GCC 4.0.x has a bug where it may ICE on this expression,
    so does GCC 3.4.x (PR17436).  */
 #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
@@ -1181,13 +1140,9 @@ helper_const_non_const_cast (const char *p)
 
 /* Activate certain diagnostics as warnings (not errors via the
    -Werror flag).  */
-#if GCC_VERSION >= 4003
-/* If asserts are disabled, activate -Wuninitialized as a warning (not
-   an error/-Werror).  */
 #ifndef ENABLE_ASSERT_CHECKING
 #pragma GCC diagnostic warning "-Wuninitialized"
 #endif
-#endif
 
 #ifdef ENABLE_VALGRIND_ANNOTATIONS
 # ifdef HAVE_VALGRIND_MEMCHECK_H
@@ -1228,13 +1183,8 @@ helper_const_non_const_cast (const char *p)
 
 /* In LTO -fwhole-program build we still want to keep the debug functions available
    for debugger.  Mark them as used to prevent removal.  */
-#if (GCC_VERSION > 4000)
 #define DEBUG_FUNCTION __attribute__ ((__used__))
 #define DEBUG_VARIABLE __attribute__ ((__used__))
-#else
-#define DEBUG_FUNCTION
-#define DEBUG_VARIABLE
-#endif
 
 /* General macro to extract bit Y of X.  */
 #define TEST_BIT(X, Y) (((X) >> (Y)) & 1)
diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc
index 62946450b13..af51dd665ce 100644
--- a/gcc/tree-vrp.cc
+++ b/gcc/tree-vrp.cc
@@ -2955,12 +2955,7 @@ vrp_asserts::find_switch_asserts (basic_block bb, gswitch *last)
   edge e;
   struct case_info *ci;
   size_t n = gimple_switch_num_labels (last);
-#if GCC_VERSION >= 4000
   unsigned int idx;
-#else
-  /* Work around GCC 3.4 bug (PR 37086).  */
-  volatile unsigned int idx;
-#endif
 
   bsi = gsi_for_stmt (last);
   op = gimple_switch_index (last);
diff --git a/gcc/tree.cc b/gcc/tree.cc
index 9d445b2740f..b99c44c9592 100644
--- a/gcc/tree.cc
+++ b/gcc/tree.cc
@@ -8658,7 +8658,7 @@ get_file_function_name (const char *type)
   return get_identifier (buf);
 }
 \f
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 /* Complain that the tree code of NODE does not match the expected 0
    terminated list of trailing codes. The trailing code list can be
diff --git a/gcc/tree.h b/gcc/tree.h
index 4c01d94244e..6d9e2a21332 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -246,7 +246,7 @@ as_internal_fn (combined_fn code)
 
 /* When checking is enabled, errors will be generated if a tree node
    is accessed incorrectly. The macros die with a fatal error.  */
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 #define TREE_CHECK(T, CODE) \
 (tree_check ((T), __FILE__, __LINE__, __FUNCTION__, (CODE)))
@@ -2815,16 +2815,12 @@ extern void decl_value_expr_insert (tree, tree);
 /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set.  */
 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
 
-#if (GCC_VERSION >= 2007)
 #define DECL_RTL_KNOWN_SET(decl) __extension__				\
 ({  tree const __d = (decl);						\
     gcc_checking_assert (DECL_RTL_SET_P (__d));				\
     /* Dereference it so the compiler knows it can't be NULL even	\
        without assertion checking.  */					\
     &*DECL_RTL_IF_SET (__d); })
-#else
-#define DECL_RTL_KNOWN_SET(decl) (&*DECL_RTL_IF_SET (decl))
-#endif
 
 /* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'.  */
 #define DECL_REGISTER(NODE) (DECL_WRTL_CHECK (NODE)->decl_common.decl_flag_0)
@@ -3432,7 +3428,7 @@ extern tree build_target_option_node (struct gcc_options *opts,
 
 extern void prepare_target_option_nodes_for_pch (void);
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 inline tree
 tree_check (tree __t, const char *__f, int __l, const char *__g, tree_code __c)
@@ -3647,10 +3643,8 @@ tree_int_cst_elt_check (tree __t, int __i,
 
 /* Workaround -Wstrict-overflow false positive during profiledbootstrap.  */
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wstrict-overflow"
-#endif
 
 inline tree *
 tree_vec_elt_check (tree __t, int __i,
@@ -3663,9 +3657,7 @@ tree_vec_elt_check (tree __t, int __i,
   return &CONST_CAST_TREE (__t)->vec.a[__i];
 }
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic pop
-#endif
 
 inline tree *
 omp_clause_elt_check (tree __t, int __i,
@@ -3873,10 +3865,8 @@ non_type_check (const_tree __t, const char *__f, int __l, const char *__g)
   return __t;
 }
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wstrict-overflow"
-#endif
 
 inline const_tree *
 tree_vec_elt_check (const_tree __t, int __i,
@@ -3890,9 +3880,7 @@ tree_vec_elt_check (const_tree __t, int __i,
   //return &__t->vec.a[__i];
 }
 
-# if GCC_VERSION >= 4006
 #pragma GCC diagnostic pop
-#endif
 
 inline const_tree *
 omp_clause_elt_check (const_tree __t, int __i,
@@ -3929,7 +3917,7 @@ tree_operand_length (const_tree node)
     return TREE_CODE_LENGTH (TREE_CODE (node));
 }
 
-#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#ifdef ENABLE_TREE_CHECKING
 
 /* Special checks for TREE_OPERANDs.  */
 inline tree *
@@ -4663,7 +4651,7 @@ extern unsigned HOST_WIDE_INT tree_to_uhwi (const_tree)
   ATTRIBUTE_NONNULL (1) ATTRIBUTE_PURE;
 extern poly_uint64 tree_to_poly_uint64 (const_tree)
   ATTRIBUTE_NONNULL (1) ATTRIBUTE_PURE;
-#if !defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 4003)
+#ifndef ENABLE_TREE_CHECKING
 extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
 tree_to_shwi (const_tree t)
 {
diff --git a/gcc/var-tracking.cc b/gcc/var-tracking.cc
index 7c3ad0a55bd..2a3a0684e97 100644
--- a/gcc/var-tracking.cc
+++ b/gcc/var-tracking.cc
@@ -404,7 +404,7 @@ int_mem_offset (const_rtx mem)
   return 0;
 }
 
-#if CHECKING_P && (GCC_VERSION >= 2007)
+#if CHECKING_P
 
 /* Access VAR's Ith part's offset, checking that it's not a one-part
    variable.  */
diff --git a/gcc/vec.h b/gcc/vec.h
index 3ba7ea7edc2..3cb2772301c 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -295,10 +295,8 @@ va_heap::reserve (vec<T, va_heap, vl_embed> *&v, unsigned reserve, bool exact
 }
 
 
-#if GCC_VERSION >= 4007
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wfree-nonheap-object"
-#endif
 
 /* Free the heap space allocated for vector V.  */
 
@@ -317,9 +315,7 @@ va_heap::release (vec<T, va_heap, vl_embed> *&v)
   v = NULL;
 }
 
-#if GCC_VERSION >= 4007
 #pragma GCC diagnostic pop
-#endif
 
 /* Allocator type for GC vectors.  Notice that we need the structure
    declaration even if GC is not enabled.  */
@@ -2349,8 +2345,6 @@ make_array_slice (T *base, unsigned int size)
   return array_slice<T> (base, size);
 }
 
-#if (GCC_VERSION >= 3000)
-# pragma GCC poison m_vec m_vecpfx m_vecdata
-#endif
+#pragma GCC poison m_vec m_vecpfx m_vecdata
 
 #endif // GCC_VEC_H
diff --git a/gcc/wide-int.cc b/gcc/wide-int.cc
index f61b9fefc13..ffd96e6b9d9 100644
--- a/gcc/wide-int.cc
+++ b/gcc/wide-int.cc
@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3.  If not see
 
 #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
 /* Do not include longlong.h when compiler is clang-based. See PR61146.  */
-#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) && !defined(__clang__)
+#if (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__)) && !defined(__clang__)
 typedef unsigned HOST_HALF_WIDE_INT UHWtype;
 typedef unsigned HOST_WIDE_INT UWtype;
 typedef unsigned int UQItype __attribute__ ((mode (QI)));


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-05-04 13:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-04 13:40 [gcc(refs/users/marxin/heads/fold-GCC_VERSION-for-old)] Fold GCC_VERSION >= $old_release to TRUE Martin Liska
  -- strict thread matches above, loose matches on Subject: below --
2022-02-01 12:11 Martin Liska

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).