public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] don't declare header-defined functions both static and inline
@ 2023-01-31  3:37 Patrick Palka
  2023-01-31  7:05 ` Richard Biener
  0 siblings, 1 reply; 9+ messages in thread
From: Patrick Palka @ 2023-01-31  3:37 UTC (permalink / raw)
  To: gcc-patches; +Cc: Patrick Palka

Many functions defined in our headers are declared 'static inline' which
is a vestige from when GCC's implementation language was C.  But in C++
the inline keyword is more than just a compiler hint, and is sufficient
to give the function the intended semantics.  In fact declaring a
(namespace-scope) function both static and inline is a pessimization
since static effectively disables the intended definition merging
behavior that inline provides, and is also a source of (harmless) ODR
violations when a static inline function gets called from a non-static
inline one (such as tree_operand_length being called from
tree_operand_check).

This patch mechanically fixes the vast majority of occurrences of this
anti-pattern throughout the compiler's headers via the command line

  echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'

Besides fixing the ODR violations, this speeds up stage1 cc1plus by
about 2% and reduces the size of its text segment by 1.5MB.

Bootstrapped and regtested on x86_64-pc-linux-gnu, would this be OK to
push now or wait for stage1?

gcc/ChangeLog:

	* addresses.h: Mechanically drop 'static' from 'static inline'
	functions via s/^static inline/inline/g.
	* asan.h: Likewise.
	* attribs.h: Likewise.
	* basic-block.h: Likewise.
	* bitmap.h: Likewise.
	* cfghooks.h: Likewise.
	* cfgloop.h: Likewise.
	* cgraph.h: Likewise.
	* cselib.h: Likewise.
	* data-streamer.h: Likewise.
	* debug.h: Likewise.
	* df.h: Likewise.
	* diagnostic.h: Likewise.
	* dominance.h: Likewise.
	* dumpfile.h: Likewise.
	* emit-rtl.h: Likewise.
	* except.h: Likewise.
	* expmed.h: Likewise.
	* expr.h: Likewise.
	* fixed-value.h: Likewise.
	* gengtype.h: Likewise.
	* gimple-expr.h: Likewise.
	* gimple-iterator.h: Likewise.
	* gimple-predict.h: Likewise.
	* gimple-range-fold.h: Likewise.
	* gimple-ssa.h: Likewise.
	* gimple.h: Likewise.
	* graphite.h: Likewise.
	* hard-reg-set.h: Likewise.
	* hash-map.h: Likewise.
	* hash-set.h: Likewise.
	* hash-table.h: Likewise.
	* hwint.h: Likewise.
	* input.h: Likewise.
	* insn-addr.h: Likewise.
	* internal-fn.h: Likewise.
	* ipa-fnsummary.h: Likewise.
	* ipa-icf-gimple.h: Likewise.
	* ipa-inline.h: Likewise.
	* ipa-modref.h: Likewise.
	* ipa-prop.h: Likewise.
	* ira-int.h: Likewise.
	* ira.h: Likewise.
	* lra-int.h: Likewise.
	* lra.h: Likewise.
	* lto-streamer.h: Likewise.
	* memmodel.h: Likewise.
	* omp-general.h: Likewise.
	* optabs-query.h: Likewise.
	* optabs.h: Likewise.
	* plugin.h: Likewise.
	* pretty-print.h: Likewise.
	* range.h: Likewise.
	* read-md.h: Likewise.
	* recog.h: Likewise.
	* regs.h: Likewise.
	* rtl-iter.h: Likewise.
	* rtl.h: Likewise.
	* sbitmap.h: Likewise.
	* sched-int.h: Likewise.
	* sel-sched-ir.h: Likewise.
	* sese.h: Likewise.
	* sparseset.h: Likewise.
	* ssa-iterators.h: Likewise.
	* system.h: Likewise.
	* target-globals.h: Likewise.
	* target.h: Likewise.
	* timevar.h: Likewise.
	* tree-chrec.h: Likewise.
	* tree-data-ref.h: Likewise.
	* tree-iterator.h: Likewise.
	* tree-outof-ssa.h: Likewise.
	* tree-phinodes.h: Likewise.
	* tree-scalar-evolution.h: Likewise.
	* tree-sra.h: Likewise.
	* tree-ssa-alias.h: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-ssa-loop-manip.h: Likewise.
	* tree-ssa-loop.h: Likewise.
	* tree-ssa-operands.h: Likewise.
	* tree-ssa-propagate.h: Likewise.
	* tree-ssa-sccvn.h: Likewise.
	* tree-ssa.h: Likewise.
	* tree-ssanames.h: Likewise.
	* tree-streamer.h: Likewise.
	* tree-switch-conversion.h: Likewise.
	* tree-vectorizer.h: Likewise.
	* tree.h: Likewise.
	* wide-int.h: Likewise.

gcc/c-family/ChangeLog:

	* c-common.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/c/ChangeLog:

	* c-parser.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/cp/ChangeLog:

	* cp-tree.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/fortran/ChangeLog:

	* gfortran.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/jit/ChangeLog:

	* jit-dejagnu.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.
	* jit-recording.h: Likewise.

gcc/objc/ChangeLog:

	* objc-act.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.
	* objc-map.h: Likewise.
---
 gcc/addresses.h              |    6 +-
 gcc/asan.h                   |   14 +-
 gcc/attribs.h                |   16 +-
 gcc/basic-block.h            |   54 +-
 gcc/bitmap.h                 |   20 +-
 gcc/c-family/c-common.h      |    2 +-
 gcc/c/c-parser.h             |    6 +-
 gcc/cfghooks.h               |    2 +-
 gcc/cfgloop.h                |   36 +-
 gcc/cgraph.h                 |    6 +-
 gcc/cp/cp-tree.h             |    2 +-
 gcc/cselib.h                 |    4 +-
 gcc/data-streamer.h          |   30 +-
 gcc/debug.h                  |    2 +-
 gcc/df.h                     |   26 +-
 gcc/diagnostic.h             |   12 +-
 gcc/dominance.h              |    2 +-
 gcc/dumpfile.h               |   16 +-
 gcc/emit-rtl.h               |   14 +-
 gcc/except.h                 |    2 +-
 gcc/expmed.h                 |  102 ++--
 gcc/expr.h                   |   14 +-
 gcc/fixed-value.h            |    2 +-
 gcc/fortran/gfortran.h       |    4 +-
 gcc/gengtype.h               |   12 +-
 gcc/gimple-expr.h            |   18 +-
 gcc/gimple-iterator.h        |   48 +-
 gcc/gimple-predict.h         |   10 +-
 gcc/gimple-range-fold.h      |    6 +-
 gcc/gimple-ssa.h             |   14 +-
 gcc/gimple.h                 | 1026 +++++++++++++++++-----------------
 gcc/graphite.h               |   24 +-
 gcc/hard-reg-set.h           |   18 +-
 gcc/hash-map.h               |    8 +-
 gcc/hash-set.h               |    6 +-
 gcc/hash-table.h             |    6 +-
 gcc/hwint.h                  |   26 +-
 gcc/input.h                  |   12 +-
 gcc/insn-addr.h              |    2 +-
 gcc/internal-fn.h            |    6 +-
 gcc/ipa-fnsummary.h          |    2 +-
 gcc/ipa-icf-gimple.h         |    6 +-
 gcc/ipa-inline.h             |   10 +-
 gcc/ipa-modref.h             |    2 +-
 gcc/ipa-prop.h               |   70 +--
 gcc/ira-int.h                |   50 +-
 gcc/ira.h                    |    2 +-
 gcc/jit/jit-dejagnu.h        |   16 +-
 gcc/jit/jit-recording.h      |    2 +-
 gcc/lra-int.h                |   14 +-
 gcc/lra.h                    |    2 +-
 gcc/lto-streamer.h           |   54 +-
 gcc/memmodel.h               |   18 +-
 gcc/objc/objc-act.h          |    6 +-
 gcc/objc/objc-map.h          |   12 +-
 gcc/omp-general.h            |    2 +-
 gcc/optabs-query.h           |    8 +-
 gcc/optabs.h                 |   14 +-
 gcc/plugin.h                 |    2 +-
 gcc/pretty-print.h           |   10 +-
 gcc/range.h                  |    6 +-
 gcc/read-md.h                |    4 +-
 gcc/recog.h                  |    8 +-
 gcc/regs.h                   |   22 +-
 gcc/rtl-iter.h               |    2 +-
 gcc/rtl.h                    |   34 +-
 gcc/sbitmap.h                |   16 +-
 gcc/sched-int.h              |    8 +-
 gcc/sel-sched-ir.h           |   48 +-
 gcc/sese.h                   |   30 +-
 gcc/sparseset.h              |   22 +-
 gcc/ssa-iterators.h          |   86 +--
 gcc/system.h                 |    6 +-
 gcc/target-globals.h         |    2 +-
 gcc/target.h                 |    6 +-
 gcc/timevar.h                |    4 +-
 gcc/tree-chrec.h             |   22 +-
 gcc/tree-data-ref.h          |   24 +-
 gcc/tree-iterator.h          |   16 +-
 gcc/tree-outof-ssa.h         |    4 +-
 gcc/tree-phinodes.h          |    4 +-
 gcc/tree-scalar-evolution.h  |    6 +-
 gcc/tree-sra.h               |    2 +-
 gcc/tree-ssa-alias.h         |    2 +-
 gcc/tree-ssa-live.h          |   24 +-
 gcc/tree-ssa-loop-manip.h    |    2 +-
 gcc/tree-ssa-loop.h          |    2 +-
 gcc/tree-ssa-operands.h      |    4 +-
 gcc/tree-ssa-propagate.h     |    4 +-
 gcc/tree-ssa-sccvn.h         |   10 +-
 gcc/tree-ssa.h               |   12 +-
 gcc/tree-ssanames.h          |   10 +-
 gcc/tree-streamer.h          |    8 +-
 gcc/tree-switch-conversion.h |    2 +-
 gcc/tree-vectorizer.h        |   64 +--
 gcc/tree.h                   |   88 +--
 gcc/wide-int.h               |    2 +-
 97 files changed, 1277 insertions(+), 1277 deletions(-)

diff --git a/gcc/addresses.h b/gcc/addresses.h
index 05a2401730d..3519c241c6d 100644
--- a/gcc/addresses.h
+++ b/gcc/addresses.h
@@ -24,7 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_ADDRESSES_H
 #define GCC_ADDRESSES_H
 
-static inline enum reg_class
+inline enum reg_class
 base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
 		addr_space_t as ATTRIBUTE_UNUSED,
 		enum rtx_code outer_code ATTRIBUTE_UNUSED,
@@ -51,7 +51,7 @@ base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
    REGNO_OK_FOR_BASE_P.
    Arguments as for the REGNO_MODE_CODE_OK_FOR_BASE_P macro.  */
 
-static inline bool
+inline bool
 ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
 		 machine_mode mode ATTRIBUTE_UNUSED,
 		 addr_space_t as ATTRIBUTE_UNUSED,
@@ -77,7 +77,7 @@ ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
 /* Wrapper around ok_for_base_p_1, for use after register allocation is
    complete.  Arguments as for the called function.  */
 
-static inline bool
+inline bool
 regno_ok_for_base_p (unsigned regno, machine_mode mode, addr_space_t as,
 		     enum rtx_code outer_code, enum rtx_code index_code)
 {
diff --git a/gcc/asan.h b/gcc/asan.h
index 902e93b848a..f047bbc1040 100644
--- a/gcc/asan.h
+++ b/gcc/asan.h
@@ -139,7 +139,7 @@ extern bool asan_mark_p (gimple *stmt, enum asan_mark_flags flag);
 /* Return the size of padding needed to insert after a protected
    decl of SIZE.  */
 
-static inline unsigned int
+inline unsigned int
 asan_red_zone_size (unsigned int size)
 {
   unsigned int c = size & (ASAN_RED_ZONE_SIZE - 1);
@@ -149,7 +149,7 @@ asan_red_zone_size (unsigned int size)
 /* Return how much a stack variable occupis on a stack
    including a space for red zone.  */
 
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 asan_var_and_redzone_size (unsigned HOST_WIDE_INT size)
 {
   if (size <= 4)
@@ -181,7 +181,7 @@ extern hash_set<tree> *asan_handled_variables;
 /* Return TRUE if builtin with given FCODE will be intercepted by
    libasan.  */
 
-static inline bool
+inline bool
 asan_intercepted_p (enum built_in_function fcode)
 {
   if (hwasan_sanitize_p ())
@@ -212,7 +212,7 @@ asan_intercepted_p (enum built_in_function fcode)
 
 /* Return TRUE if we should instrument for use-after-scope sanity checking.  */
 
-static inline bool
+inline bool
 asan_sanitize_use_after_scope (void)
 {
   return (flag_sanitize_address_use_after_scope
@@ -221,7 +221,7 @@ asan_sanitize_use_after_scope (void)
 
 /* Return true if DECL should be guarded on the stack.  */
 
-static inline bool
+inline bool
 asan_protect_stack_decl (tree decl)
 {
   return DECL_P (decl)
@@ -232,7 +232,7 @@ asan_protect_stack_decl (tree decl)
 /* Return true when flag_sanitize & FLAG is non-zero.  If FN is non-null,
    remove all flags mentioned in "no_sanitize" of DECL_ATTRIBUTES.  */
 
-static inline bool
+inline bool
 sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
 {
   unsigned int result_flags = flag_sanitize & flag;
@@ -251,7 +251,7 @@ sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
 
 /* Return true when coverage sanitization should happend for FN function.  */
 
-static inline bool
+inline bool
 sanitize_coverage_p (const_tree fn = current_function_decl)
 {
   return (flag_sanitize_coverage
diff --git a/gcc/attribs.h b/gcc/attribs.h
index 140e70b64e0..84a43658a70 100644
--- a/gcc/attribs.h
+++ b/gcc/attribs.h
@@ -148,7 +148,7 @@ canonicalize_attr_name (const char *&s, T &l)
 /* For a given IDENTIFIER_NODE, strip leading and trailing '_' characters
    so that we have a canonical form of attribute names.  */
 
-static inline tree
+inline tree
 canonicalize_attr_name (tree attr_name)
 {
   size_t l = IDENTIFIER_LENGTH (attr_name);
@@ -163,7 +163,7 @@ canonicalize_attr_name (tree attr_name)
 /* Compare attribute identifiers ATTR1 and ATTR2 with length ATTR1_LEN and
    ATTR2_LEN.  */
 
-static inline bool
+inline bool
 cmp_attribs (const char *attr1, size_t attr1_len,
 	     const char *attr2, size_t attr2_len)
 {
@@ -172,7 +172,7 @@ cmp_attribs (const char *attr1, size_t attr1_len,
 
 /* Compare attribute identifiers ATTR1 and ATTR2.  */
 
-static inline bool
+inline bool
 cmp_attribs (const char *attr1, const char *attr2)
 {
   return cmp_attribs (attr1, strlen (attr1), attr2, strlen (attr2));
@@ -181,7 +181,7 @@ cmp_attribs (const char *attr1, const char *attr2)
 /* Given an identifier node IDENT and a string ATTR_NAME, return true
    if the identifier node is a valid attribute name for the string.  */
 
-static inline bool
+inline bool
 is_attribute_p (const char *attr_name, const_tree ident)
 {
   return cmp_attribs (attr_name, strlen (attr_name),
@@ -193,7 +193,7 @@ is_attribute_p (const char *attr_name, const_tree ident)
    for standard attribute (NULL get_attribute_namespace) or "gnu"
    namespace.  */
 
-static inline bool
+inline bool
 is_attribute_namespace_p (const char *attr_ns, const_tree attr)
 {
   tree ident = get_attribute_namespace (attr);
@@ -212,7 +212,7 @@ is_attribute_namespace_p (const char *attr_ns, const_tree attr)
    occurrences are wanted.  ATTR_NAME must be in the form 'text' (not
    '__text__').  */
 
-static inline tree
+inline tree
 lookup_attribute (const char *attr_name, tree list)
 {
   if (CHECKING_P && attr_name[0] != '_')
@@ -236,7 +236,7 @@ lookup_attribute (const char *attr_name, tree list)
 /* Similar to lookup_attribute, but also match the attribute namespace.
    ATTR_NS "" stands for either standard attribute or "gnu" namespace.  */
 
-static inline tree
+inline tree
 lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
 {
   if (CHECKING_P && attr_name[0] != '_')
@@ -269,7 +269,7 @@ lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
    starts with ATTR_NAME.  ATTR_NAME must be in the form 'text' (not
    '__text__').  */
 
-static inline tree
+inline tree
 lookup_attribute_by_prefix (const char *attr_name, tree list)
 {
   gcc_checking_assert (attr_name[0] != '_');
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 7c06a7db45d..29191e56720 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -309,7 +309,7 @@ enum cfg_bb_flags
 
 /* Returns true if BB has precisely one successor.  */
 
-static inline bool
+inline bool
 single_succ_p (const_basic_block bb)
 {
   return EDGE_COUNT (bb->succs) == 1;
@@ -317,7 +317,7 @@ single_succ_p (const_basic_block bb)
 
 /* Returns true if BB has precisely one predecessor.  */
 
-static inline bool
+inline bool
 single_pred_p (const_basic_block bb)
 {
   return EDGE_COUNT (bb->preds) == 1;
@@ -326,7 +326,7 @@ single_pred_p (const_basic_block bb)
 /* Returns the single successor edge of basic block BB.  Aborts if
    BB does not have exactly one successor.  */
 
-static inline edge
+inline edge
 single_succ_edge (const_basic_block bb)
 {
   gcc_checking_assert (single_succ_p (bb));
@@ -336,7 +336,7 @@ single_succ_edge (const_basic_block bb)
 /* Returns the single predecessor edge of basic block BB.  Aborts
    if BB does not have exactly one predecessor.  */
 
-static inline edge
+inline edge
 single_pred_edge (const_basic_block bb)
 {
   gcc_checking_assert (single_pred_p (bb));
@@ -346,7 +346,7 @@ single_pred_edge (const_basic_block bb)
 /* Returns the single successor block of basic block BB.  Aborts
    if BB does not have exactly one successor.  */
 
-static inline basic_block
+inline basic_block
 single_succ (const_basic_block bb)
 {
   return single_succ_edge (bb)->dest;
@@ -355,7 +355,7 @@ single_succ (const_basic_block bb)
 /* Returns the single predecessor block of basic block BB.  Aborts
    if BB does not have exactly one predecessor.*/
 
-static inline basic_block
+inline basic_block
 single_pred (const_basic_block bb)
 {
   return single_pred_edge (bb)->src;
@@ -368,7 +368,7 @@ struct edge_iterator {
   vec<edge, va_gc> **container;
 };
 
-static inline vec<edge, va_gc> *
+inline vec<edge, va_gc> *
 ei_container (edge_iterator i)
 {
   gcc_checking_assert (i.container);
@@ -379,7 +379,7 @@ ei_container (edge_iterator i)
 #define ei_last(iter) ei_last_1 (&(iter))
 
 /* Return an iterator pointing to the start of an edge vector.  */
-static inline edge_iterator
+inline edge_iterator
 ei_start_1 (vec<edge, va_gc> **ev)
 {
   edge_iterator i;
@@ -392,7 +392,7 @@ ei_start_1 (vec<edge, va_gc> **ev)
 
 /* Return an iterator pointing to the last element of an edge
    vector.  */
-static inline edge_iterator
+inline edge_iterator
 ei_last_1 (vec<edge, va_gc> **ev)
 {
   edge_iterator i;
@@ -404,7 +404,7 @@ ei_last_1 (vec<edge, va_gc> **ev)
 }
 
 /* Is the iterator `i' at the end of the sequence?  */
-static inline bool
+inline bool
 ei_end_p (edge_iterator i)
 {
   return (i.index == EDGE_COUNT (ei_container (i)));
@@ -412,14 +412,14 @@ ei_end_p (edge_iterator i)
 
 /* Is the iterator `i' at one position before the end of the
    sequence?  */
-static inline bool
+inline bool
 ei_one_before_end_p (edge_iterator i)
 {
   return (i.index + 1 == EDGE_COUNT (ei_container (i)));
 }
 
 /* Advance the iterator to the next element.  */
-static inline void
+inline void
 ei_next (edge_iterator *i)
 {
   gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i)));
@@ -427,7 +427,7 @@ ei_next (edge_iterator *i)
 }
 
 /* Move the iterator to the previous element.  */
-static inline void
+inline void
 ei_prev (edge_iterator *i)
 {
   gcc_checking_assert (i->index > 0);
@@ -435,7 +435,7 @@ ei_prev (edge_iterator *i)
 }
 
 /* Return the edge pointed to by the iterator `i'.  */
-static inline edge
+inline edge
 ei_edge (edge_iterator i)
 {
   return EDGE_I (ei_container (i), i.index);
@@ -444,7 +444,7 @@ ei_edge (edge_iterator i)
 /* Return an edge pointed to by the iterator.  Do it safely so that
    NULL is returned when the iterator is pointing at the end of the
    sequence.  */
-static inline edge
+inline edge
 ei_safe_edge (edge_iterator i)
 {
   return !ei_end_p (i) ? ei_edge (i) : NULL;
@@ -454,7 +454,7 @@ ei_safe_edge (edge_iterator i)
    *Edge P is set to the next edge if we are to continue to iterate
    and NULL otherwise.  */
 
-static inline bool
+inline bool
 ei_cond (edge_iterator ei, edge *p)
 {
   if (!ei_end_p (ei))
@@ -505,14 +505,14 @@ ei_cond (edge_iterator ei, edge *p)
 
 /* Return true if BB is in a transaction.  */
 
-static inline bool
+inline bool
 bb_in_transaction (basic_block bb)
 {
   return bb->flags & BB_IN_TRANSACTION;
 }
 
 /* Return true when one of the predecessor edges of BB is marked with EDGE_EH.  */
-static inline bool
+inline bool
 bb_has_eh_pred (basic_block bb)
 {
   edge e;
@@ -527,7 +527,7 @@ bb_has_eh_pred (basic_block bb)
 }
 
 /* Return true when one of the predecessor edges of BB is marked with EDGE_ABNORMAL.  */
-static inline bool
+inline bool
 bb_has_abnormal_pred (basic_block bb)
 {
   edge e;
@@ -542,7 +542,7 @@ bb_has_abnormal_pred (basic_block bb)
 }
 
 /* Return the fallthru edge in EDGES if it exists, NULL otherwise.  */
-static inline edge
+inline edge
 find_fallthru_edge (vec<edge, va_gc> *edges)
 {
   edge e;
@@ -557,7 +557,7 @@ find_fallthru_edge (vec<edge, va_gc> *edges)
 
 /* Check tha probability is sane.  */
 
-static inline void
+inline void
 check_probability (int prob)
 {
   gcc_checking_assert (prob >= 0 && prob <= REG_BR_PROB_BASE);
@@ -566,7 +566,7 @@ check_probability (int prob)
 /* Given PROB1 and PROB2, return PROB1*PROB2/REG_BR_PROB_BASE. 
    Used to combine BB probabilities.  */
 
-static inline int
+inline int
 combine_probabilities (int prob1, int prob2)
 {
   check_probability (prob1);
@@ -578,7 +578,7 @@ combine_probabilities (int prob1, int prob2)
    interface when potentially scaling up, so that SCALE is not
    constrained to be < REG_BR_PROB_BASE.  */
 
-static inline gcov_type
+inline gcov_type
 apply_scale (gcov_type freq, gcov_type scale)
 {
   return RDIV (freq * scale, REG_BR_PROB_BASE);
@@ -586,7 +586,7 @@ apply_scale (gcov_type freq, gcov_type scale)
 
 /* Apply probability PROB on frequency or count FREQ.  */
 
-static inline gcov_type
+inline gcov_type
 apply_probability (gcov_type freq, int prob)
 {
   check_probability (prob);
@@ -595,7 +595,7 @@ apply_probability (gcov_type freq, int prob)
 
 /* Return inverse probability for PROB.  */
 
-static inline int
+inline int
 inverse_probability (int prob1)
 {
   check_probability (prob1);
@@ -604,7 +604,7 @@ inverse_probability (int prob1)
 
 /* Return true if BB has at least one abnormal outgoing edge.  */
 
-static inline bool
+inline bool
 has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
 {
   edge e;
@@ -620,7 +620,7 @@ has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
 /* Return true when one of the predecessor edges of BB is marked with
    EDGE_ABNORMAL_CALL or EDGE_EH.  */
 
-static inline bool
+inline bool
 has_abnormal_call_or_eh_pred_edge_p (basic_block bb)
 {
   edge e;
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index a439f933867..43337d2e9d9 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -461,7 +461,7 @@ extern void dump_bitmap_statistics (void);
 /* Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
    to allocate from, NULL for GC'd bitmap.  */
 
-static inline void
+inline void
 bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
 {
   head->first = head->current = NULL;
@@ -476,7 +476,7 @@ bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
 /* Release a bitmap (but not its head).  This is suitable for pairing with
    bitmap_initialize.  */
 
-static inline void
+inline void
 bitmap_release (bitmap head)
 {
   bitmap_clear (head);
@@ -532,7 +532,7 @@ struct bitmap_iterator
 /* Initialize a single bitmap iterator.  START_BIT is the first bit to
    iterate from.  */
 
-static inline void
+inline void
 bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
 		   unsigned start_bit, unsigned *bit_no)
 {
@@ -576,7 +576,7 @@ bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
 /* Initialize an iterator to iterate over the intersection of two
    bitmaps.  START_BIT is the bit to commence from.  */
 
-static inline void
+inline void
 bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
 		   unsigned start_bit, unsigned *bit_no)
 {
@@ -645,7 +645,7 @@ bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
 
 /* Initialize an iterator to iterate over the bits in MAP1 & ~MAP2.  */
 
-static inline void
+inline void
 bmp_iter_and_compl_init (bitmap_iterator *bi,
 			 const_bitmap map1, const_bitmap map2,
 			 unsigned start_bit, unsigned *bit_no)
@@ -696,7 +696,7 @@ bmp_iter_and_compl_init (bitmap_iterator *bi,
 /* Advance to the next bit in BI.  We don't advance to the next
    nonzero bit yet.  */
 
-static inline void
+inline void
 bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 {
   bi->bits >>= 1;
@@ -705,7 +705,7 @@ bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 
 /* Advance to first set bit in BI.  */
 
-static inline void
+inline void
 bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
 {
 #if (GCC_VERSION >= 3004)
@@ -728,7 +728,7 @@ bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
    already advanced past the just iterated bit.  Return true if there
    is a bit to iterate.  */
 
-static inline bool
+inline bool
 bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
 {
   /* If our current word is nonzero, it contains the bit we want.  */
@@ -774,7 +774,7 @@ bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
    bitmaps.  We will have already advanced past the just iterated bit.
    Return true if there is a bit to iterate.  */
 
-static inline bool
+inline bool
 bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
 {
   /* If our current word is nonzero, it contains the bit we want.  */
@@ -843,7 +843,7 @@ bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
    complemented bitmaps.  We will have already advanced past the just
    iterated bit.  */
 
-static inline bool
+inline bool
 bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
 {
   /* If our current word is nonzero, it contains the bit we want.  */
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index bb6271d4a83..259c4a32d30 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -1326,7 +1326,7 @@ extern const struct c_omp_directive *c_omp_categorize_directive (const char *,
 								 const char *);
 
 /* Return next tree in the chain for chain_next walking of tree nodes.  */
-static inline tree
+inline tree
 c_tree_chain_next (tree t)
 {
   /* TREE_CHAIN of a type is TYPE_STUB_DECL, which is different
diff --git a/gcc/c/c-parser.h b/gcc/c/c-parser.h
index 56924c0d83e..545f0f4d9eb 100644
--- a/gcc/c/c-parser.h
+++ b/gcc/c/c-parser.h
@@ -161,7 +161,7 @@ extern bool old_style_parameter_scope (void);
 /* Return true if the next token from PARSER has the indicated
    TYPE.  */
 
-static inline bool
+inline bool
 c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
 {
   return c_parser_peek_token (parser)->type == type;
@@ -170,7 +170,7 @@ c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
 /* Return true if the next token from PARSER does not have the
    indicated TYPE.  */
 
-static inline bool
+inline bool
 c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
 {
   return !c_parser_next_token_is (parser, type);
@@ -179,7 +179,7 @@ c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
 /* Return true if the next token from PARSER is the indicated
    KEYWORD.  */
 
-static inline bool
+inline bool
 c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword)
 {
   return c_parser_peek_token (parser)->keyword == keyword;
diff --git a/gcc/cfghooks.h b/gcc/cfghooks.h
index aebd080cf8b..7c87712c8d7 100644
--- a/gcc/cfghooks.h
+++ b/gcc/cfghooks.h
@@ -206,7 +206,7 @@ extern void verify_flow_info (void);
 /* Check control flow invariants, if internal consistency checks are
    enabled.  */
 
-static inline void
+inline void
 checking_verify_flow_info (void)
 {
   /* TODO: Add a separate option for -fchecking=cfg.  */
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index e98ad06f9b5..e7ac2b5f3db 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -280,21 +280,21 @@ public:
 #define LOOP_C_FINITE		(1 << 1)
 
 /* Set C to the LOOP constraint.  */
-static inline void
+inline void
 loop_constraint_set (class loop *loop, unsigned c)
 {
   loop->constraints |= c;
 }
 
 /* Clear C from the LOOP constraint.  */
-static inline void
+inline void
 loop_constraint_clear (class loop *loop, unsigned c)
 {
   loop->constraints &= ~c;
 }
 
 /* Check if C is set in the LOOP constraint.  */
-static inline bool
+inline bool
 loop_constraint_set_p (class loop *loop, unsigned c)
 {
   return (loop->constraints & c) == c;
@@ -508,7 +508,7 @@ extern void iv_analysis_done (void);
 extern class niter_desc *get_simple_loop_desc (class loop *loop);
 extern void free_simple_loop_desc (class loop *loop);
 
-static inline class niter_desc *
+inline class niter_desc *
 simple_loop_desc (class loop *loop)
 {
   return loop->simple_loop_desc;
@@ -518,7 +518,7 @@ simple_loop_desc (class loop *loop)
 
 /* Returns the loop with index NUM from FNs loop tree.  */
 
-static inline class loop *
+inline class loop *
 get_loop (struct function *fn, unsigned num)
 {
   return (*loops_for_fn (fn)->larray)[num];
@@ -526,7 +526,7 @@ get_loop (struct function *fn, unsigned num)
 
 /* Returns the number of superloops of LOOP.  */
 
-static inline unsigned
+inline unsigned
 loop_depth (const class loop *loop)
 {
   return vec_safe_length (loop->superloops);
@@ -535,7 +535,7 @@ loop_depth (const class loop *loop)
 /* Returns the immediate superloop of LOOP, or NULL if LOOP is the outermost
    loop.  */
 
-static inline class loop *
+inline class loop *
 loop_outer (const class loop *loop)
 {
   unsigned n = vec_safe_length (loop->superloops);
@@ -548,7 +548,7 @@ loop_outer (const class loop *loop)
 
 /* Returns true if LOOP has at least one exit edge.  */
 
-static inline bool
+inline bool
 loop_has_exit_edges (const class loop *loop)
 {
   return loop->exits->next->e != NULL;
@@ -569,7 +569,7 @@ get_loops (struct function *fn)
 /* Returns the number of loops in FN (including the removed
    ones and the fake loop that forms the root of the loop tree).  */
 
-static inline unsigned
+inline unsigned
 number_of_loops (struct function *fn)
 {
   struct loops *loops = loops_for_fn (fn);
@@ -582,13 +582,13 @@ number_of_loops (struct function *fn)
 /* Returns true if state of the loops satisfies all properties
    described by FLAGS.  */
 
-static inline bool
+inline bool
 loops_state_satisfies_p (function *fn, unsigned flags)
 {
   return (loops_for_fn (fn)->state & flags) == flags;
 }
 
-static inline bool
+inline bool
 loops_state_satisfies_p (unsigned flags)
 {
   return loops_state_satisfies_p (cfun, flags);
@@ -596,13 +596,13 @@ loops_state_satisfies_p (unsigned flags)
 
 /* Sets FLAGS to the loops state.  */
 
-static inline void
+inline void
 loops_state_set (function *fn, unsigned flags)
 {
   loops_for_fn (fn)->state |= flags;
 }
 
-static inline void
+inline void
 loops_state_set (unsigned flags)
 {
   loops_state_set (cfun, flags);
@@ -610,13 +610,13 @@ loops_state_set (unsigned flags)
 
 /* Clears FLAGS from the loops state.  */
 
-static inline void
+inline void
 loops_state_clear (function *fn, unsigned flags)
 {
   loops_for_fn (fn)->state &= ~flags;
 }
 
-static inline void
+inline void
 loops_state_clear (unsigned flags)
 {
   if (!current_loops)
@@ -627,7 +627,7 @@ loops_state_clear (unsigned flags)
 /* Check loop structure invariants, if internal consistency checks are
    enabled.  */
 
-static inline void
+inline void
 checking_verify_loop_structure (void)
 {
   /* VERIFY_LOOP_STRUCTURE essentially asserts that no loops need fixups.
@@ -897,7 +897,7 @@ extern void move_loop_invariants (void);
 extern auto_vec<basic_block> get_loop_hot_path (const class loop *loop);
 
 /* Returns the outermost loop of the loop nest that contains LOOP.*/
-static inline class loop *
+inline class loop *
 loop_outermost (class loop *loop)
 {
   unsigned n = vec_safe_length (loop->superloops);
@@ -919,7 +919,7 @@ extern int bb_loop_depth (const_basic_block);
 
 /* Converts VAL to widest_int.  */
 
-static inline widest_int
+inline widest_int
 gcov_type_to_wide_int (gcov_type val)
 {
   HOST_WIDE_INT a[2];
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 5d3ced1b5d5..b5fc739f1b0 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -2650,7 +2650,7 @@ symtab_node::real_symbol_p (void)
 /* Return true if DECL should have entry in symbol table if used.
    Those are functions and static & external variables.  */
 
-static inline bool
+inline bool
 decl_in_symtab_p (const_tree decl)
 {
   return (TREE_CODE (decl) == FUNCTION_DECL
@@ -3323,7 +3323,7 @@ cgraph_edge::frequency ()
 
 
 /* Return true if the TM_CLONE bit is set for a given FNDECL.  */
-static inline bool
+inline bool
 decl_is_tm_clone (const_tree fndecl)
 {
   cgraph_node *n = cgraph_node::get (fndecl);
@@ -3539,7 +3539,7 @@ ipa_polymorphic_call_context::useless_p () const
    the name documents the intent.  We require that no GC can occur
    within the fprintf call.  */
 
-static inline const char *
+inline const char *
 xstrdup_for_dump (const char *transient_str)
 {
   return ggc_strdup (transient_str);
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 9f188724cf2..54997a1adf3 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4238,7 +4238,7 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
 /* We have an expression tree T that represents a call, either CALL_EXPR
    or AGGR_INIT_EXPR.  Return a reference to the Nth argument.  */
 
-static inline tree&
+inline tree&
 get_nth_callarg (tree t, int n)
 {
   switch (TREE_CODE (t))
diff --git a/gcc/cselib.h b/gcc/cselib.h
index 12e54a43d21..e2fa8e8c2c1 100644
--- a/gcc/cselib.h
+++ b/gcc/cselib.h
@@ -113,7 +113,7 @@ extern void dump_cselib_table (FILE *);
 /* Return the canonical value for VAL, following the equivalence chain
    towards the earliest (== lowest uid) equivalent value.  */
 
-static inline cselib_val *
+inline cselib_val *
 canonical_cselib_val (cselib_val *val)
 {
   cselib_val *canon;
@@ -131,7 +131,7 @@ canonical_cselib_val (cselib_val *val)
 /* Return nonzero if we can prove that X and Y contain the same value, taking
    our gathered information into account.  */
 
-static inline int
+inline int
 rtx_equal_for_cselib_p (rtx x, rtx y)
 {
   if (x == y)
diff --git a/gcc/data-streamer.h b/gcc/data-streamer.h
index c91c5ab75e8..d8c7e21dad9 100644
--- a/gcc/data-streamer.h
+++ b/gcc/data-streamer.h
@@ -91,7 +91,7 @@ wide_int streamer_read_wide_int (class lto_input_block *);
 widest_int streamer_read_widest_int (class lto_input_block *);
 
 /* Returns a new bit-packing context for bit-packing into S.  */
-static inline struct bitpack_d
+inline struct bitpack_d
 bitpack_create (struct lto_output_stream *s)
 {
   struct bitpack_d bp;
@@ -102,7 +102,7 @@ bitpack_create (struct lto_output_stream *s)
 }
 
 /* Pack the NBITS bit sized value VAL into the bit-packing context BP.  */
-static inline void
+inline void
 bp_pack_value (struct bitpack_d *bp, bitpack_word_t val, unsigned nbits)
 {
   bitpack_word_t word = bp->word;
@@ -132,7 +132,7 @@ bp_pack_value (struct bitpack_d *bp, bitpack_word_t val, unsigned nbits)
 
 /* Pack VAL into the bit-packing context BP, using NBITS for each
    coefficient.  */
-static inline void
+inline void
 bp_pack_poly_value (struct bitpack_d *bp,
 		    const poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t> &val,
 		    unsigned nbits)
@@ -142,7 +142,7 @@ bp_pack_poly_value (struct bitpack_d *bp,
 }
 
 /* Finishes bit-packing of BP.  */
-static inline void
+inline void
 streamer_write_bitpack (struct bitpack_d *bp)
 {
   streamer_write_uhwi_stream ((struct lto_output_stream *) bp->stream,
@@ -152,7 +152,7 @@ streamer_write_bitpack (struct bitpack_d *bp)
 }
 
 /* Returns a new bit-packing context for bit-unpacking from IB.  */
-static inline struct bitpack_d
+inline struct bitpack_d
 streamer_read_bitpack (class lto_input_block *ib)
 {
   struct bitpack_d bp;
@@ -163,7 +163,7 @@ streamer_read_bitpack (class lto_input_block *ib)
 }
 
 /* Unpacks NBITS bits from the bit-packing context BP and returns them.  */
-static inline bitpack_word_t
+inline bitpack_word_t
 bp_unpack_value (struct bitpack_d *bp, unsigned nbits)
 {
   bitpack_word_t mask, val;
@@ -191,7 +191,7 @@ bp_unpack_value (struct bitpack_d *bp, unsigned nbits)
 
 /* Unpacks a polynomial value from the bit-packing context BP in which each
    coefficient has NBITS bits.  */
-static inline poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t>
+inline poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t>
 bp_unpack_poly_value (struct bitpack_d *bp, unsigned nbits)
 {
   poly_int_pod<NUM_POLY_INT_COEFFS, bitpack_word_t> x;
@@ -203,7 +203,7 @@ bp_unpack_poly_value (struct bitpack_d *bp, unsigned nbits)
 
 /* Write a character to the output block.  */
 
-static inline void
+inline void
 streamer_write_char_stream (struct lto_output_stream *obs, char c)
 {
   /* No space left.  */
@@ -221,7 +221,7 @@ streamer_write_char_stream (struct lto_output_stream *obs, char c)
 
 /* Read byte from the input block.  */
 
-static inline unsigned char
+inline unsigned char
 streamer_read_uchar (class lto_input_block *ib)
 {
   if (ib->p >= ib->len)
@@ -233,7 +233,7 @@ streamer_read_uchar (class lto_input_block *ib)
    to be compile time constant.
    Be host independent, limit range to 31bits.  */
 
-static inline void
+inline void
 streamer_write_hwi_in_range (struct lto_output_stream *obs,
 				  HOST_WIDE_INT min,
 				  HOST_WIDE_INT max,
@@ -251,7 +251,7 @@ streamer_write_hwi_in_range (struct lto_output_stream *obs,
 /* Input VAL into OBS and verify it is in range MIN...MAX that is supposed
    to be compile time constant.  PURPOSE is used for error reporting.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 streamer_read_hwi_in_range (class lto_input_block *ib,
 				 const char *purpose,
 				 HOST_WIDE_INT min,
@@ -272,7 +272,7 @@ streamer_read_hwi_in_range (class lto_input_block *ib,
    to be compile time constant.
    Be host independent, limit range to 31bits.  */
 
-static inline void
+inline void
 bp_pack_int_in_range (struct bitpack_d *bp,
 		      HOST_WIDE_INT min,
 		      HOST_WIDE_INT max,
@@ -291,7 +291,7 @@ bp_pack_int_in_range (struct bitpack_d *bp,
 /* Input VAL into BP and verify it is in range MIN...MAX that is supposed
    to be compile time constant.  PURPOSE is used for error reporting.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 bp_unpack_int_in_range (struct bitpack_d *bp,
 		        const char *purpose,
 		        HOST_WIDE_INT min,
@@ -332,7 +332,7 @@ bp_unpack_int_in_range (struct bitpack_d *bp,
 
 /* Output the start of a record with TAG to output block OB.  */
 
-static inline void
+inline void
 streamer_write_record_start (struct output_block *ob, enum LTO_tags tag)
 {
   streamer_write_enum (ob->main_stream, LTO_tags, LTO_NUM_TAGS, tag);
@@ -340,7 +340,7 @@ streamer_write_record_start (struct output_block *ob, enum LTO_tags tag)
 
 /* Return the next tag in the input block IB.  */
 
-static inline enum LTO_tags
+inline enum LTO_tags
 streamer_read_record_start (class lto_input_block *ib)
 {
   return streamer_read_enum (ib, LTO_tags, LTO_NUM_TAGS);
diff --git a/gcc/debug.h b/gcc/debug.h
index 799d5e316a2..05512bce48c 100644
--- a/gcc/debug.h
+++ b/gcc/debug.h
@@ -270,7 +270,7 @@ extern decl_to_instance_map_t *decl_to_instance_map;
 /* Allocate decl_to_instance_map with COUNT slots to begin wtih, if it
  * hasn't been allocated yet.  */
 
-static inline decl_to_instance_map_t *
+inline decl_to_instance_map_t *
 maybe_create_decl_to_instance_map (int count = 13)
 {
   if (!decl_to_instance_map)
diff --git a/gcc/df.h b/gcc/df.h
index b2d1300f6d4..aec2223591a 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -1097,7 +1097,7 @@ extern void df_scan_verify (void);
    Public functions access functions for the dataflow problems.
 ----------------------------------------------------------------------------*/
 
-static inline struct df_scan_bb_info *
+inline struct df_scan_bb_info *
 df_scan_get_bb_info (unsigned int index)
 {
   if (index < df_scan->block_info_size)
@@ -1106,7 +1106,7 @@ df_scan_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_rd_bb_info *
+inline class df_rd_bb_info *
 df_rd_get_bb_info (unsigned int index)
 {
   if (index < df_rd->block_info_size)
@@ -1115,7 +1115,7 @@ df_rd_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_lr_bb_info *
+inline class df_lr_bb_info *
 df_lr_get_bb_info (unsigned int index)
 {
   if (index < df_lr->block_info_size)
@@ -1124,7 +1124,7 @@ df_lr_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_md_bb_info *
+inline class df_md_bb_info *
 df_md_get_bb_info (unsigned int index)
 {
   if (index < df_md->block_info_size)
@@ -1133,7 +1133,7 @@ df_md_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_live_bb_info *
+inline class df_live_bb_info *
 df_live_get_bb_info (unsigned int index)
 {
   if (index < df_live->block_info_size)
@@ -1142,7 +1142,7 @@ df_live_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_word_lr_bb_info *
+inline class df_word_lr_bb_info *
 df_word_lr_get_bb_info (unsigned int index)
 {
   if (index < df_word_lr->block_info_size)
@@ -1151,7 +1151,7 @@ df_word_lr_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_mir_bb_info *
+inline class df_mir_bb_info *
 df_mir_get_bb_info (unsigned int index)
 {
   if (index < df_mir->block_info_size)
@@ -1165,7 +1165,7 @@ df_mir_get_bb_info (unsigned int index)
    choose different dataflow problems depending on the optimization
    level.  */
 
-static inline bitmap
+inline bitmap
 df_get_live_out (basic_block bb)
 {
   gcc_checking_assert (df_lr);
@@ -1181,7 +1181,7 @@ df_get_live_out (basic_block bb)
    choose different dataflow problems depending on the optimization
    level.  */
 
-static inline bitmap
+inline bitmap
 df_get_live_in (basic_block bb)
 {
   gcc_checking_assert (df_lr);
@@ -1195,7 +1195,7 @@ df_get_live_in (basic_block bb)
 /* Get basic block info.  */
 /* Get the artificial defs for a basic block.  */
 
-static inline df_ref
+inline df_ref
 df_get_artificial_defs (unsigned int bb_index)
 {
   return df_scan_get_bb_info (bb_index)->artificial_defs;
@@ -1204,7 +1204,7 @@ df_get_artificial_defs (unsigned int bb_index)
 
 /* Get the artificial uses for a basic block.  */
 
-static inline df_ref
+inline df_ref
 df_get_artificial_uses (unsigned int bb_index)
 {
   return df_scan_get_bb_info (bb_index)->artificial_uses;
@@ -1213,7 +1213,7 @@ df_get_artificial_uses (unsigned int bb_index)
 /* If INSN defines exactly one register, return the associated reference,
    otherwise return null.  */
 
-static inline df_ref
+inline df_ref
 df_single_def (const df_insn_info *info)
 {
   df_ref defs = DF_INSN_INFO_DEFS (info);
@@ -1223,7 +1223,7 @@ df_single_def (const df_insn_info *info)
 /* If INSN uses exactly one register, return the associated reference,
    otherwise return null.  */
 
-static inline df_ref
+inline df_ref
 df_single_use (const df_insn_info *info)
 {
   df_ref uses = DF_INSN_INFO_USES (info);
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index e20f6edfc81..e7390e49554 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -416,7 +416,7 @@ struct diagnostic_context
   diagnostic_client_data_hooks *m_client_data_hooks;
 };
 
-static inline void
+inline void
 diagnostic_inhibit_notes (diagnostic_context * context)
 {
   context->inhibit_notes_p = true;
@@ -474,7 +474,7 @@ extern diagnostic_context *global_dc;
 /* Override the option index to be used for reporting a
    diagnostic.  */
 
-static inline void
+inline void
 diagnostic_override_option_index (diagnostic_info *info, int optidx)
 {
   info->option_index = optidx;
@@ -546,7 +546,7 @@ int get_terminal_width (void);
 /* Return the location associated to this diagnostic. Parameter WHICH
    specifies which location. By default, expand the first one.  */
 
-static inline location_t
+inline location_t
 diagnostic_location (const diagnostic_info * diagnostic, int which = 0)
 {
   return diagnostic->message.get_location (which);
@@ -554,7 +554,7 @@ diagnostic_location (const diagnostic_info * diagnostic, int which = 0)
 
 /* Return the number of locations to be printed in DIAGNOSTIC.  */
 
-static inline unsigned int
+inline unsigned int
 diagnostic_num_locations (const diagnostic_info * diagnostic)
 {
   return diagnostic->message.m_richloc->get_num_locations ();
@@ -564,7 +564,7 @@ diagnostic_num_locations (const diagnostic_info * diagnostic)
    consistency.  Parameter WHICH specifies which location. By default,
    expand the first one.  */
 
-static inline expanded_location
+inline expanded_location
 diagnostic_expand_location (const diagnostic_info * diagnostic, int which = 0)
 {
   return diagnostic->richloc->get_expanded_location (which);
@@ -579,7 +579,7 @@ const int CARET_LINE_MARGIN = 10;
    caret line.  This is used to build a prefix and also to determine
    whether to print one or two caret lines.  */
 
-static inline bool
+inline bool
 diagnostic_same_line (const diagnostic_context *context,
 		       expanded_location s1, expanded_location s2)
 {
diff --git a/gcc/dominance.h b/gcc/dominance.h
index 3c5a345f478..ddac0f58050 100644
--- a/gcc/dominance.h
+++ b/gcc/dominance.h
@@ -69,7 +69,7 @@ extern void verify_dominators (enum cdi_direction);
 /* Verify invariants of computed dominance information, if internal consistency
    checks are enabled.  */
 
-static inline void
+inline void
 checking_verify_dominators (cdi_direction dir)
 {
   if (flag_checking)
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index 5b97c5ca8b5..7d5eca899dc 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -208,27 +208,27 @@ enum dump_flag : uint32_t
 
 typedef enum dump_flag dump_flags_t;
 
-static inline dump_flags_t
+inline dump_flags_t
 operator| (dump_flags_t lhs, dump_flags_t rhs)
 {
   return (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
 			| (std::underlying_type<dump_flags_t>::type)rhs);
 }
 
-static inline dump_flags_t
+inline dump_flags_t
 operator& (dump_flags_t lhs, dump_flags_t rhs)
 {
   return (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
 			& (std::underlying_type<dump_flags_t>::type)rhs);
 }
 
-static inline dump_flags_t
+inline dump_flags_t
 operator~ (dump_flags_t flags)
 {
   return (dump_flags_t)~((std::underlying_type<dump_flags_t>::type)flags);
 }
 
-static inline dump_flags_t &
+inline dump_flags_t &
 operator|= (dump_flags_t &lhs, dump_flags_t rhs)
 {
   lhs = (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
@@ -236,7 +236,7 @@ operator|= (dump_flags_t &lhs, dump_flags_t rhs)
   return lhs;
 }
 
-static inline dump_flags_t &
+inline dump_flags_t &
 operator&= (dump_flags_t &lhs, dump_flags_t rhs)
 {
   lhs = (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
@@ -276,14 +276,14 @@ enum optgroup_flag
 
 typedef enum optgroup_flag optgroup_flags_t;
 
-static inline optgroup_flags_t
+inline optgroup_flags_t
 operator| (optgroup_flags_t lhs, optgroup_flags_t rhs)
 {
   return (optgroup_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
 			    | (std::underlying_type<dump_flags_t>::type)rhs);
 }
 
-static inline optgroup_flags_t &
+inline optgroup_flags_t &
 operator|= (optgroup_flags_t &lhs, optgroup_flags_t rhs)
 {
   lhs = (optgroup_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
@@ -528,7 +528,7 @@ extern bool dumps_are_enabled;
 extern void set_dump_file (FILE *new_dump_file);
 
 /* Return true if any of the dumps is enabled, false otherwise. */
-static inline bool
+inline bool
 dump_enabled_p (void)
 {
   return dumps_are_enabled;
diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
index 483e0bb96ee..c472c736cb6 100644
--- a/gcc/emit-rtl.h
+++ b/gcc/emit-rtl.h
@@ -400,7 +400,7 @@ extern bool need_atomic_barrier_p (enum memmodel, bool);
 
 /* Return the current sequence.  */
 
-static inline struct sequence_stack *
+inline struct sequence_stack *
 get_current_sequence (void)
 {
   return &crtl->emit.seq;
@@ -408,7 +408,7 @@ get_current_sequence (void)
 
 /* Return the outermost sequence.  */
 
-static inline struct sequence_stack *
+inline struct sequence_stack *
 get_topmost_sequence (void)
 {
   struct sequence_stack *seq, *top;
@@ -424,7 +424,7 @@ get_topmost_sequence (void)
 
 /* Return the first insn of the current sequence or current function.  */
 
-static inline rtx_insn *
+inline rtx_insn *
 get_insns (void)
 {
   return get_current_sequence ()->first;
@@ -432,7 +432,7 @@ get_insns (void)
 
 /* Specify a new insn as the first in the chain.  */
 
-static inline void
+inline void
 set_first_insn (rtx_insn *insn)
 {
   gcc_checking_assert (!insn || !PREV_INSN (insn));
@@ -441,7 +441,7 @@ set_first_insn (rtx_insn *insn)
 
 /* Return the last insn emitted in current sequence or current function.  */
 
-static inline rtx_insn *
+inline rtx_insn *
 get_last_insn (void)
 {
   return get_current_sequence ()->last;
@@ -449,7 +449,7 @@ get_last_insn (void)
 
 /* Specify a new insn as the last in the chain.  */
 
-static inline void
+inline void
 set_last_insn (rtx_insn *insn)
 {
   gcc_checking_assert (!insn || !NEXT_INSN (insn));
@@ -458,7 +458,7 @@ set_last_insn (rtx_insn *insn)
 
 /* Return a number larger than any instruction's uid in this function.  */
 
-static inline int
+inline int
 get_max_uid (void)
 {
   return crtl->emit.x_cur_insn_uid;
diff --git a/gcc/except.h b/gcc/except.h
index 2b5c9feb705..5ecdbc0d1dc 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -302,7 +302,7 @@ function_needs_eh_personality (struct function *);
 
 /* Pre-order iteration within the eh_region tree.  */
 
-static inline eh_region
+inline eh_region
 ehr_next (eh_region r, eh_region start)
 {
   if (r->inner)
diff --git a/gcc/expmed.h b/gcc/expmed.h
index 0419e2dac85..c1aee00c616 100644
--- a/gcc/expmed.h
+++ b/gcc/expmed.h
@@ -191,7 +191,7 @@ extern struct target_expmed *this_target_expmed;
 
 /* Return a pointer to the alg_hash_entry at IDX.  */
 
-static inline struct alg_hash_entry *
+inline struct alg_hash_entry *
 alg_hash_entry_ptr (int idx)
 {
   return &this_target_expmed->x_alg_hash[idx];
@@ -199,7 +199,7 @@ alg_hash_entry_ptr (int idx)
 
 /* Return true if the x_alg_hash field might have been used.  */
 
-static inline bool
+inline bool
 alg_hash_used_p (void)
 {
   return this_target_expmed->x_alg_hash_used_p;
@@ -207,7 +207,7 @@ alg_hash_used_p (void)
 
 /* Set whether the x_alg_hash field might have been used.  */
 
-static inline void
+inline void
 set_alg_hash_used_p (bool usedp)
 {
   this_target_expmed->x_alg_hash_used_p = usedp;
@@ -215,7 +215,7 @@ set_alg_hash_used_p (bool usedp)
 
 /* Compute an index into the cost arrays by mode class.  */
 
-static inline int
+inline int
 expmed_mode_index (machine_mode mode)
 {
   switch (GET_MODE_CLASS (mode))
@@ -244,7 +244,7 @@ expmed_mode_index (machine_mode mode)
    a particular operation performed in MODE is cheap when optimizing
    for SPEED.  */
 
-static inline bool *
+inline bool *
 expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
 		     machine_mode mode)
 {
@@ -255,7 +255,7 @@ expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
 /* Return a pointer to a cost contained in COSTS when a particular
    operation is performed in MODE when optimizing for SPEED.  */
 
-static inline int *
+inline int *
 expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
 		    machine_mode mode)
 {
@@ -265,7 +265,7 @@ expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
 
 /* Subroutine of {set_,}sdiv_pow2_cheap.  Not to be used otherwise.  */
 
-static inline bool *
+inline bool *
 sdiv_pow2_cheap_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cheap_ptr (&this_target_expmed->x_sdiv_pow2_cheap,
@@ -275,7 +275,7 @@ sdiv_pow2_cheap_ptr (bool speed, machine_mode mode)
 /* Set whether a signed division by a power of 2 is cheap in MODE
    when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_sdiv_pow2_cheap (bool speed, machine_mode mode, bool cheap_p)
 {
   *sdiv_pow2_cheap_ptr (speed, mode) = cheap_p;
@@ -284,7 +284,7 @@ set_sdiv_pow2_cheap (bool speed, machine_mode mode, bool cheap_p)
 /* Return whether a signed division by a power of 2 is cheap in MODE
    when optimizing for SPEED.  */
 
-static inline bool
+inline bool
 sdiv_pow2_cheap (bool speed, machine_mode mode)
 {
   return *sdiv_pow2_cheap_ptr (speed, mode);
@@ -292,7 +292,7 @@ sdiv_pow2_cheap (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}smod_pow2_cheap.  Not to be used otherwise.  */
 
-static inline bool *
+inline bool *
 smod_pow2_cheap_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cheap_ptr (&this_target_expmed->x_smod_pow2_cheap,
@@ -302,7 +302,7 @@ smod_pow2_cheap_ptr (bool speed, machine_mode mode)
 /* Set whether a signed modulo by a power of 2 is CHEAP in MODE when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_smod_pow2_cheap (bool speed, machine_mode mode, bool cheap)
 {
   *smod_pow2_cheap_ptr (speed, mode) = cheap;
@@ -311,7 +311,7 @@ set_smod_pow2_cheap (bool speed, machine_mode mode, bool cheap)
 /* Return whether a signed modulo by a power of 2 is cheap in MODE
    when optimizing for SPEED.  */
 
-static inline bool
+inline bool
 smod_pow2_cheap (bool speed, machine_mode mode)
 {
   return *smod_pow2_cheap_ptr (speed, mode);
@@ -319,7 +319,7 @@ smod_pow2_cheap (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}zero_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 zero_cost_ptr (bool speed)
 {
   return &this_target_expmed->x_zero_cost[speed];
@@ -327,7 +327,7 @@ zero_cost_ptr (bool speed)
 
 /* Set the COST of loading zero when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_zero_cost (bool speed, int cost)
 {
   *zero_cost_ptr (speed) = cost;
@@ -335,7 +335,7 @@ set_zero_cost (bool speed, int cost)
 
 /* Return the COST of loading zero when optimizing for SPEED.  */
 
-static inline int
+inline int
 zero_cost (bool speed)
 {
   return *zero_cost_ptr (speed);
@@ -343,7 +343,7 @@ zero_cost (bool speed)
 
 /* Subroutine of {set_,}add_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 add_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_add_cost, speed, mode);
@@ -351,7 +351,7 @@ add_cost_ptr (bool speed, machine_mode mode)
 
 /* Set the COST of computing an add in MODE when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_add_cost (bool speed, machine_mode mode, int cost)
 {
   *add_cost_ptr (speed, mode) = cost;
@@ -359,7 +359,7 @@ set_add_cost (bool speed, machine_mode mode, int cost)
 
 /* Return the cost of computing an add in MODE when optimizing for SPEED.  */
 
-static inline int
+inline int
 add_cost (bool speed, machine_mode mode)
 {
   return *add_cost_ptr (speed, mode);
@@ -367,7 +367,7 @@ add_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}neg_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 neg_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_neg_cost, speed, mode);
@@ -375,7 +375,7 @@ neg_cost_ptr (bool speed, machine_mode mode)
 
 /* Set the COST of computing a negation in MODE when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_neg_cost (bool speed, machine_mode mode, int cost)
 {
   *neg_cost_ptr (speed, mode) = cost;
@@ -384,7 +384,7 @@ set_neg_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of computing a negation in MODE when optimizing for
    SPEED.  */
 
-static inline int
+inline int
 neg_cost (bool speed, machine_mode mode)
 {
   return *neg_cost_ptr (speed, mode);
@@ -392,7 +392,7 @@ neg_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}shift_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shift_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shift_cost[bits],
@@ -401,7 +401,7 @@ shift_cost_ptr (bool speed, machine_mode mode, int bits)
 
 /* Set the COST of doing a shift in MODE by BITS when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shift_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shift_cost_ptr (speed, mode, bits) = cost;
@@ -410,7 +410,7 @@ set_shift_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of doing a shift in MODE by BITS when optimizing for
    SPEED.  */
 
-static inline int
+inline int
 shift_cost (bool speed, machine_mode mode, int bits)
 {
   return *shift_cost_ptr (speed, mode, bits);
@@ -418,7 +418,7 @@ shift_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}shiftadd_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shiftadd_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shiftadd_cost[bits],
@@ -428,7 +428,7 @@ shiftadd_cost_ptr (bool speed, machine_mode mode, int bits)
 /* Set the COST of doing a shift in MODE by BITS followed by an add when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shiftadd_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shiftadd_cost_ptr (speed, mode, bits) = cost;
@@ -437,7 +437,7 @@ set_shiftadd_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of doing a shift in MODE by BITS followed by an add
    when optimizing for SPEED.  */
 
-static inline int
+inline int
 shiftadd_cost (bool speed, machine_mode mode, int bits)
 {
   return *shiftadd_cost_ptr (speed, mode, bits);
@@ -445,7 +445,7 @@ shiftadd_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}shiftsub0_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shiftsub0_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub0_cost[bits],
@@ -455,7 +455,7 @@ shiftsub0_cost_ptr (bool speed, machine_mode mode, int bits)
 /* Set the COST of doing a shift in MODE by BITS and then subtracting a
    value when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shiftsub0_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shiftsub0_cost_ptr (speed, mode, bits) = cost;
@@ -464,7 +464,7 @@ set_shiftsub0_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of doing a shift in MODE by BITS and then subtracting
    a value when optimizing for SPEED.  */
 
-static inline int
+inline int
 shiftsub0_cost (bool speed, machine_mode mode, int bits)
 {
   return *shiftsub0_cost_ptr (speed, mode, bits);
@@ -472,7 +472,7 @@ shiftsub0_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}shiftsub1_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shiftsub1_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub1_cost[bits],
@@ -482,7 +482,7 @@ shiftsub1_cost_ptr (bool speed, machine_mode mode, int bits)
 /* Set the COST of subtracting a shift in MODE by BITS from a value when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shiftsub1_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shiftsub1_cost_ptr (speed, mode, bits) = cost;
@@ -491,7 +491,7 @@ set_shiftsub1_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of subtracting a shift in MODE by BITS from a value
    when optimizing for SPEED.  */
 
-static inline int
+inline int
 shiftsub1_cost (bool speed, machine_mode mode, int bits)
 {
   return *shiftsub1_cost_ptr (speed, mode, bits);
@@ -499,7 +499,7 @@ shiftsub1_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}mul_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 mul_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_mul_cost, speed, mode);
@@ -508,7 +508,7 @@ mul_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST of doing a multiplication in MODE when optimizing for
    SPEED.  */
 
-static inline void
+inline void
 set_mul_cost (bool speed, machine_mode mode, int cost)
 {
   *mul_cost_ptr (speed, mode) = cost;
@@ -517,7 +517,7 @@ set_mul_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of doing a multiplication in MODE when optimizing
    for SPEED.  */
 
-static inline int
+inline int
 mul_cost (bool speed, machine_mode mode)
 {
   return *mul_cost_ptr (speed, mode);
@@ -525,7 +525,7 @@ mul_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}sdiv_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 sdiv_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_sdiv_cost, speed, mode);
@@ -534,7 +534,7 @@ sdiv_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST of doing a signed division in MODE when optimizing
    for SPEED.  */
 
-static inline void
+inline void
 set_sdiv_cost (bool speed, machine_mode mode, int cost)
 {
   *sdiv_cost_ptr (speed, mode) = cost;
@@ -543,7 +543,7 @@ set_sdiv_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of doing a signed division in MODE when optimizing
    for SPEED.  */
 
-static inline int
+inline int
 sdiv_cost (bool speed, machine_mode mode)
 {
   return *sdiv_cost_ptr (speed, mode);
@@ -551,7 +551,7 @@ sdiv_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}udiv_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 udiv_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_udiv_cost, speed, mode);
@@ -560,7 +560,7 @@ udiv_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST of doing an unsigned division in MODE when optimizing
    for SPEED.  */
 
-static inline void
+inline void
 set_udiv_cost (bool speed, machine_mode mode, int cost)
 {
   *udiv_cost_ptr (speed, mode) = cost;
@@ -569,7 +569,7 @@ set_udiv_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of doing an unsigned division in MODE when
    optimizing for SPEED.  */
 
-static inline int
+inline int
 udiv_cost (bool speed, machine_mode mode)
 {
   return *udiv_cost_ptr (speed, mode);
@@ -577,7 +577,7 @@ udiv_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}mul_widen_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 mul_widen_cost_ptr (bool speed, machine_mode mode)
 {
   gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
@@ -588,7 +588,7 @@ mul_widen_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST for computing a widening multiplication in MODE when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_mul_widen_cost (bool speed, machine_mode mode, int cost)
 {
   *mul_widen_cost_ptr (speed, mode) = cost;
@@ -597,7 +597,7 @@ set_mul_widen_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost for computing a widening multiplication in MODE when
    optimizing for SPEED.  */
 
-static inline int
+inline int
 mul_widen_cost (bool speed, machine_mode mode)
 {
   return *mul_widen_cost_ptr (speed, mode);
@@ -605,7 +605,7 @@ mul_widen_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}mul_highpart_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 mul_highpart_cost_ptr (bool speed, machine_mode mode)
 {
   gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
@@ -618,7 +618,7 @@ mul_highpart_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST for computing the high part of a multiplication in MODE
    when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_mul_highpart_cost (bool speed, machine_mode mode, int cost)
 {
   *mul_highpart_cost_ptr (speed, mode) = cost;
@@ -627,7 +627,7 @@ set_mul_highpart_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost for computing the high part of a multiplication in MODE
    when optimizing for SPEED.  */
 
-static inline int
+inline int
 mul_highpart_cost (bool speed, machine_mode mode)
 {
   return *mul_highpart_cost_ptr (speed, mode);
@@ -635,7 +635,7 @@ mul_highpart_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}convert_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 convert_cost_ptr (machine_mode to_mode, machine_mode from_mode,
 		  bool speed)
 {
@@ -651,7 +651,7 @@ convert_cost_ptr (machine_mode to_mode, machine_mode from_mode,
 /* Set the COST for converting from FROM_MODE to TO_MODE when optimizing
    for SPEED.  */
 
-static inline void
+inline void
 set_convert_cost (machine_mode to_mode, machine_mode from_mode,
 		  bool speed, int cost)
 {
@@ -661,7 +661,7 @@ set_convert_cost (machine_mode to_mode, machine_mode from_mode,
 /* Return the cost for converting from FROM_MODE to TO_MODE when optimizing
    for SPEED.  */
 
-static inline int
+inline int
 convert_cost (machine_mode to_mode, machine_mode from_mode,
 	      bool speed)
 {
diff --git a/gcc/expr.h b/gcc/expr.h
index e3ba9eb5370..0c059ed9023 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -84,19 +84,19 @@ extern rtx convert_wider_int_to_float (machine_mode mode, machine_mode imode,
 extern rtx emit_block_op_via_libcall (enum built_in_function, rtx, rtx, rtx,
 				      bool);
 
-static inline rtx
+inline rtx
 emit_block_copy_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
 {
   return emit_block_op_via_libcall (BUILT_IN_MEMCPY, dst, src, size, tailcall);
 }
 
-static inline rtx
+inline rtx
 emit_block_move_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
 {
   return emit_block_op_via_libcall (BUILT_IN_MEMMOVE, dst, src, size, tailcall);
 }
 
-static inline rtx
+inline rtx
 emit_block_comp_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
 {
   return emit_block_op_via_libcall (BUILT_IN_MEMCMP, dst, src, size, tailcall);
@@ -178,14 +178,14 @@ extern void clobber_reg_mode (rtx *, rtx, machine_mode);
 extern rtx copy_blkmode_to_reg (machine_mode, tree);
 
 /* Mark REG as holding a parameter for the next CALL_INSN.  */
-static inline void
+inline void
 use_reg (rtx *fusage, rtx reg)
 {
   use_reg_mode (fusage, reg, VOIDmode);
 }
 
 /* Mark REG as clobbered by the call with FUSAGE as CALL_INSN_FUNCTION_USAGE.  */
-static inline void
+inline void
 clobber_reg (rtx *fusage, rtx reg)
 {
   clobber_reg_mode (fusage, reg, VOIDmode);
@@ -303,14 +303,14 @@ extern rtx expand_expr_real_2 (sepops, rtx, machine_mode,
 /* Generate code for computing expression EXP.
    An rtx for the computed value is returned.  The value is never null.
    In the case of a void EXP, const0_rtx is returned.  */
-static inline rtx
+inline rtx
 expand_expr (tree exp, rtx target, machine_mode mode,
 	     enum expand_modifier modifier)
 {
   return expand_expr_real (exp, target, mode, modifier, NULL, false);
 }
 
-static inline rtx
+inline rtx
 expand_normal (tree exp)
 {
   return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL, false);
diff --git a/gcc/fixed-value.h b/gcc/fixed-value.h
index f16e41a32fa..8d1002ac6f0 100644
--- a/gcc/fixed-value.h
+++ b/gcc/fixed-value.h
@@ -51,7 +51,7 @@ extern FIXED_VALUE_TYPE fixed_from_double_int (double_int, scalar_mode);
 
 /* Return a CONST_FIXED from a bit payload and machine mode MODE.
    The bits in PAYLOAD are sign-extended/zero-extended according to MODE.  */
-static inline rtx
+inline rtx
 const_fixed_from_double_int (double_int payload,
 			     scalar_mode mode)
 {
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 9884a55882b..2fd15004534 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -3273,7 +3273,7 @@ void gfc_done_2 (void);
 int get_c_kind (const char *, CInteropKind_t *);
 
 const char *gfc_closest_fuzzy_match (const char *, char **);
-static inline void
+inline void
 vec_push (char **&optr, size_t &osz, const char *elt)
 {
   /* {auto,}vec.safe_push () replacement.  Don't ask..  */
@@ -3549,7 +3549,7 @@ void gfc_intrinsic_done_1 (void);
 
 char gfc_type_letter (bt, bool logical_equals_int = false);
 int gfc_type_abi_kind (bt, int);
-static inline int
+inline int
 gfc_type_abi_kind (gfc_typespec *ts)
 {
   return gfc_type_abi_kind (ts->type, ts->kind);
diff --git a/gcc/gengtype.h b/gcc/gengtype.h
index 03264feb623..4e5df544fbf 100644
--- a/gcc/gengtype.h
+++ b/gcc/gengtype.h
@@ -77,7 +77,7 @@ input_file* input_file_by_name (const char* name);
 const char *get_file_srcdir_relative_path (const input_file *inpf);
 
 /* Get the name of an input file.  */
-static inline const char*
+inline const char*
 get_input_file_name (const input_file *inpf)
 {
   if (inpf)
@@ -94,7 +94,7 @@ get_input_file_name (const input_file *inpf)
    some GC roots may be missed, which is a much harder-to-debug problem.
   */
 
-static inline lang_bitmap
+inline lang_bitmap
 get_lang_bitmap (const input_file* inpf)
 {
   if (inpf == NULL)
@@ -104,7 +104,7 @@ get_lang_bitmap (const input_file* inpf)
 
 /* Set the bitmap returned by get_lang_bitmap.  The only legitimate
    callers of this function are read_input_list & read_state_*.  */
-static inline void
+inline void
 set_lang_bitmap (input_file* inpf, lang_bitmap n)
 {
   gcc_assert (inpf);
@@ -346,7 +346,7 @@ extern struct type callback_type;
 
 /* Test if a type is a union or a structure, perhaps a language
    specific one.  */
-static inline bool
+inline bool
 union_or_struct_p (enum typekind kind)
 {
   return (kind == TYPE_UNION
@@ -355,14 +355,14 @@ union_or_struct_p (enum typekind kind)
 	  || kind == TYPE_USER_STRUCT);
 }
 
-static inline bool
+inline bool
 union_or_struct_p (const_type_p x)
 {
   return union_or_struct_p (x->kind);
 }
 
 /* Give the file location of a type, if any. */
-static inline struct fileloc* 
+inline struct fileloc* 
 type_fileloc (type_p t)
 {
   if (!t) 
diff --git a/gcc/gimple-expr.h b/gcc/gimple-expr.h
index 42a16764be9..e89f7e20fc8 100644
--- a/gcc/gimple-expr.h
+++ b/gcc/gimple-expr.h
@@ -60,7 +60,7 @@ extern tree canonicalize_cond_expr_cond (tree);
 /* Return true if a conversion from either type of TYPE1 and TYPE2
    to the other is not required.  Otherwise return false.  */
 
-static inline bool
+inline bool
 types_compatible_p (tree type1, tree type2)
 {
   return (type1 == type2
@@ -70,7 +70,7 @@ types_compatible_p (tree type1, tree type2)
 
 /* Return true if TYPE is a suitable type for a scalar register variable.  */
 
-static inline bool
+inline bool
 is_gimple_reg_type (tree type)
 {
   return !AGGREGATE_TYPE_P (type);
@@ -78,7 +78,7 @@ is_gimple_reg_type (tree type)
 
 /* Return true if T is a variable.  */
 
-static inline bool
+inline bool
 is_gimple_variable (tree t)
 {
   return (TREE_CODE (t) == VAR_DECL
@@ -89,7 +89,7 @@ is_gimple_variable (tree t)
 
 /*  Return true if T is a GIMPLE identifier (something with an address).  */
 
-static inline bool
+inline bool
 is_gimple_id (tree t)
 {
   return (is_gimple_variable (t)
@@ -102,7 +102,7 @@ is_gimple_id (tree t)
 
 /* Return true if OP, an SSA name or a DECL is a virtual operand.  */
 
-static inline bool
+inline bool
 virtual_operand_p (tree op)
 {
   if (TREE_CODE (op) == SSA_NAME)
@@ -116,7 +116,7 @@ virtual_operand_p (tree op)
 
 /*  Return true if T is something whose address can be taken.  */
 
-static inline bool
+inline bool
 is_gimple_addressable (tree t)
 {
   return (is_gimple_id (t) || handled_component_p (t)
@@ -126,7 +126,7 @@ is_gimple_addressable (tree t)
 
 /* Return true if T is a valid gimple constant.  */
 
-static inline bool
+inline bool
 is_gimple_constant (const_tree t)
 {
   switch (TREE_CODE (t))
@@ -148,7 +148,7 @@ is_gimple_constant (const_tree t)
 /* A wrapper around extract_ops_from_tree with 3 ops, for callers which
    expect to see only a maximum of two operands.  */
 
-static inline void
+inline void
 extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
 		       tree *op1)
 {
@@ -160,7 +160,7 @@ extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
 /* Given a valid GIMPLE_CALL function address return the FUNCTION_DECL
    associated with the callee if known.  Otherwise return NULL_TREE.  */
 
-static inline tree
+inline tree
 gimple_call_addr_fndecl (const_tree fn)
 {
   if (fn && TREE_CODE (fn) == ADDR_EXPR)
diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h
index 8857a7e94bc..38352aa95af 100644
--- a/gcc/gimple-iterator.h
+++ b/gcc/gimple-iterator.h
@@ -95,7 +95,7 @@ extern void update_modified_stmts (gimple_seq);
 
 /* Return a new iterator pointing to GIMPLE_SEQ's first statement.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start (gimple_seq &seq)
 {
   gimple_stmt_iterator i;
@@ -107,7 +107,7 @@ gsi_start (gimple_seq &seq)
   return i;
 }
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_none (void)
 {
   gimple_stmt_iterator i;
@@ -119,7 +119,7 @@ gsi_none (void)
 
 /* Return a new iterator pointing to the first statement in basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_bb (basic_block bb)
 {
   gimple_stmt_iterator i;
@@ -137,7 +137,7 @@ gimple_stmt_iterator gsi_start_edge (edge e);
 
 /* Return a new iterator initially pointing to GIMPLE_SEQ's last statement.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_last (gimple_seq &seq)
 {
   gimple_stmt_iterator i;
@@ -151,7 +151,7 @@ gsi_last (gimple_seq &seq)
 
 /* Return a new iterator pointing to the last statement in basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_last_bb (basic_block bb)
 {
   gimple_stmt_iterator i;
@@ -167,7 +167,7 @@ gsi_last_bb (basic_block bb)
 
 /* Return true if I is at the end of its sequence.  */
 
-static inline bool
+inline bool
 gsi_end_p (gimple_stmt_iterator i)
 {
   return i.ptr == NULL;
@@ -175,7 +175,7 @@ gsi_end_p (gimple_stmt_iterator i)
 
 /* Return true if I is one statement before the end of its sequence.  */
 
-static inline bool
+inline bool
 gsi_one_before_end_p (gimple_stmt_iterator i)
 {
   return i.ptr != NULL && i.ptr->next == NULL;
@@ -183,7 +183,7 @@ gsi_one_before_end_p (gimple_stmt_iterator i)
 
 /* Advance the iterator to the next gimple statement.  */
 
-static inline void
+inline void
 gsi_next (gimple_stmt_iterator *i)
 {
   i->ptr = i->ptr->next;
@@ -191,7 +191,7 @@ gsi_next (gimple_stmt_iterator *i)
 
 /* Advance the iterator to the previous gimple statement.  */
 
-static inline void
+inline void
 gsi_prev (gimple_stmt_iterator *i)
 {
   gimple *prev = i->ptr->prev;
@@ -203,7 +203,7 @@ gsi_prev (gimple_stmt_iterator *i)
 
 /* Return the current stmt.  */
 
-static inline gimple *
+inline gimple *
 gsi_stmt (gimple_stmt_iterator i)
 {
   return i.ptr;
@@ -212,7 +212,7 @@ gsi_stmt (gimple_stmt_iterator i)
 /* Return a block statement iterator that points to the first
    non-label statement in block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_after_labels (basic_block bb)
 {
   gimple_stmt_iterator gsi = gsi_start_bb (bb);
@@ -231,7 +231,7 @@ gsi_after_labels (basic_block bb)
 /* Return a statement iterator that points to the first
    non-label statement in sequence SEQ.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_after_labels (gimple_seq &seq)
 {
   gimple_stmt_iterator gsi = gsi_start (seq);
@@ -249,7 +249,7 @@ gsi_after_labels (gimple_seq &seq)
 
 /* Advance the iterator to the next non-debug gimple statement.  */
 
-static inline void
+inline void
 gsi_next_nondebug (gimple_stmt_iterator *i)
 {
   do
@@ -261,7 +261,7 @@ gsi_next_nondebug (gimple_stmt_iterator *i)
 
 /* Advance the iterator to the previous non-debug gimple statement.  */
 
-static inline void
+inline void
 gsi_prev_nondebug (gimple_stmt_iterator *i)
 {
   do
@@ -274,7 +274,7 @@ gsi_prev_nondebug (gimple_stmt_iterator *i)
 /* Return a new iterator pointing to the first non-debug statement in
    SEQ.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_nondebug (gimple_seq seq)
 {
   gimple_stmt_iterator gsi = gsi_start (seq);
@@ -287,7 +287,7 @@ gsi_start_nondebug (gimple_seq seq)
 /* Return a new iterator pointing to the first non-debug statement in
    basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_nondebug_bb (basic_block bb)
 {
   gimple_stmt_iterator i = gsi_start_bb (bb);
@@ -301,7 +301,7 @@ gsi_start_nondebug_bb (basic_block bb)
 /* Return a new iterator pointing to the first non-debug non-label statement in
    basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_nondebug_after_labels_bb (basic_block bb)
 {
   gimple_stmt_iterator i = gsi_after_labels (bb);
@@ -315,7 +315,7 @@ gsi_start_nondebug_after_labels_bb (basic_block bb)
 /* Return a new iterator pointing to the last non-debug statement in
    basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_last_nondebug_bb (basic_block bb)
 {
   gimple_stmt_iterator i = gsi_last_bb (bb);
@@ -329,7 +329,7 @@ gsi_last_nondebug_bb (basic_block bb)
 /* Return true if I is followed only by debug statements in its
    sequence.  */
 
-static inline bool
+inline bool
 gsi_one_nondebug_before_end_p (gimple_stmt_iterator i)
 {
   if (gsi_one_before_end_p (i))
@@ -343,7 +343,7 @@ gsi_one_nondebug_before_end_p (gimple_stmt_iterator i)
 /* Advance I statement iterator to the next non-virtual GIMPLE_PHI
    statement.  */
 
-static inline void
+inline void
 gsi_next_nonvirtual_phi (gphi_iterator *i)
 {
   do
@@ -356,7 +356,7 @@ gsi_next_nonvirtual_phi (gphi_iterator *i)
 /* Return a new iterator pointing to the first non-virtual phi statement in
    basic block BB.  */
 
-static inline gphi_iterator
+inline gphi_iterator
 gsi_start_nonvirtual_phis (basic_block bb)
 {
   gphi_iterator i = gsi_start_phis (bb);
@@ -369,7 +369,7 @@ gsi_start_nonvirtual_phis (basic_block bb)
 
 /* Return the basic block associated with this iterator.  */
 
-static inline basic_block
+inline basic_block
 gsi_bb (gimple_stmt_iterator i)
 {
   return i.bb;
@@ -377,7 +377,7 @@ gsi_bb (gimple_stmt_iterator i)
 
 /* Return the sequence associated with this iterator.  */
 
-static inline gimple_seq
+inline gimple_seq
 gsi_seq (gimple_stmt_iterator i)
 {
   return *i.seq;
@@ -385,7 +385,7 @@ gsi_seq (gimple_stmt_iterator i)
 
 /* Determine whether SEQ is a nondebug singleton.  */
 
-static inline bool
+inline bool
 gimple_seq_nondebug_singleton_p (gimple_seq seq)
 {
   gimple_stmt_iterator gsi;
diff --git a/gcc/gimple-predict.h b/gcc/gimple-predict.h
index c557b76f17b..6c085a93ea7 100644
--- a/gcc/gimple-predict.h
+++ b/gcc/gimple-predict.h
@@ -25,7 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Return the predictor of GIMPLE_PREDICT statement GS.  */
 
-static inline enum br_predictor
+inline enum br_predictor
 gimple_predict_predictor (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -35,7 +35,7 @@ gimple_predict_predictor (const gimple *gs)
 
 /* Set the predictor of GIMPLE_PREDICT statement GS to PREDICT.  */
 
-static inline void
+inline void
 gimple_predict_set_predictor (gimple *gs, enum br_predictor predictor)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -46,7 +46,7 @@ gimple_predict_set_predictor (gimple *gs, enum br_predictor predictor)
 
 /* Return the outcome of GIMPLE_PREDICT statement GS.  */
 
-static inline enum prediction
+inline enum prediction
 gimple_predict_outcome (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -56,7 +56,7 @@ gimple_predict_outcome (const gimple *gs)
 
 /* Set the outcome of GIMPLE_PREDICT statement GS to OUTCOME.  */
 
-static inline void
+inline void
 gimple_predict_set_outcome (gimple *gs, enum prediction outcome)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -82,7 +82,7 @@ gimple_build_predict (enum br_predictor predictor, enum prediction outcome)
 
 /* Return true if GS is a GIMPLE_PREDICT statement.  */
 
-static inline bool
+inline bool
 is_gimple_predict (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_PREDICT;
diff --git a/gcc/gimple-range-fold.h b/gcc/gimple-range-fold.h
index b7098c22b7b..10b5c18b858 100644
--- a/gcc/gimple-range-fold.h
+++ b/gcc/gimple-range-fold.h
@@ -44,7 +44,7 @@ bool fold_range (vrange &r, gimple *s, unsigned num_elements, vrange **vector);
 // Return the type of range which statement S calculates.  If the type is
 // unsupported or no type can be determined, return NULL_TREE.
 
-static inline tree
+inline tree
 gimple_range_type (const gimple *s)
 {
   tree lhs = gimple_get_lhs (s);
@@ -73,7 +73,7 @@ gimple_range_type (const gimple *s)
 
 // Return EXP if it is an SSA_NAME with a type supported by gimple ranges.
 
-static inline tree
+inline tree
 gimple_range_ssa_p (tree exp)
 {
   if (exp && TREE_CODE (exp) == SSA_NAME &&
@@ -86,7 +86,7 @@ gimple_range_ssa_p (tree exp)
 
 // Return true if TYPE1 and TYPE2 are compatible range types.
 
-static inline bool
+inline bool
 range_compatible_p (tree type1, tree type2)
 {
   // types_compatible_p requires conversion in both directions to be useless.
diff --git a/gcc/gimple-ssa.h b/gcc/gimple-ssa.h
index 98d5bc6d47d..604af8b96b7 100644
--- a/gcc/gimple-ssa.h
+++ b/gcc/gimple-ssa.h
@@ -119,14 +119,14 @@ struct GTY(()) gimple_df {
    gimple_in_ssa_p is queried by gimplifier in various early stages before SSA
    infrastructure is initialized.  Check for presence of the datastructures
    at first place.  */
-static inline bool
+inline bool
 gimple_in_ssa_p (const struct function *fun)
 {
   return fun && fun->gimple_df && fun->gimple_df->in_ssa_p;
 }
 
 /* Artificial variable used for the virtual operand FUD chain.  */
-static inline tree
+inline tree
 gimple_vop (const struct function *fun)
 {
   gcc_checking_assert (fun && fun->gimple_df);
@@ -135,7 +135,7 @@ gimple_vop (const struct function *fun)
 
 /* Return the set of VUSE operand for statement G.  */
 
-static inline use_operand_p
+inline use_operand_p
 gimple_vuse_op (const gimple *g)
 {
   struct use_optype_d *ops;
@@ -152,7 +152,7 @@ gimple_vuse_op (const gimple *g)
 
 /* Return the set of VDEF operand for statement G.  */
 
-static inline def_operand_p
+inline def_operand_p
 gimple_vdef_op (gimple *g)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -166,7 +166,7 @@ gimple_vdef_op (gimple *g)
 
 /* Mark statement S as modified, and update it.  */
 
-static inline void
+inline void
 update_stmt (gimple *s)
 {
   if (gimple_has_ops (s))
@@ -178,7 +178,7 @@ update_stmt (gimple *s)
 
 /* Update statement S if it has been optimized.  */
 
-static inline void
+inline void
 update_stmt_if_modified (gimple *s)
 {
   if (gimple_modified_p (s))
@@ -187,7 +187,7 @@ update_stmt_if_modified (gimple *s)
 
 /* Mark statement S as modified, and update it.  */
 
-static inline void
+inline void
 update_stmt_fn (struct function *fn, gimple *s)
 {
   if (gimple_has_ops (s))
diff --git a/gcc/gimple.h b/gcc/gimple.h
index ddb9a4c0f5f..081d18e425a 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -57,7 +57,7 @@ extern void gimple_check_failed (const gimple *, const char *, int,        \
 	  		   (CODE), ERROR_MARK);				\
   } while (0)
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(const gimple *gs,
 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 	      const char *file = __builtin_FILE (),
@@ -76,7 +76,7 @@ GIMPLE_CHECK2(const gimple *gs,
   return ret;
 }
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(gimple *gs,
 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 	      const char *file = __builtin_FILE (),
@@ -98,13 +98,13 @@ GIMPLE_CHECK2(gimple *gs,
 #define gcc_gimple_checking_assert(EXPR) ((void)(0 && (EXPR)))
 #define GIMPLE_CHECK(GS, CODE)			(void)0
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(gimple *gs)
 {
   return as_a <T> (gs);
 }
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(const gimple *gs)
 {
   return as_a <T> (gs);
@@ -1701,21 +1701,21 @@ typedef struct gimple_temp_hash_elt
 } elt_t;
 
 /* Get the number of the next statement uid to be allocated.  */
-static inline unsigned int
+inline unsigned int
 gimple_stmt_max_uid (struct function *fn)
 {
   return fn->last_stmt_uid;
 }
 
 /* Set the number of the next statement uid to be allocated.  */
-static inline void
+inline void
 set_gimple_stmt_max_uid (struct function *fn, unsigned int maxid)
 {
   fn->last_stmt_uid = maxid;
 }
 
 /* Set the number of the next statement uid to be allocated.  */
-static inline unsigned int
+inline unsigned int
 inc_gimple_stmt_max_uid (struct function *fn)
 {
   return fn->last_stmt_uid++;
@@ -1723,7 +1723,7 @@ inc_gimple_stmt_max_uid (struct function *fn)
 
 /* Return the first node in GIMPLE sequence S.  */
 
-static inline gimple_seq_node
+inline gimple_seq_node
 gimple_seq_first (gimple_seq s)
 {
   return s;
@@ -1732,7 +1732,7 @@ gimple_seq_first (gimple_seq s)
 
 /* Return the first statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_first_stmt (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_first (s);
@@ -1742,7 +1742,7 @@ gimple_seq_first_stmt (gimple_seq s)
 /* Return the first statement in GIMPLE sequence S as a gbind *,
    verifying that it has code GIMPLE_BIND in a checked build.  */
 
-static inline gbind *
+inline gbind *
 gimple_seq_first_stmt_as_a_bind (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_first (s);
@@ -1752,7 +1752,7 @@ gimple_seq_first_stmt_as_a_bind (gimple_seq s)
 
 /* Return the last node in GIMPLE sequence S.  */
 
-static inline gimple_seq_node
+inline gimple_seq_node
 gimple_seq_last (gimple_seq s)
 {
   return s ? s->prev : NULL;
@@ -1761,7 +1761,7 @@ gimple_seq_last (gimple_seq s)
 
 /* Return the last statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_last_stmt (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_last (s);
@@ -1771,7 +1771,7 @@ gimple_seq_last_stmt (gimple_seq s)
 
 /* Set the last node in GIMPLE sequence *PS to LAST.  */
 
-static inline void
+inline void
 gimple_seq_set_last (gimple_seq *ps, gimple_seq_node last)
 {
   (*ps)->prev = last;
@@ -1780,7 +1780,7 @@ gimple_seq_set_last (gimple_seq *ps, gimple_seq_node last)
 
 /* Set the first node in GIMPLE sequence *PS to FIRST.  */
 
-static inline void
+inline void
 gimple_seq_set_first (gimple_seq *ps, gimple_seq_node first)
 {
   *ps = first;
@@ -1789,7 +1789,7 @@ gimple_seq_set_first (gimple_seq *ps, gimple_seq_node first)
 
 /* Return true if GIMPLE sequence S is empty.  */
 
-static inline bool
+inline bool
 gimple_seq_empty_p (gimple_seq s)
 {
   return s == NULL;
@@ -1797,7 +1797,7 @@ gimple_seq_empty_p (gimple_seq s)
 
 /* Allocate a new sequence and initialize its first element with STMT.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_seq_alloc_with_stmt (gimple *stmt)
 {
   gimple_seq seq = NULL;
@@ -1808,13 +1808,13 @@ gimple_seq_alloc_with_stmt (gimple *stmt)
 
 /* Returns the sequence of statements in BB.  */
 
-static inline gimple_seq
+inline gimple_seq
 bb_seq (const_basic_block bb)
 {
   return (!(bb->flags & BB_RTL)) ? bb->il.gimple.seq : NULL;
 }
 
-static inline gimple_seq *
+inline gimple_seq *
 bb_seq_addr (basic_block bb)
 {
   return (!(bb->flags & BB_RTL)) ? &bb->il.gimple.seq : NULL;
@@ -1822,7 +1822,7 @@ bb_seq_addr (basic_block bb)
 
 /* Sets the sequence of statements in BB to SEQ.  */
 
-static inline void
+inline void
 set_bb_seq (basic_block bb, gimple_seq seq)
 {
   gcc_checking_assert (!(bb->flags & BB_RTL));
@@ -1832,7 +1832,7 @@ set_bb_seq (basic_block bb, gimple_seq seq)
 
 /* Return the code for GIMPLE statement G.  */
 
-static inline enum gimple_code
+inline enum gimple_code
 gimple_code (const gimple *g)
 {
   return g->code;
@@ -1841,7 +1841,7 @@ gimple_code (const gimple *g)
 
 /* Return the GSS code used by a GIMPLE code.  */
 
-static inline enum gimple_statement_structure_enum
+inline enum gimple_statement_structure_enum
 gss_for_code (enum gimple_code code)
 {
   gcc_gimple_checking_assert ((unsigned int)code < LAST_AND_UNUSED_GIMPLE_CODE);
@@ -1851,7 +1851,7 @@ gss_for_code (enum gimple_code code)
 
 /* Return which GSS code is used by GS.  */
 
-static inline enum gimple_statement_structure_enum
+inline enum gimple_statement_structure_enum
 gimple_statement_structure (gimple *gs)
 {
   return gss_for_code (gimple_code (gs));
@@ -1861,7 +1861,7 @@ gimple_statement_structure (gimple *gs)
 /* Return true if statement G has sub-statements.  This is only true for
    High GIMPLE statements.  */
 
-static inline bool
+inline bool
 gimple_has_substatements (gimple *g)
 {
   switch (gimple_code (g))
@@ -1898,7 +1898,7 @@ gimple_has_substatements (gimple *g)
 
 /* Return the basic block holding statement G.  */
 
-static inline basic_block
+inline basic_block
 gimple_bb (const gimple *g)
 {
   return g->bb;
@@ -1907,18 +1907,18 @@ gimple_bb (const gimple *g)
 
 /* Return the lexical scope block holding statement G.  */
 
-static inline tree
+inline tree
 gimple_block (const gimple *g)
 {
   return LOCATION_BLOCK (g->location);
 }
 
 /* Forward declare.  */
-static inline void gimple_set_location (gimple *, location_t);
+inline void gimple_set_location (gimple *, location_t);
 
 /* Set BLOCK to be the lexical scope block holding statement G.  */
 
-static inline void
+inline void
 gimple_set_block (gimple *g, tree block)
 {
   gimple_set_location (g, set_block (g->location, block));
@@ -1926,7 +1926,7 @@ gimple_set_block (gimple *g, tree block)
 
 /* Return location information for statement G.  */
 
-static inline location_t
+inline location_t
 gimple_location (const gimple *g)
 {
   return g->location;
@@ -1935,7 +1935,7 @@ gimple_location (const gimple *g)
 /* Return location information for statement G if g is not NULL.
    Otherwise, UNKNOWN_LOCATION is returned.  */
 
-static inline location_t
+inline location_t
 gimple_location_safe (const gimple *g)
 {
   return g ? gimple_location (g) : UNKNOWN_LOCATION;
@@ -1943,7 +1943,7 @@ gimple_location_safe (const gimple *g)
 
 /* Set location information for statement G.  */
 
-static inline void
+inline void
 gimple_set_location (gimple *g, location_t location)
 {
   /* Copy the no-warning data to the statement location.  */
@@ -1954,7 +1954,7 @@ gimple_set_location (gimple *g, location_t location)
 
 /* Return address of the location information for statement G.  */
 
-static inline location_t *
+inline location_t *
 gimple_location_ptr (gimple *g)
 {
   return &g->location;
@@ -1963,7 +1963,7 @@ gimple_location_ptr (gimple *g)
 
 /* Return true if G contains location information.  */
 
-static inline bool
+inline bool
 gimple_has_location (const gimple *g)
 {
   return LOCATION_LOCUS (gimple_location (g)) != UNKNOWN_LOCATION;
@@ -1972,7 +1972,7 @@ gimple_has_location (const gimple *g)
 
 /* Return non-artificial location information for statement G.  */
 
-static inline location_t
+inline location_t
 gimple_nonartificial_location (const gimple *g)
 {
   location_t *ploc = NULL;
@@ -1986,7 +1986,7 @@ gimple_nonartificial_location (const gimple *g)
 
 /* Return the file name of the location of STMT.  */
 
-static inline const char *
+inline const char *
 gimple_filename (const gimple *stmt)
 {
   return LOCATION_FILE (gimple_location (stmt));
@@ -1995,7 +1995,7 @@ gimple_filename (const gimple *stmt)
 
 /* Return the line number of the location of STMT.  */
 
-static inline int
+inline int
 gimple_lineno (const gimple *stmt)
 {
   return LOCATION_LINE (gimple_location (stmt));
@@ -2004,7 +2004,7 @@ gimple_lineno (const gimple *stmt)
 
 /* Determine whether SEQ is a singleton. */
 
-static inline bool
+inline bool
 gimple_seq_singleton_p (gimple_seq seq)
 {
   return ((gimple_seq_first (seq) != NULL)
@@ -2013,7 +2013,7 @@ gimple_seq_singleton_p (gimple_seq seq)
 
 /* Return true if no warnings should be emitted for statement STMT.  */
 
-static inline bool
+inline bool
 gimple_no_warning_p (const gimple *stmt)
 {
   return stmt->no_warning;
@@ -2021,7 +2021,7 @@ gimple_no_warning_p (const gimple *stmt)
 
 /* Set the no_warning flag of STMT to NO_WARNING.  */
 
-static inline void
+inline void
 gimple_set_no_warning (gimple *stmt, bool no_warning)
 {
   stmt->no_warning = (unsigned) no_warning;
@@ -2039,7 +2039,7 @@ gimple_set_no_warning (gimple *stmt, bool no_warning)
    struct gimple.
  */
 
-static inline void
+inline void
 gimple_set_visited (gimple *stmt, bool visited_p)
 {
   stmt->visited = (unsigned) visited_p;
@@ -2057,7 +2057,7 @@ gimple_set_visited (gimple *stmt, bool visited_p)
    statement by reading the comments of the 'visited' data member of
    struct gimple.  */
 
-static inline bool
+inline bool
 gimple_visited_p (gimple *stmt)
 {
   return stmt->visited;
@@ -2074,7 +2074,7 @@ gimple_visited_p (gimple *stmt)
    You can learn more about the PLF property by reading the comment of
    the 'plf' data member of struct gimple_statement_structure.  */
 
-static inline void
+inline void
 gimple_set_plf (gimple *stmt, enum plf_mask plf, bool val_p)
 {
   if (val_p)
@@ -2094,7 +2094,7 @@ gimple_set_plf (gimple *stmt, enum plf_mask plf, bool val_p)
    You can learn more about the plf property by reading the comment of
    the 'plf' data member of struct gimple_statement_structure.  */
 
-static inline unsigned int
+inline unsigned int
 gimple_plf (gimple *stmt, enum plf_mask plf)
 {
   return stmt->plf & ((unsigned int) plf);
@@ -2108,7 +2108,7 @@ gimple_plf (gimple *stmt, enum plf_mask plf)
    contains any useful value when the pass starts and thus can set it
    to any value it sees fit.  */
 
-static inline void
+inline void
 gimple_set_uid (gimple *g, unsigned uid)
 {
   g->uid = uid;
@@ -2122,7 +2122,7 @@ gimple_set_uid (gimple *g, unsigned uid)
    contains any useful value when the pass starts and thus can set it
    to any value it sees fit.  */
 
-static inline unsigned
+inline unsigned
 gimple_uid (const gimple *g)
 {
   return g->uid;
@@ -2131,7 +2131,7 @@ gimple_uid (const gimple *g)
 
 /* Make statement G a singleton sequence.  */
 
-static inline void
+inline void
 gimple_init_singleton (gimple *g)
 {
   g->next = NULL;
@@ -2141,7 +2141,7 @@ gimple_init_singleton (gimple *g)
 
 /* Return true if GIMPLE statement G has register or memory operands.  */
 
-static inline bool
+inline bool
 gimple_has_ops (const gimple *g)
 {
   return gimple_code (g) >= GIMPLE_COND && gimple_code (g) <= GIMPLE_RETURN;
@@ -2165,7 +2165,7 @@ is_a_helper <gimple_statement_with_ops *>::test (gimple *gs)
 
 /* Return true if GIMPLE statement G has memory operands.  */
 
-static inline bool
+inline bool
 gimple_has_mem_ops (const gimple *g)
 {
   return gimple_code (g) >= GIMPLE_ASSIGN && gimple_code (g) <= GIMPLE_RETURN;
@@ -2189,7 +2189,7 @@ is_a_helper <gimple_statement_with_memory_ops *>::test (gimple *gs)
 
 /* Return the set of USE operands for statement G.  */
 
-static inline struct use_optype_d *
+inline struct use_optype_d *
 gimple_use_ops (const gimple *g)
 {
   const gimple_statement_with_ops *ops_stmt =
@@ -2202,7 +2202,7 @@ gimple_use_ops (const gimple *g)
 
 /* Set USE to be the set of USE operands for statement G.  */
 
-static inline void
+inline void
 gimple_set_use_ops (gimple *g, struct use_optype_d *use)
 {
   gimple_statement_with_ops *ops_stmt =
@@ -2213,7 +2213,7 @@ gimple_set_use_ops (gimple *g, struct use_optype_d *use)
 
 /* Return the single VUSE operand of the statement G.  */
 
-static inline tree
+inline tree
 gimple_vuse (const gimple *g)
 {
   const gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2225,7 +2225,7 @@ gimple_vuse (const gimple *g)
 
 /* Return the single VDEF operand of the statement G.  */
 
-static inline tree
+inline tree
 gimple_vdef (const gimple *g)
 {
   const gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2237,7 +2237,7 @@ gimple_vdef (const gimple *g)
 
 /* Return the single VUSE operand of the statement G.  */
 
-static inline tree *
+inline tree *
 gimple_vuse_ptr (gimple *g)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2249,7 +2249,7 @@ gimple_vuse_ptr (gimple *g)
 
 /* Return the single VDEF operand of the statement G.  */
 
-static inline tree *
+inline tree *
 gimple_vdef_ptr (gimple *g)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2261,7 +2261,7 @@ gimple_vdef_ptr (gimple *g)
 
 /* Set the single VUSE operand of the statement G.  */
 
-static inline void
+inline void
 gimple_set_vuse (gimple *g, tree vuse)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2271,7 +2271,7 @@ gimple_set_vuse (gimple *g, tree vuse)
 
 /* Set the single VDEF operand of the statement G.  */
 
-static inline void
+inline void
 gimple_set_vdef (gimple *g, tree vdef)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2283,7 +2283,7 @@ gimple_set_vdef (gimple *g, tree vdef)
 /* Return true if statement G has operands and the modified field has
    been set.  */
 
-static inline bool
+inline bool
 gimple_modified_p (const gimple *g)
 {
   return (gimple_has_ops (g)) ? (bool) g->modified : false;
@@ -2293,7 +2293,7 @@ gimple_modified_p (const gimple *g)
 /* Set the MODIFIED flag to MODIFIEDP, iff the gimple statement G has
    a MODIFIED field.  */
 
-static inline void
+inline void
 gimple_set_modified (gimple *s, bool modifiedp)
 {
   if (gimple_has_ops (s))
@@ -2303,7 +2303,7 @@ gimple_set_modified (gimple *s, bool modifiedp)
 
 /* Return true if statement STMT contains volatile operands.  */
 
-static inline bool
+inline bool
 gimple_has_volatile_ops (const gimple *stmt)
 {
   if (gimple_has_mem_ops (stmt))
@@ -2315,7 +2315,7 @@ gimple_has_volatile_ops (const gimple *stmt)
 
 /* Set the HAS_VOLATILE_OPS flag to VOLATILEP.  */
 
-static inline void
+inline void
 gimple_set_has_volatile_ops (gimple *stmt, bool volatilep)
 {
   if (gimple_has_mem_ops (stmt))
@@ -2324,7 +2324,7 @@ gimple_set_has_volatile_ops (gimple *stmt, bool volatilep)
 
 /* Return true if STMT is in a transaction.  */
 
-static inline bool
+inline bool
 gimple_in_transaction (const gimple *stmt)
 {
   return bb_in_transaction (gimple_bb (stmt));
@@ -2332,7 +2332,7 @@ gimple_in_transaction (const gimple *stmt)
 
 /* Return true if statement STMT may access memory.  */
 
-static inline bool
+inline bool
 gimple_references_memory_p (gimple *stmt)
 {
   return gimple_has_mem_ops (stmt) && gimple_vuse (stmt);
@@ -2341,7 +2341,7 @@ gimple_references_memory_p (gimple *stmt)
 
 /* Return the subcode for OMP statement S.  */
 
-static inline unsigned
+inline unsigned
 gimple_omp_subcode (const gimple *s)
 {
   gcc_gimple_checking_assert (gimple_code (s) >= GIMPLE_OMP_ATOMIC_LOAD
@@ -2351,7 +2351,7 @@ gimple_omp_subcode (const gimple *s)
 
 /* Set the subcode for OMP statement S to SUBCODE.  */
 
-static inline void
+inline void
 gimple_omp_set_subcode (gimple *s, unsigned int subcode)
 {
   /* We only have 16 bits for the subcode.  Assert that we are not
@@ -2362,7 +2362,7 @@ gimple_omp_set_subcode (gimple *s, unsigned int subcode)
 
 /* Set the nowait flag on OMP_RETURN statement S.  */
 
-static inline void
+inline void
 gimple_omp_return_set_nowait (gimple *s)
 {
   GIMPLE_CHECK (s, GIMPLE_OMP_RETURN);
@@ -2373,7 +2373,7 @@ gimple_omp_return_set_nowait (gimple *s)
 /* Return true if OMP return statement G has the GF_OMP_RETURN_NOWAIT
    flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_return_nowait_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_RETURN);
@@ -2383,7 +2383,7 @@ gimple_omp_return_nowait_p (const gimple *g)
 
 /* Set the LHS of OMP return.  */
 
-static inline void
+inline void
 gimple_omp_return_set_lhs (gimple *g, tree lhs)
 {
   gimple_statement_omp_return *omp_return_stmt =
@@ -2394,7 +2394,7 @@ gimple_omp_return_set_lhs (gimple *g, tree lhs)
 
 /* Get the LHS of OMP return.  */
 
-static inline tree
+inline tree
 gimple_omp_return_lhs (const gimple *g)
 {
   const gimple_statement_omp_return *omp_return_stmt =
@@ -2405,7 +2405,7 @@ gimple_omp_return_lhs (const gimple *g)
 
 /* Return a pointer to the LHS of OMP return.  */
 
-static inline tree *
+inline tree *
 gimple_omp_return_lhs_ptr (gimple *g)
 {
   gimple_statement_omp_return *omp_return_stmt =
@@ -2417,7 +2417,7 @@ gimple_omp_return_lhs_ptr (gimple *g)
 /* Return true if OMP section statement G has the GF_OMP_SECTION_LAST
    flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_section_last_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
@@ -2427,7 +2427,7 @@ gimple_omp_section_last_p (const gimple *g)
 
 /* Set the GF_OMP_SECTION_LAST flag on G.  */
 
-static inline void
+inline void
 gimple_omp_section_set_last (gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
@@ -2438,7 +2438,7 @@ gimple_omp_section_set_last (gimple *g)
 /* Return true if OMP ordered construct is stand-alone
    (G has the GF_OMP_ORDERED_STANDALONE flag set).  */
 
-static inline bool
+inline bool
 gimple_omp_ordered_standalone_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_ORDERED);
@@ -2448,7 +2448,7 @@ gimple_omp_ordered_standalone_p (const gimple *g)
 
 /* Set the GF_OMP_ORDERED_STANDALONE flag on G.  */
 
-static inline void
+inline void
 gimple_omp_ordered_standalone (gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_ORDERED);
@@ -2459,7 +2459,7 @@ gimple_omp_ordered_standalone (gimple *g)
 /* Return true if OMP parallel statement G has the
    GF_OMP_PARALLEL_COMBINED flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_parallel_combined_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
@@ -2470,7 +2470,7 @@ gimple_omp_parallel_combined_p (const gimple *g)
 /* Set the GF_OMP_PARALLEL_COMBINED field in G depending on the boolean
    value of COMBINED_P.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_combined_p (gimple *g, bool combined_p)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
@@ -2484,7 +2484,7 @@ gimple_omp_parallel_set_combined_p (gimple *g, bool combined_p)
 /* Return true if OMP atomic load/store statement G has the
    GF_OMP_ATOMIC_NEED_VALUE flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_atomic_need_value_p (const gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2495,7 +2495,7 @@ gimple_omp_atomic_need_value_p (const gimple *g)
 
 /* Set the GF_OMP_ATOMIC_NEED_VALUE flag on G.  */
 
-static inline void
+inline void
 gimple_omp_atomic_set_need_value (gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2507,7 +2507,7 @@ gimple_omp_atomic_set_need_value (gimple *g)
 /* Return true if OMP atomic load/store statement G has the
    GF_OMP_ATOMIC_WEAK flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_atomic_weak_p (const gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2518,7 +2518,7 @@ gimple_omp_atomic_weak_p (const gimple *g)
 
 /* Set the GF_OMP_ATOMIC_WEAK flag on G.  */
 
-static inline void
+inline void
 gimple_omp_atomic_set_weak (gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2529,7 +2529,7 @@ gimple_omp_atomic_set_weak (gimple *g)
 
 /* Return the memory order of the OMP atomic load/store statement G.  */
 
-static inline enum omp_memory_order
+inline enum omp_memory_order
 gimple_omp_atomic_memory_order (const gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2541,7 +2541,7 @@ gimple_omp_atomic_memory_order (const gimple *g)
 
 /* Set the memory order on G.  */
 
-static inline void
+inline void
 gimple_omp_atomic_set_memory_order (gimple *g, enum omp_memory_order mo)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2553,7 +2553,7 @@ gimple_omp_atomic_set_memory_order (gimple *g, enum omp_memory_order mo)
 
 /* Return the number of operands for statement GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_num_ops (const gimple *gs)
 {
   return gs->num_ops;
@@ -2562,7 +2562,7 @@ gimple_num_ops (const gimple *gs)
 
 /* Set the number of operands for statement GS.  */
 
-static inline void
+inline void
 gimple_set_num_ops (gimple *gs, unsigned num_ops)
 {
   gs->num_ops = num_ops;
@@ -2571,7 +2571,7 @@ gimple_set_num_ops (gimple *gs, unsigned num_ops)
 
 /* Return the array of operands for statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_ops (gimple *gs)
 {
   size_t off;
@@ -2588,7 +2588,7 @@ gimple_ops (gimple *gs)
 
 /* Return operand I for statement GS.  */
 
-static inline tree
+inline tree
 gimple_op (const gimple *gs, unsigned i)
 {
   if (gimple_has_ops (gs))
@@ -2602,7 +2602,7 @@ gimple_op (const gimple *gs, unsigned i)
 
 /* Return a pointer to operand I for statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_op_ptr (gimple *gs, unsigned i)
 {
   if (gimple_has_ops (gs))
@@ -2616,7 +2616,7 @@ gimple_op_ptr (gimple *gs, unsigned i)
 
 /* Set operand I of statement GS to OP.  */
 
-static inline void
+inline void
 gimple_set_op (gimple *gs, unsigned i, tree op)
 {
   gcc_gimple_checking_assert (gimple_has_ops (gs) && i < gimple_num_ops (gs));
@@ -2630,7 +2630,7 @@ gimple_set_op (gimple *gs, unsigned i, tree op)
 
 /* Return true if GS is a GIMPLE_ASSIGN.  */
 
-static inline bool
+inline bool
 is_gimple_assign (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_ASSIGN;
@@ -2639,7 +2639,7 @@ is_gimple_assign (const gimple *gs)
 /* Determine if expression CODE is one of the valid expressions that can
    be used on the RHS of GIMPLE assignments.  */
 
-static inline enum gimple_rhs_class
+inline enum gimple_rhs_class
 get_gimple_rhs_class (enum tree_code code)
 {
   return (enum gimple_rhs_class) gimple_rhs_class_table[(int) code];
@@ -2647,13 +2647,13 @@ get_gimple_rhs_class (enum tree_code code)
 
 /* Return the LHS of assignment statement GS.  */
 
-static inline tree
+inline tree
 gimple_assign_lhs (const gassign *gs)
 {
   return gs->op[0];
 }
 
-static inline tree
+inline tree
 gimple_assign_lhs (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2663,13 +2663,13 @@ gimple_assign_lhs (const gimple *gs)
 
 /* Return a pointer to the LHS of assignment statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_lhs_ptr (gassign *gs)
 {
   return &gs->op[0];
 }
 
-static inline tree *
+inline tree *
 gimple_assign_lhs_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2679,7 +2679,7 @@ gimple_assign_lhs_ptr (gimple *gs)
 
 /* Set LHS to be the LHS operand of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_lhs (gassign *gs, tree lhs)
 {
   gs->op[0] = lhs;
@@ -2688,7 +2688,7 @@ gimple_assign_set_lhs (gassign *gs, tree lhs)
     SSA_NAME_DEF_STMT (lhs) = gs;
 }
 
-static inline void
+inline void
 gimple_assign_set_lhs (gimple *gs, tree lhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2698,13 +2698,13 @@ gimple_assign_set_lhs (gimple *gs, tree lhs)
 
 /* Return the first operand on the RHS of assignment statement GS.  */
 
-static inline tree
+inline tree
 gimple_assign_rhs1 (const gassign *gs)
 {
   return gs->op[1];
 }
 
-static inline tree
+inline tree
 gimple_assign_rhs1 (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2715,13 +2715,13 @@ gimple_assign_rhs1 (const gimple *gs)
 /* Return a pointer to the first operand on the RHS of assignment
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_rhs1_ptr (gassign *gs)
 {
   return &gs->op[1];
 }
 
-static inline tree *
+inline tree *
 gimple_assign_rhs1_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2730,13 +2730,13 @@ gimple_assign_rhs1_ptr (gimple *gs)
 
 /* Set RHS to be the first operand on the RHS of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs1 (gassign *gs, tree rhs)
 {
   gs->op[1] = rhs;
 }
 
-static inline void
+inline void
 gimple_assign_set_rhs1 (gimple *gs, tree rhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2747,7 +2747,7 @@ gimple_assign_set_rhs1 (gimple *gs, tree rhs)
 /* Return the second operand on the RHS of assignment statement GS.
    If GS does not have two operands, NULL is returned instead.  */
 
-static inline tree
+inline tree
 gimple_assign_rhs2 (const gassign *gs)
 {
   if (gimple_num_ops (gs) >= 3)
@@ -2756,7 +2756,7 @@ gimple_assign_rhs2 (const gassign *gs)
     return NULL_TREE;
 }
 
-static inline tree
+inline tree
 gimple_assign_rhs2 (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2767,14 +2767,14 @@ gimple_assign_rhs2 (const gimple *gs)
 /* Return a pointer to the second operand on the RHS of assignment
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_rhs2_ptr (gassign *gs)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) >= 3);
   return &gs->op[2];
 }
 
-static inline tree *
+inline tree *
 gimple_assign_rhs2_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2784,14 +2784,14 @@ gimple_assign_rhs2_ptr (gimple *gs)
 
 /* Set RHS to be the second operand on the RHS of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs2 (gassign *gs, tree rhs)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) >= 3);
   gs->op[2] = rhs;
 }
 
-static inline void
+inline void
 gimple_assign_set_rhs2 (gimple *gs, tree rhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2801,7 +2801,7 @@ gimple_assign_set_rhs2 (gimple *gs, tree rhs)
 /* Return the third operand on the RHS of assignment statement GS.
    If GS does not have two operands, NULL is returned instead.  */
 
-static inline tree
+inline tree
 gimple_assign_rhs3 (const gassign *gs)
 {
   if (gimple_num_ops (gs) >= 4)
@@ -2810,7 +2810,7 @@ gimple_assign_rhs3 (const gassign *gs)
     return NULL_TREE;
 }
 
-static inline tree
+inline tree
 gimple_assign_rhs3 (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2820,7 +2820,7 @@ gimple_assign_rhs3 (const gimple *gs)
 /* Return a pointer to the third operand on the RHS of assignment
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_rhs3_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2831,14 +2831,14 @@ gimple_assign_rhs3_ptr (gimple *gs)
 
 /* Set RHS to be the third operand on the RHS of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs3 (gassign *gs, tree rhs)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) >= 4);
   gs->op[3] = rhs;
 }
 
-static inline void
+inline void
 gimple_assign_set_rhs3 (gimple *gs, tree rhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2849,7 +2849,7 @@ gimple_assign_set_rhs3 (gimple *gs, tree rhs)
 /* A wrapper around 3 operand gimple_assign_set_rhs_with_ops, for callers
    which expect to see only two operands.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 				tree op1, tree op2)
 {
@@ -2859,7 +2859,7 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 /* A wrapper around 3 operand gimple_assign_set_rhs_with_ops, for callers
    which expect to see only one operands.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 				tree op1)
 {
@@ -2868,7 +2868,7 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 
 /* Returns true if GS is a nontemporal move.  */
 
-static inline bool
+inline bool
 gimple_assign_nontemporal_move_p (const gassign *gs)
 {
   return gs->nontemporal_move;
@@ -2876,7 +2876,7 @@ gimple_assign_nontemporal_move_p (const gassign *gs)
 
 /* Sets nontemporal move flag of GS to NONTEMPORAL.  */
 
-static inline void
+inline void
 gimple_assign_set_nontemporal_move (gimple *gs, bool nontemporal)
 {
   GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
@@ -2888,7 +2888,7 @@ gimple_assign_set_nontemporal_move (gimple *gs, bool nontemporal)
    statement GS.  In case that the RHS is a single object, returns the
    tree code of the object.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_assign_rhs_code (const gassign *gs)
 {
   enum tree_code code = (enum tree_code) gs->subcode;
@@ -2901,7 +2901,7 @@ gimple_assign_rhs_code (const gassign *gs)
   return code;
 }
 
-static inline enum tree_code
+inline enum tree_code
 gimple_assign_rhs_code (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2912,7 +2912,7 @@ gimple_assign_rhs_code (const gimple *gs)
 /* Set CODE to be the code for the expression computed on the RHS of
    assignment S.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs_code (gimple *s, enum tree_code code)
 {
   GIMPLE_CHECK (s, GIMPLE_ASSIGN);
@@ -2924,7 +2924,7 @@ gimple_assign_set_rhs_code (gimple *s, enum tree_code code)
    the rhs of assignment statement GS.
    This will never return GIMPLE_INVALID_RHS.  */
 
-static inline enum gimple_rhs_class
+inline enum gimple_rhs_class
 gimple_assign_rhs_class (const gimple *gs)
 {
   return get_gimple_rhs_class (gimple_assign_rhs_code (gs));
@@ -2936,7 +2936,7 @@ gimple_assign_rhs_class (const gimple *gs)
    any RHS operand, including those that perform an operation
    and do not have the semantics of a copy, such as COND_EXPR.  */
 
-static inline bool
+inline bool
 gimple_assign_single_p (const gimple *gs)
 {
   return (is_gimple_assign (gs)
@@ -2945,7 +2945,7 @@ gimple_assign_single_p (const gimple *gs)
 
 /* Return true if GS performs a store to its lhs.  */
 
-static inline bool
+inline bool
 gimple_store_p (const gimple *gs)
 {
   tree lhs = gimple_get_lhs (gs);
@@ -2954,7 +2954,7 @@ gimple_store_p (const gimple *gs)
 
 /* Return true if GS is an assignment that loads from its rhs1.  */
 
-static inline bool
+inline bool
 gimple_assign_load_p (const gimple *gs)
 {
   tree rhs;
@@ -2971,7 +2971,7 @@ gimple_assign_load_p (const gimple *gs)
 
 /* Return true if S is a type-cast assignment.  */
 
-static inline bool
+inline bool
 gimple_assign_cast_p (const gimple *s)
 {
   if (is_gimple_assign (s))
@@ -2987,7 +2987,7 @@ gimple_assign_cast_p (const gimple *s)
 
 /* Return true if S is a clobber statement.  */
 
-static inline bool
+inline bool
 gimple_clobber_p (const gimple *s)
 {
   return gimple_assign_single_p (s)
@@ -2996,7 +2996,7 @@ gimple_clobber_p (const gimple *s)
 
 /* Return true if S is a clobber statement.  */
 
-static inline bool
+inline bool
 gimple_clobber_p (const gimple *s, enum clobber_kind kind)
 {
   return gimple_clobber_p (s)
@@ -3005,7 +3005,7 @@ gimple_clobber_p (const gimple *s, enum clobber_kind kind)
 
 /* Return true if GS is a GIMPLE_CALL.  */
 
-static inline bool
+inline bool
 is_gimple_call (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_CALL;
@@ -3013,13 +3013,13 @@ is_gimple_call (const gimple *gs)
 
 /* Return the LHS of call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_lhs (const gcall *gs)
 {
   return gs->op[0];
 }
 
-static inline tree
+inline tree
 gimple_call_lhs (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3029,13 +3029,13 @@ gimple_call_lhs (const gimple *gs)
 
 /* Return a pointer to the LHS of call statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_call_lhs_ptr (gcall *gs)
 {
   return &gs->op[0];
 }
 
-static inline tree *
+inline tree *
 gimple_call_lhs_ptr (gimple *gs)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3045,7 +3045,7 @@ gimple_call_lhs_ptr (gimple *gs)
 
 /* Set LHS to be the LHS operand of call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_lhs (gcall *gs, tree lhs)
 {
   gs->op[0] = lhs;
@@ -3053,7 +3053,7 @@ gimple_call_set_lhs (gcall *gs, tree lhs)
     SSA_NAME_DEF_STMT (lhs) = gs;
 }
 
-static inline void
+inline void
 gimple_call_set_lhs (gimple *gs, tree lhs)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3064,13 +3064,13 @@ gimple_call_set_lhs (gimple *gs, tree lhs)
 /* Return true if call GS calls an internal-only function, as enumerated
    by internal_fn.  */
 
-static inline bool
+inline bool
 gimple_call_internal_p (const gcall *gs)
 {
   return (gs->subcode & GF_CALL_INTERNAL) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_internal_p (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3079,7 +3079,7 @@ gimple_call_internal_p (const gimple *gs)
 
 /* Return true if call GS is marked as nocf_check.  */
 
-static inline bool
+inline bool
 gimple_call_nocf_check_p (const gcall *gs)
 {
   return (gs->subcode & GF_CALL_NOCF_CHECK) != 0;
@@ -3087,7 +3087,7 @@ gimple_call_nocf_check_p (const gcall *gs)
 
 /* Mark statement GS as nocf_check call.  */
 
-static inline void
+inline void
 gimple_call_set_nocf_check (gcall *gs, bool nocf_check)
 {
   if (nocf_check)
@@ -3098,14 +3098,14 @@ gimple_call_set_nocf_check (gcall *gs, bool nocf_check)
 
 /* Return the target of internal call GS.  */
 
-static inline enum internal_fn
+inline enum internal_fn
 gimple_call_internal_fn (const gcall *gs)
 {
   gcc_gimple_checking_assert (gimple_call_internal_p (gs));
   return gs->u.internal_fn;
 }
 
-static inline enum internal_fn
+inline enum internal_fn
 gimple_call_internal_fn (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3114,13 +3114,13 @@ gimple_call_internal_fn (const gimple *gs)
 
 /* Return true, if this internal gimple call is unique.  */
 
-static inline bool
+inline bool
 gimple_call_internal_unique_p (const gcall *gs)
 {
   return gimple_call_internal_fn (gs) == IFN_UNIQUE;
 }
 
-static inline bool
+inline bool
 gimple_call_internal_unique_p (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3129,7 +3129,7 @@ gimple_call_internal_unique_p (const gimple *gs)
 
 /* Return true if GS is an internal function FN.  */
 
-static inline bool
+inline bool
 gimple_call_internal_p (const gimple *gs, internal_fn fn)
 {
   return (is_gimple_call (gs)
@@ -3140,7 +3140,7 @@ gimple_call_internal_p (const gimple *gs, internal_fn fn)
 /* If CTRL_ALTERING_P is true, mark GIMPLE_CALL S to be a stmt
    that could alter control flow.  */
 
-static inline void
+inline void
 gimple_call_set_ctrl_altering (gcall *s, bool ctrl_altering_p)
 {
   if (ctrl_altering_p)
@@ -3149,7 +3149,7 @@ gimple_call_set_ctrl_altering (gcall *s, bool ctrl_altering_p)
     s->subcode &= ~GF_CALL_CTRL_ALTERING;
 }
 
-static inline void
+inline void
 gimple_call_set_ctrl_altering (gimple *s, bool ctrl_altering_p)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (s);
@@ -3159,13 +3159,13 @@ gimple_call_set_ctrl_altering (gimple *s, bool ctrl_altering_p)
 /* Return true if call GS calls an func whose GF_CALL_CTRL_ALTERING
    flag is set. Such call could not be a stmt in the middle of a bb.  */
 
-static inline bool
+inline bool
 gimple_call_ctrl_altering_p (const gcall *gs)
 {
   return (gs->subcode & GF_CALL_CTRL_ALTERING) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_ctrl_altering_p (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3175,7 +3175,7 @@ gimple_call_ctrl_altering_p (const gimple *gs)
 
 /* Return the function type of the function called by GS.  */
 
-static inline tree
+inline tree
 gimple_call_fntype (const gcall *gs)
 {
   if (gimple_call_internal_p (gs))
@@ -3183,7 +3183,7 @@ gimple_call_fntype (const gcall *gs)
   return gs->u.fntype;
 }
 
-static inline tree
+inline tree
 gimple_call_fntype (const gimple *gs)
 {
   const gcall *call_stmt = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3192,7 +3192,7 @@ gimple_call_fntype (const gimple *gs)
 
 /* Set the type of the function called by CALL_STMT to FNTYPE.  */
 
-static inline void
+inline void
 gimple_call_set_fntype (gcall *call_stmt, tree fntype)
 {
   gcc_gimple_checking_assert (!gimple_call_internal_p (call_stmt));
@@ -3203,13 +3203,13 @@ gimple_call_set_fntype (gcall *call_stmt, tree fntype)
 /* Return the tree node representing the function called by call
    statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_fn (const gcall *gs)
 {
   return gs->op[1];
 }
 
-static inline tree
+inline tree
 gimple_call_fn (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3219,13 +3219,13 @@ gimple_call_fn (const gimple *gs)
 /* Return a pointer to the tree node representing the function called by call
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_call_fn_ptr (gcall *gs)
 {
   return &gs->op[1];
 }
 
-static inline tree *
+inline tree *
 gimple_call_fn_ptr (gimple *gs)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3235,7 +3235,7 @@ gimple_call_fn_ptr (gimple *gs)
 
 /* Set FN to be the function called by call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_fn (gcall *gs, tree fn)
 {
   gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
@@ -3245,7 +3245,7 @@ gimple_call_set_fn (gcall *gs, tree fn)
 
 /* Set FNDECL to be the function called by call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_fndecl (gcall *gs, tree decl)
 {
   gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
@@ -3253,7 +3253,7 @@ gimple_call_set_fndecl (gcall *gs, tree decl)
 			  build_pointer_type (TREE_TYPE (decl)), decl);
 }
 
-static inline void
+inline void
 gimple_call_set_fndecl (gimple *gs, tree decl)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3263,7 +3263,7 @@ gimple_call_set_fndecl (gimple *gs, tree decl)
 
 /* Set internal function FN to be the function called by call statement CALL_STMT.  */
 
-static inline void
+inline void
 gimple_call_set_internal_fn (gcall *call_stmt, enum internal_fn fn)
 {
   gcc_gimple_checking_assert (gimple_call_internal_p (call_stmt));
@@ -3275,13 +3275,13 @@ gimple_call_set_internal_fn (gcall *call_stmt, enum internal_fn fn)
    Otherwise return NULL.  This function is analogous to
    get_callee_fndecl in tree land.  */
 
-static inline tree
+inline tree
 gimple_call_fndecl (const gcall *gs)
 {
   return gimple_call_addr_fndecl (gimple_call_fn (gs));
 }
 
-static inline tree
+inline tree
 gimple_call_fndecl (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3291,7 +3291,7 @@ gimple_call_fndecl (const gimple *gs)
 
 /* Return the type returned by call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_return_type (const gcall *gs)
 {
   tree type = gimple_call_fntype (gs);
@@ -3307,13 +3307,13 @@ gimple_call_return_type (const gcall *gs)
 
 /* Return the static chain for call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_chain (const gcall *gs)
 {
   return gs->op[2];
 }
 
-static inline tree
+inline tree
 gimple_call_chain (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3323,7 +3323,7 @@ gimple_call_chain (const gimple *gs)
 
 /* Return a pointer to the static chain for call statement CALL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_call_chain_ptr (gcall *call_stmt)
 {
   return &call_stmt->op[2];
@@ -3331,7 +3331,7 @@ gimple_call_chain_ptr (gcall *call_stmt)
 
 /* Set CHAIN to be the static chain for call statement CALL_STMT.  */
 
-static inline void
+inline void
 gimple_call_set_chain (gcall *call_stmt, tree chain)
 {
   call_stmt->op[2] = chain;
@@ -3340,13 +3340,13 @@ gimple_call_set_chain (gcall *call_stmt, tree chain)
 
 /* Return the number of arguments used by call statement GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_call_num_args (const gcall *gs)
 {
   return gimple_num_ops (gs) - 3;
 }
 
-static inline unsigned
+inline unsigned
 gimple_call_num_args (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3356,14 +3356,14 @@ gimple_call_num_args (const gimple *gs)
 
 /* Return the argument at position INDEX for call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_arg (const gcall *gs, unsigned index)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
   return gs->op[index + 3];
 }
 
-static inline tree
+inline tree
 gimple_call_arg (const gimple *gs, unsigned index)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3374,14 +3374,14 @@ gimple_call_arg (const gimple *gs, unsigned index)
 /* Return a pointer to the argument at position INDEX for call
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_call_arg_ptr (gcall *gs, unsigned index)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
   return &gs->op[index + 3];
 }
 
-static inline tree *
+inline tree *
 gimple_call_arg_ptr (gimple *gs, unsigned index)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3391,14 +3391,14 @@ gimple_call_arg_ptr (gimple *gs, unsigned index)
 
 /* Set ARG to be the argument at position INDEX for call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_arg (gcall *gs, unsigned index, tree arg)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
   gs->op[index + 3] = arg;
 }
 
-static inline void
+inline void
 gimple_call_set_arg (gimple *gs, unsigned index, tree arg)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3410,7 +3410,7 @@ gimple_call_set_arg (gimple *gs, unsigned index, tree arg)
    (i.e., a call just before the exit of a function).  These calls are
    candidate for tail call optimization.  */
 
-static inline void
+inline void
 gimple_call_set_tail (gcall *s, bool tail_p)
 {
   if (tail_p)
@@ -3422,7 +3422,7 @@ gimple_call_set_tail (gcall *s, bool tail_p)
 
 /* Return true if GIMPLE_CALL S is marked as a tail call.  */
 
-static inline bool
+inline bool
 gimple_call_tail_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_TAILCALL) != 0;
@@ -3430,7 +3430,7 @@ gimple_call_tail_p (const gcall *s)
 
 /* Mark (or clear) call statement S as requiring tail call optimization.  */
 
-static inline void
+inline void
 gimple_call_set_must_tail (gcall *s, bool must_tail_p)
 {
   if (must_tail_p)
@@ -3442,7 +3442,7 @@ gimple_call_set_must_tail (gcall *s, bool must_tail_p)
 /* Return true if call statement has been marked as requiring
    tail call optimization.  */
 
-static inline bool
+inline bool
 gimple_call_must_tail_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_MUST_TAIL_CALL) != 0;
@@ -3452,7 +3452,7 @@ gimple_call_must_tail_p (const gcall *s)
    slot optimization.  This transformation uses the target of the call
    expansion as the return slot for calls that return in memory.  */
 
-static inline void
+inline void
 gimple_call_set_return_slot_opt (gcall *s, bool return_slot_opt_p)
 {
   if (return_slot_opt_p)
@@ -3464,7 +3464,7 @@ gimple_call_set_return_slot_opt (gcall *s, bool return_slot_opt_p)
 
 /* Return true if S is marked for return slot optimization.  */
 
-static inline bool
+inline bool
 gimple_call_return_slot_opt_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_RETURN_SLOT_OPT) != 0;
@@ -3474,7 +3474,7 @@ gimple_call_return_slot_opt_p (const gcall *s)
 /* If FROM_THUNK_P is true, mark GIMPLE_CALL S as being the jump from a
    thunk to the thunked-to function.  */
 
-static inline void
+inline void
 gimple_call_set_from_thunk (gcall *s, bool from_thunk_p)
 {
   if (from_thunk_p)
@@ -3486,7 +3486,7 @@ gimple_call_set_from_thunk (gcall *s, bool from_thunk_p)
 
 /* Return true if GIMPLE_CALL S is a jump from a thunk.  */
 
-static inline bool
+inline bool
 gimple_call_from_thunk_p (gcall *s)
 {
   return (s->subcode & GF_CALL_FROM_THUNK) != 0;
@@ -3496,7 +3496,7 @@ gimple_call_from_thunk_p (gcall *s)
 /* If FROM_NEW_OR_DELETE_P is true, mark GIMPLE_CALL S as being a call
    to operator new or delete created from a new or delete expression.  */
 
-static inline void
+inline void
 gimple_call_set_from_new_or_delete (gcall *s, bool from_new_or_delete_p)
 {
   if (from_new_or_delete_p)
@@ -3509,7 +3509,7 @@ gimple_call_set_from_new_or_delete (gcall *s, bool from_new_or_delete_p)
 /* Return true if GIMPLE_CALL S is a call to operator new or delete from
    from a new or delete expression.  */
 
-static inline bool
+inline bool
 gimple_call_from_new_or_delete (const gcall *s)
 {
   return (s->subcode & GF_CALL_FROM_NEW_OR_DELETE) != 0;
@@ -3519,7 +3519,7 @@ gimple_call_from_new_or_delete (const gcall *s)
 /* If PASS_ARG_PACK_P is true, GIMPLE_CALL S is a stdarg call that needs the
    argument pack in its argument list.  */
 
-static inline void
+inline void
 gimple_call_set_va_arg_pack (gcall *s, bool pass_arg_pack_p)
 {
   if (pass_arg_pack_p)
@@ -3532,7 +3532,7 @@ gimple_call_set_va_arg_pack (gcall *s, bool pass_arg_pack_p)
 /* Return true if GIMPLE_CALL S is a stdarg call that needs the
    argument pack in its argument list.  */
 
-static inline bool
+inline bool
 gimple_call_va_arg_pack_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_VA_ARG_PACK) != 0;
@@ -3541,13 +3541,13 @@ gimple_call_va_arg_pack_p (const gcall *s)
 
 /* Return true if S is a noreturn call.  */
 
-static inline bool
+inline bool
 gimple_call_noreturn_p (const gcall *s)
 {
   return (gimple_call_flags (s) & ECF_NORETURN) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_noreturn_p (const gimple *s)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (s);
@@ -3558,7 +3558,7 @@ gimple_call_noreturn_p (const gimple *s)
 /* If NOTHROW_P is true, GIMPLE_CALL S is a call that is known to not throw
    even if the called function can throw in other cases.  */
 
-static inline void
+inline void
 gimple_call_set_nothrow (gcall *s, bool nothrow_p)
 {
   if (nothrow_p)
@@ -3569,7 +3569,7 @@ gimple_call_set_nothrow (gcall *s, bool nothrow_p)
 
 /* Return true if S is a nothrow call.  */
 
-static inline bool
+inline bool
 gimple_call_nothrow_p (gcall *s)
 {
   return (gimple_call_flags (s) & ECF_NOTHROW) != 0;
@@ -3580,7 +3580,7 @@ gimple_call_nothrow_p (gcall *s)
    stack_save/stack_restore calls and hence can't lead to unbounded
    stack growth even when they occur in loops.  */
 
-static inline void
+inline void
 gimple_call_set_alloca_for_var (gcall *s, bool for_var)
 {
   if (for_var)
@@ -3591,13 +3591,13 @@ gimple_call_set_alloca_for_var (gcall *s, bool for_var)
 
 /* Return true of S is a call to builtin_alloca emitted for VLA objects.  */
 
-static inline bool
+inline bool
 gimple_call_alloca_for_var_p (gcall *s)
 {
   return (s->subcode & GF_CALL_ALLOCA_FOR_VAR) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_alloca_for_var_p (gimple *s)
 {
   const gcall *gc = GIMPLE_CHECK2<gcall *> (s);
@@ -3607,7 +3607,7 @@ gimple_call_alloca_for_var_p (gimple *s)
 /* If BY_DESCRIPTOR_P is true, GIMPLE_CALL S is an indirect call for which
    pointers to nested function are descriptors instead of trampolines.  */
 
-static inline void
+inline void
 gimple_call_set_by_descriptor (gcall  *s, bool by_descriptor_p)
 {
   if (by_descriptor_p)
@@ -3618,7 +3618,7 @@ gimple_call_set_by_descriptor (gcall  *s, bool by_descriptor_p)
 
 /* Return true if S is a by-descriptor call.  */
 
-static inline bool
+inline bool
 gimple_call_by_descriptor_p (gcall *s)
 {
   return (s->subcode & GF_CALL_BY_DESCRIPTOR) != 0;
@@ -3626,7 +3626,7 @@ gimple_call_by_descriptor_p (gcall *s)
 
 /* Copy all the GF_CALL_* flags from ORIG_CALL to DEST_CALL.  */
 
-static inline void
+inline void
 gimple_call_copy_flags (gcall *dest_call, gcall *orig_call)
 {
   dest_call->subcode = orig_call->subcode;
@@ -3636,7 +3636,7 @@ gimple_call_copy_flags (gcall *dest_call, gcall *orig_call)
 /* Return a pointer to the points-to solution for the set of call-used
    variables of the call CALL_STMT.  */
 
-static inline struct pt_solution *
+inline struct pt_solution *
 gimple_call_use_set (gcall *call_stmt)
 {
   return &call_stmt->call_used;
@@ -3644,7 +3644,7 @@ gimple_call_use_set (gcall *call_stmt)
 
 /* As above, but const.  */
 
-static inline const pt_solution *
+inline const pt_solution *
 gimple_call_use_set (const gcall *call_stmt)
 {
   return &call_stmt->call_used;
@@ -3653,7 +3653,7 @@ gimple_call_use_set (const gcall *call_stmt)
 /* Return a pointer to the points-to solution for the set of call-used
    variables of the call CALL_STMT.  */
 
-static inline struct pt_solution *
+inline struct pt_solution *
 gimple_call_clobber_set (gcall *call_stmt)
 {
   return &call_stmt->call_clobbered;
@@ -3661,7 +3661,7 @@ gimple_call_clobber_set (gcall *call_stmt)
 
 /* As above, but const.  */
 
-static inline const pt_solution *
+inline const pt_solution *
 gimple_call_clobber_set (const gcall *call_stmt)
 {
   return &call_stmt->call_clobbered;
@@ -3671,7 +3671,7 @@ gimple_call_clobber_set (const gcall *call_stmt)
 /* Returns true if this is a GIMPLE_ASSIGN or a GIMPLE_CALL with a
    non-NULL lhs.  */
 
-static inline bool
+inline bool
 gimple_has_lhs (const gimple *stmt)
 {
   if (is_gimple_assign (stmt))
@@ -3684,13 +3684,13 @@ gimple_has_lhs (const gimple *stmt)
 
 /* Return the code of the predicate computed by conditional statement GS.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_cond_code (const gcond *gs)
 {
   return (enum tree_code) gs->subcode;
 }
 
-static inline enum tree_code
+inline enum tree_code
 gimple_cond_code (const gimple *gs)
 {
   const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
@@ -3700,7 +3700,7 @@ gimple_cond_code (const gimple *gs)
 
 /* Set CODE to be the predicate code for the conditional statement GS.  */
 
-static inline void
+inline void
 gimple_cond_set_code (gcond *gs, enum tree_code code)
 {
   gs->subcode = code;
@@ -3709,13 +3709,13 @@ gimple_cond_set_code (gcond *gs, enum tree_code code)
 
 /* Return the LHS of the predicate computed by conditional statement GS.  */
 
-static inline tree
+inline tree
 gimple_cond_lhs (const gcond *gs)
 {
   return gs->op[0];
 }
 
-static inline tree
+inline tree
 gimple_cond_lhs (const gimple *gs)
 {
   const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
@@ -3725,7 +3725,7 @@ gimple_cond_lhs (const gimple *gs)
 /* Return the pointer to the LHS of the predicate computed by conditional
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_cond_lhs_ptr (gcond *gs)
 {
   return &gs->op[0];
@@ -3734,7 +3734,7 @@ gimple_cond_lhs_ptr (gcond *gs)
 /* Set LHS to be the LHS operand of the predicate computed by
    conditional statement GS.  */
 
-static inline void
+inline void
 gimple_cond_set_lhs (gcond *gs, tree lhs)
 {
   gs->op[0] = lhs;
@@ -3743,13 +3743,13 @@ gimple_cond_set_lhs (gcond *gs, tree lhs)
 
 /* Return the RHS operand of the predicate computed by conditional GS.  */
 
-static inline tree
+inline tree
 gimple_cond_rhs (const gcond *gs)
 {
   return gs->op[1];
 }
 
-static inline tree
+inline tree
 gimple_cond_rhs (const gimple *gs)
 {
   const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
@@ -3759,7 +3759,7 @@ gimple_cond_rhs (const gimple *gs)
 /* Return the pointer to the RHS operand of the predicate computed by
    conditional GS.  */
 
-static inline tree *
+inline tree *
 gimple_cond_rhs_ptr (gcond *gs)
 {
   return &gs->op[1];
@@ -3769,7 +3769,7 @@ gimple_cond_rhs_ptr (gcond *gs)
 /* Set RHS to be the RHS operand of the predicate computed by
    conditional statement GS.  */
 
-static inline void
+inline void
 gimple_cond_set_rhs (gcond *gs, tree rhs)
 {
   gs->op[1] = rhs;
@@ -3779,7 +3779,7 @@ gimple_cond_set_rhs (gcond *gs, tree rhs)
 /* Return the label used by conditional statement GS when its
    predicate evaluates to true.  */
 
-static inline tree
+inline tree
 gimple_cond_true_label (const gcond *gs)
 {
   return gs->op[2];
@@ -3789,7 +3789,7 @@ gimple_cond_true_label (const gcond *gs)
 /* Set LABEL to be the label used by conditional statement GS when its
    predicate evaluates to true.  */
 
-static inline void
+inline void
 gimple_cond_set_true_label (gcond *gs, tree label)
 {
   gs->op[2] = label;
@@ -3799,7 +3799,7 @@ gimple_cond_set_true_label (gcond *gs, tree label)
 /* Set LABEL to be the label used by conditional statement GS when its
    predicate evaluates to false.  */
 
-static inline void
+inline void
 gimple_cond_set_false_label (gcond *gs, tree label)
 {
   gs->op[3] = label;
@@ -3809,7 +3809,7 @@ gimple_cond_set_false_label (gcond *gs, tree label)
 /* Return the label used by conditional statement GS when its
    predicate evaluates to false.  */
 
-static inline tree
+inline tree
 gimple_cond_false_label (const gcond *gs)
 {
   return gs->op[3];
@@ -3818,7 +3818,7 @@ gimple_cond_false_label (const gcond *gs)
 
 /* Set the conditional COND_STMT to be of the form 'if (1 == 0)'.  */
 
-static inline void
+inline void
 gimple_cond_make_false (gcond *gs)
 {
   gimple_cond_set_lhs (gs, boolean_false_node);
@@ -3829,7 +3829,7 @@ gimple_cond_make_false (gcond *gs)
 
 /* Set the conditional COND_STMT to be of the form 'if (1 == 1)'.  */
 
-static inline void
+inline void
 gimple_cond_make_true (gcond *gs)
 {
   gimple_cond_set_lhs (gs, boolean_true_node);
@@ -3840,7 +3840,7 @@ gimple_cond_make_true (gcond *gs)
 /* Check if conditional statemente GS is of the form 'if (1 == 1)',
   'if (0 == 0)', 'if (1 != 0)' or 'if (0 != 1)' */
 
-static inline bool
+inline bool
 gimple_cond_true_p (const gcond *gs)
 {
   tree lhs = gimple_cond_lhs (gs);
@@ -3865,7 +3865,7 @@ gimple_cond_true_p (const gcond *gs)
 /* Check if conditional statement GS is of the form 'if (1 != 1)',
    'if (0 != 0)', 'if (1 == 0)' or 'if (0 == 1)' */
 
-static inline bool
+inline bool
 gimple_cond_false_p (const gcond *gs)
 {
   tree lhs = gimple_cond_lhs (gs);
@@ -3889,7 +3889,7 @@ gimple_cond_false_p (const gcond *gs)
 
 /* Set the code, LHS and RHS of GIMPLE_COND STMT from CODE, LHS and RHS.  */
 
-static inline void
+inline void
 gimple_cond_set_condition (gcond *stmt, enum tree_code code, tree lhs,
 			   tree rhs)
 {
@@ -3905,7 +3905,7 @@ gimple_cond_set_condition (gcond *stmt, enum tree_code code, tree lhs,
    consistency.  This is useful when the caller needs to deal with the
    three kinds of computation that GIMPLE supports.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_expr_code (const gimple *stmt)
 {
   if (const gassign *ass = dyn_cast<const gassign *> (stmt))
@@ -3922,7 +3922,7 @@ gimple_expr_code (const gimple *stmt)
 
 /* Return the LABEL_DECL node used by GIMPLE_LABEL statement GS.  */
 
-static inline tree
+inline tree
 gimple_label_label (const glabel *gs)
 {
   return gs->op[0];
@@ -3932,7 +3932,7 @@ gimple_label_label (const glabel *gs)
 /* Set LABEL to be the LABEL_DECL node used by GIMPLE_LABEL statement
    GS.  */
 
-static inline void
+inline void
 gimple_label_set_label (glabel *gs, tree label)
 {
   gs->op[0] = label;
@@ -3941,7 +3941,7 @@ gimple_label_set_label (glabel *gs, tree label)
 
 /* Return the destination of the unconditional jump GS.  */
 
-static inline tree
+inline tree
 gimple_goto_dest (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_GOTO);
@@ -3951,7 +3951,7 @@ gimple_goto_dest (const gimple *gs)
 
 /* Set DEST to be the destination of the unconditonal jump GS.  */
 
-static inline void
+inline void
 gimple_goto_set_dest (ggoto *gs, tree dest)
 {
   gs->op[0] = dest;
@@ -3960,7 +3960,7 @@ gimple_goto_set_dest (ggoto *gs, tree dest)
 
 /* Return the variables declared in the GIMPLE_BIND statement GS.  */
 
-static inline tree
+inline tree
 gimple_bind_vars (const gbind *bind_stmt)
 {
   return bind_stmt->vars;
@@ -3970,7 +3970,7 @@ gimple_bind_vars (const gbind *bind_stmt)
 /* Set VARS to be the set of variables declared in the GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_set_vars (gbind *bind_stmt, tree vars)
 {
   bind_stmt->vars = vars;
@@ -3980,14 +3980,14 @@ gimple_bind_set_vars (gbind *bind_stmt, tree vars)
 /* Append VARS to the set of variables declared in the GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_append_vars (gbind *bind_stmt, tree vars)
 {
   bind_stmt->vars = chainon (bind_stmt->vars, vars);
 }
 
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_bind_body_ptr (gbind *bind_stmt)
 {
   return &bind_stmt->body;
@@ -3995,7 +3995,7 @@ gimple_bind_body_ptr (gbind *bind_stmt)
 
 /* Return the GIMPLE sequence contained in the GIMPLE_BIND statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_bind_body (const gbind *gs)
 {
   return *gimple_bind_body_ptr (const_cast <gbind *> (gs));
@@ -4005,7 +4005,7 @@ gimple_bind_body (const gbind *gs)
 /* Set SEQ to be the GIMPLE sequence contained in the GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_set_body (gbind *bind_stmt, gimple_seq seq)
 {
   bind_stmt->body = seq;
@@ -4014,7 +4014,7 @@ gimple_bind_set_body (gbind *bind_stmt, gimple_seq seq)
 
 /* Append a statement to the end of a GIMPLE_BIND's body.  */
 
-static inline void
+inline void
 gimple_bind_add_stmt (gbind *bind_stmt, gimple *stmt)
 {
   gimple_seq_add_stmt (&bind_stmt->body, stmt);
@@ -4023,7 +4023,7 @@ gimple_bind_add_stmt (gbind *bind_stmt, gimple *stmt)
 
 /* Append a sequence of statements to the end of a GIMPLE_BIND's body.  */
 
-static inline void
+inline void
 gimple_bind_add_seq (gbind *bind_stmt, gimple_seq seq)
 {
   gimple_seq_add_seq (&bind_stmt->body, seq);
@@ -4033,7 +4033,7 @@ gimple_bind_add_seq (gbind *bind_stmt, gimple_seq seq)
 /* Return the TREE_BLOCK node associated with GIMPLE_BIND statement
    GS.  This is analogous to the BIND_EXPR_BLOCK field in trees.  */
 
-static inline tree
+inline tree
 gimple_bind_block (const gbind *bind_stmt)
 {
   return bind_stmt->block;
@@ -4043,7 +4043,7 @@ gimple_bind_block (const gbind *bind_stmt)
 /* Set BLOCK to be the TREE_BLOCK node associated with GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_set_block (gbind *bind_stmt, tree block)
 {
   gcc_gimple_checking_assert (block == NULL_TREE
@@ -4054,7 +4054,7 @@ gimple_bind_set_block (gbind *bind_stmt, tree block)
 
 /* Return the number of input operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_ninputs (const gasm *asm_stmt)
 {
   return asm_stmt->ni;
@@ -4063,7 +4063,7 @@ gimple_asm_ninputs (const gasm *asm_stmt)
 
 /* Return the number of output operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_noutputs (const gasm *asm_stmt)
 {
   return asm_stmt->no;
@@ -4072,7 +4072,7 @@ gimple_asm_noutputs (const gasm *asm_stmt)
 
 /* Return the number of clobber operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_nclobbers (const gasm *asm_stmt)
 {
   return asm_stmt->nc;
@@ -4080,7 +4080,7 @@ gimple_asm_nclobbers (const gasm *asm_stmt)
 
 /* Return the number of label operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_nlabels (const gasm *asm_stmt)
 {
   return asm_stmt->nl;
@@ -4088,7 +4088,7 @@ gimple_asm_nlabels (const gasm *asm_stmt)
 
 /* Return input operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_input_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->ni);
@@ -4097,7 +4097,7 @@ gimple_asm_input_op (const gasm *asm_stmt, unsigned index)
 
 /* Set IN_OP to be input operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_input_op (gasm *asm_stmt, unsigned index, tree in_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->ni
@@ -4108,7 +4108,7 @@ gimple_asm_set_input_op (gasm *asm_stmt, unsigned index, tree in_op)
 
 /* Return output operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_output_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->no);
@@ -4117,7 +4117,7 @@ gimple_asm_output_op (const gasm *asm_stmt, unsigned index)
 
 /* Set OUT_OP to be output operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_output_op (gasm *asm_stmt, unsigned index, tree out_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->no
@@ -4128,7 +4128,7 @@ gimple_asm_set_output_op (gasm *asm_stmt, unsigned index, tree out_op)
 
 /* Return clobber operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_clobber_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nc);
@@ -4138,7 +4138,7 @@ gimple_asm_clobber_op (const gasm *asm_stmt, unsigned index)
 
 /* Set CLOBBER_OP to be clobber operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_clobber_op (gasm *asm_stmt, unsigned index, tree clobber_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nc
@@ -4148,7 +4148,7 @@ gimple_asm_set_clobber_op (gasm *asm_stmt, unsigned index, tree clobber_op)
 
 /* Return label operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_label_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nl);
@@ -4157,7 +4157,7 @@ gimple_asm_label_op (const gasm *asm_stmt, unsigned index)
 
 /* Set LABEL_OP to be label operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_label_op (gasm *asm_stmt, unsigned index, tree label_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nl
@@ -4168,7 +4168,7 @@ gimple_asm_set_label_op (gasm *asm_stmt, unsigned index, tree label_op)
 /* Return the string representing the assembly instruction in
    GIMPLE_ASM ASM_STMT.  */
 
-static inline const char *
+inline const char *
 gimple_asm_string (const gasm *asm_stmt)
 {
   return asm_stmt->string;
@@ -4177,7 +4177,7 @@ gimple_asm_string (const gasm *asm_stmt)
 
 /* Return true if ASM_STMT is marked volatile.  */
 
-static inline bool
+inline bool
 gimple_asm_volatile_p (const gasm *asm_stmt)
 {
   return (asm_stmt->subcode & GF_ASM_VOLATILE) != 0;
@@ -4186,7 +4186,7 @@ gimple_asm_volatile_p (const gasm *asm_stmt)
 
 /* If VOLATILE_P is true, mark asm statement ASM_STMT as volatile.  */
 
-static inline void
+inline void
 gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
 {
   if (volatile_p)
@@ -4198,7 +4198,7 @@ gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
 
 /* Return true if ASM_STMT is marked inline.  */
 
-static inline bool
+inline bool
 gimple_asm_inline_p (const gasm *asm_stmt)
 {
   return (asm_stmt->subcode & GF_ASM_INLINE) != 0;
@@ -4207,7 +4207,7 @@ gimple_asm_inline_p (const gasm *asm_stmt)
 
 /* If INLINE_P is true, mark asm statement ASM_STMT as inline.  */
 
-static inline void
+inline void
 gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
 {
   if (inline_p)
@@ -4219,7 +4219,7 @@ gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
 
 /* If INPUT_P is true, mark asm ASM_STMT as an ASM_INPUT.  */
 
-static inline void
+inline void
 gimple_asm_set_input (gasm *asm_stmt, bool input_p)
 {
   if (input_p)
@@ -4231,7 +4231,7 @@ gimple_asm_set_input (gasm *asm_stmt, bool input_p)
 
 /* Return true if asm ASM_STMT is an ASM_INPUT.  */
 
-static inline bool
+inline bool
 gimple_asm_input_p (const gasm *asm_stmt)
 {
   return (asm_stmt->subcode & GF_ASM_INPUT) != 0;
@@ -4240,7 +4240,7 @@ gimple_asm_input_p (const gasm *asm_stmt)
 
 /* Return the types handled by GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline tree
+inline tree
 gimple_catch_types (const gcatch *catch_stmt)
 {
   return catch_stmt->types;
@@ -4249,7 +4249,7 @@ gimple_catch_types (const gcatch *catch_stmt)
 
 /* Return a pointer to the types handled by GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_catch_types_ptr (gcatch *catch_stmt)
 {
   return &catch_stmt->types;
@@ -4259,7 +4259,7 @@ gimple_catch_types_ptr (gcatch *catch_stmt)
 /* Return a pointer to the GIMPLE sequence representing the body of
    the handler of GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_catch_handler_ptr (gcatch *catch_stmt)
 {
   return &catch_stmt->handler;
@@ -4269,7 +4269,7 @@ gimple_catch_handler_ptr (gcatch *catch_stmt)
 /* Return the GIMPLE sequence representing the body of the handler of
    GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_catch_handler (const gcatch *catch_stmt)
 {
   return *gimple_catch_handler_ptr (const_cast <gcatch *> (catch_stmt));
@@ -4278,7 +4278,7 @@ gimple_catch_handler (const gcatch *catch_stmt)
 
 /* Set T to be the set of types handled by GIMPLE_CATCH CATCH_STMT.  */
 
-static inline void
+inline void
 gimple_catch_set_types (gcatch *catch_stmt, tree t)
 {
   catch_stmt->types = t;
@@ -4287,7 +4287,7 @@ gimple_catch_set_types (gcatch *catch_stmt, tree t)
 
 /* Set HANDLER to be the body of GIMPLE_CATCH CATCH_STMT.  */
 
-static inline void
+inline void
 gimple_catch_set_handler (gcatch *catch_stmt, gimple_seq handler)
 {
   catch_stmt->handler = handler;
@@ -4296,7 +4296,7 @@ gimple_catch_set_handler (gcatch *catch_stmt, gimple_seq handler)
 
 /* Return the types handled by GIMPLE_EH_FILTER statement GS.  */
 
-static inline tree
+inline tree
 gimple_eh_filter_types (const gimple *gs)
 {
   const geh_filter *eh_filter_stmt = as_a <const geh_filter *> (gs);
@@ -4307,7 +4307,7 @@ gimple_eh_filter_types (const gimple *gs)
 /* Return a pointer to the types handled by GIMPLE_EH_FILTER statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_eh_filter_types_ptr (gimple *gs)
 {
   geh_filter *eh_filter_stmt = as_a <geh_filter *> (gs);
@@ -4318,7 +4318,7 @@ gimple_eh_filter_types_ptr (gimple *gs)
 /* Return a pointer to the sequence of statement to execute when
    GIMPLE_EH_FILTER statement fails.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_eh_filter_failure_ptr (gimple *gs)
 {
   geh_filter *eh_filter_stmt = as_a <geh_filter *> (gs);
@@ -4329,7 +4329,7 @@ gimple_eh_filter_failure_ptr (gimple *gs)
 /* Return the sequence of statement to execute when GIMPLE_EH_FILTER
    statement fails.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_eh_filter_failure (const gimple *gs)
 {
   return *gimple_eh_filter_failure_ptr (const_cast <gimple *> (gs));
@@ -4339,7 +4339,7 @@ gimple_eh_filter_failure (const gimple *gs)
 /* Set TYPES to be the set of types handled by GIMPLE_EH_FILTER
    EH_FILTER_STMT.  */
 
-static inline void
+inline void
 gimple_eh_filter_set_types (geh_filter *eh_filter_stmt, tree types)
 {
   eh_filter_stmt->types = types;
@@ -4349,7 +4349,7 @@ gimple_eh_filter_set_types (geh_filter *eh_filter_stmt, tree types)
 /* Set FAILURE to be the sequence of statements to execute on failure
    for GIMPLE_EH_FILTER EH_FILTER_STMT.  */
 
-static inline void
+inline void
 gimple_eh_filter_set_failure (geh_filter *eh_filter_stmt,
 			      gimple_seq failure)
 {
@@ -4358,7 +4358,7 @@ gimple_eh_filter_set_failure (geh_filter *eh_filter_stmt,
 
 /* Get the function decl to be called by the MUST_NOT_THROW region.  */
 
-static inline tree
+inline tree
 gimple_eh_must_not_throw_fndecl (const geh_mnt *eh_mnt_stmt)
 {
   return eh_mnt_stmt->fndecl;
@@ -4366,7 +4366,7 @@ gimple_eh_must_not_throw_fndecl (const geh_mnt *eh_mnt_stmt)
 
 /* Set the function decl to be called by GS to DECL.  */
 
-static inline void
+inline void
 gimple_eh_must_not_throw_set_fndecl (geh_mnt *eh_mnt_stmt,
 				     tree decl)
 {
@@ -4375,37 +4375,37 @@ gimple_eh_must_not_throw_set_fndecl (geh_mnt *eh_mnt_stmt,
 
 /* GIMPLE_EH_ELSE accessors.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_eh_else_n_body_ptr (geh_else *eh_else_stmt)
 {
   return &eh_else_stmt->n_body;
 }
 
-static inline gimple_seq
+inline gimple_seq
 gimple_eh_else_n_body (const geh_else *eh_else_stmt)
 {
   return *gimple_eh_else_n_body_ptr (const_cast <geh_else *> (eh_else_stmt));
 }
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_eh_else_e_body_ptr (geh_else *eh_else_stmt)
 {
   return &eh_else_stmt->e_body;
 }
 
-static inline gimple_seq
+inline gimple_seq
 gimple_eh_else_e_body (const geh_else *eh_else_stmt)
 {
   return *gimple_eh_else_e_body_ptr (const_cast <geh_else *> (eh_else_stmt));
 }
 
-static inline void
+inline void
 gimple_eh_else_set_n_body (geh_else *eh_else_stmt, gimple_seq seq)
 {
   eh_else_stmt->n_body = seq;
 }
 
-static inline void
+inline void
 gimple_eh_else_set_e_body (geh_else *eh_else_stmt, gimple_seq seq)
 {
   eh_else_stmt->e_body = seq;
@@ -4416,7 +4416,7 @@ gimple_eh_else_set_e_body (geh_else *eh_else_stmt, gimple_seq seq)
 /* Return the kind of try block represented by GIMPLE_TRY GS.  This is
    either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY.  */
 
-static inline enum gimple_try_flags
+inline enum gimple_try_flags
 gimple_try_kind (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_TRY);
@@ -4426,7 +4426,7 @@ gimple_try_kind (const gimple *gs)
 
 /* Set the kind of try block represented by GIMPLE_TRY GS.  */
 
-static inline void
+inline void
 gimple_try_set_kind (gtry *gs, enum gimple_try_flags kind)
 {
   gcc_gimple_checking_assert (kind == GIMPLE_TRY_CATCH
@@ -4438,7 +4438,7 @@ gimple_try_set_kind (gtry *gs, enum gimple_try_flags kind)
 
 /* Return the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
 
-static inline bool
+inline bool
 gimple_try_catch_is_cleanup (const gimple *gs)
 {
   gcc_gimple_checking_assert (gimple_try_kind (gs) == GIMPLE_TRY_CATCH);
@@ -4449,7 +4449,7 @@ gimple_try_catch_is_cleanup (const gimple *gs)
 /* Return a pointer to the sequence of statements used as the
    body for GIMPLE_TRY GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_try_eval_ptr (gimple *gs)
 {
   gtry *try_stmt = as_a <gtry *> (gs);
@@ -4459,7 +4459,7 @@ gimple_try_eval_ptr (gimple *gs)
 
 /* Return the sequence of statements used as the body for GIMPLE_TRY GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_try_eval (const gimple *gs)
 {
   return *gimple_try_eval_ptr (const_cast <gimple *> (gs));
@@ -4469,7 +4469,7 @@ gimple_try_eval (const gimple *gs)
 /* Return a pointer to the sequence of statements used as the cleanup body for
    GIMPLE_TRY GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_try_cleanup_ptr (gimple *gs)
 {
   gtry *try_stmt = as_a <gtry *> (gs);
@@ -4480,7 +4480,7 @@ gimple_try_cleanup_ptr (gimple *gs)
 /* Return the sequence of statements used as the cleanup body for
    GIMPLE_TRY GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_try_cleanup (const gimple *gs)
 {
   return *gimple_try_cleanup_ptr (const_cast <gimple *> (gs));
@@ -4489,7 +4489,7 @@ gimple_try_cleanup (const gimple *gs)
 
 /* Set the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
 
-static inline void
+inline void
 gimple_try_set_catch_is_cleanup (gtry *g, bool catch_is_cleanup)
 {
   gcc_gimple_checking_assert (gimple_try_kind (g) == GIMPLE_TRY_CATCH);
@@ -4503,7 +4503,7 @@ gimple_try_set_catch_is_cleanup (gtry *g, bool catch_is_cleanup)
 /* Set EVAL to be the sequence of statements to use as the body for
    GIMPLE_TRY TRY_STMT.  */
 
-static inline void
+inline void
 gimple_try_set_eval (gtry *try_stmt, gimple_seq eval)
 {
   try_stmt->eval = eval;
@@ -4513,7 +4513,7 @@ gimple_try_set_eval (gtry *try_stmt, gimple_seq eval)
 /* Set CLEANUP to be the sequence of statements to use as the cleanup
    body for GIMPLE_TRY TRY_STMT.  */
 
-static inline void
+inline void
 gimple_try_set_cleanup (gtry *try_stmt, gimple_seq cleanup)
 {
   try_stmt->cleanup = cleanup;
@@ -4522,7 +4522,7 @@ gimple_try_set_cleanup (gtry *try_stmt, gimple_seq cleanup)
 
 /* Return a pointer to the cleanup sequence for cleanup statement GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_wce_cleanup_ptr (gimple *gs)
 {
   gimple_statement_wce *wce_stmt = as_a <gimple_statement_wce *> (gs);
@@ -4532,7 +4532,7 @@ gimple_wce_cleanup_ptr (gimple *gs)
 
 /* Return the cleanup sequence for cleanup statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_wce_cleanup (gimple *gs)
 {
   return *gimple_wce_cleanup_ptr (gs);
@@ -4541,7 +4541,7 @@ gimple_wce_cleanup (gimple *gs)
 
 /* Set CLEANUP to be the cleanup sequence for GS.  */
 
-static inline void
+inline void
 gimple_wce_set_cleanup (gimple *gs, gimple_seq cleanup)
 {
   gimple_statement_wce *wce_stmt = as_a <gimple_statement_wce *> (gs);
@@ -4551,7 +4551,7 @@ gimple_wce_set_cleanup (gimple *gs, gimple_seq cleanup)
 
 /* Return the CLEANUP_EH_ONLY flag for a WCE tuple.  */
 
-static inline bool
+inline bool
 gimple_wce_cleanup_eh_only (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
@@ -4561,7 +4561,7 @@ gimple_wce_cleanup_eh_only (const gimple *gs)
 
 /* Set the CLEANUP_EH_ONLY flag for a WCE tuple.  */
 
-static inline void
+inline void
 gimple_wce_set_cleanup_eh_only (gimple *gs, bool eh_only_p)
 {
   GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
@@ -4571,7 +4571,7 @@ gimple_wce_set_cleanup_eh_only (gimple *gs, bool eh_only_p)
 
 /* Return the maximum number of arguments supported by GIMPLE_PHI GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_phi_capacity (const gimple *gs)
 {
   const gphi *phi_stmt = as_a <const gphi *> (gs);
@@ -4583,7 +4583,7 @@ gimple_phi_capacity (const gimple *gs)
    be exactly the number of incoming edges for the basic block holding
    GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_phi_num_args (const gimple *gs)
 {
   const gphi *phi_stmt = as_a <const gphi *> (gs);
@@ -4593,13 +4593,13 @@ gimple_phi_num_args (const gimple *gs)
 
 /* Return the SSA name created by GIMPLE_PHI GS.  */
 
-static inline tree
+inline tree
 gimple_phi_result (const gphi *gs)
 {
   return gs->result;
 }
 
-static inline tree
+inline tree
 gimple_phi_result (const gimple *gs)
 {
   const gphi *phi_stmt = as_a <const gphi *> (gs);
@@ -4608,13 +4608,13 @@ gimple_phi_result (const gimple *gs)
 
 /* Return a pointer to the SSA name created by GIMPLE_PHI GS.  */
 
-static inline tree *
+inline tree *
 gimple_phi_result_ptr (gphi *gs)
 {
   return &gs->result;
 }
 
-static inline tree *
+inline tree *
 gimple_phi_result_ptr (gimple *gs)
 {
   gphi *phi_stmt = as_a <gphi *> (gs);
@@ -4623,7 +4623,7 @@ gimple_phi_result_ptr (gimple *gs)
 
 /* Set RESULT to be the SSA name created by GIMPLE_PHI PHI.  */
 
-static inline void
+inline void
 gimple_phi_set_result (gphi *phi, tree result)
 {
   phi->result = result;
@@ -4635,21 +4635,21 @@ gimple_phi_set_result (gphi *phi, tree result)
 /* Return the PHI argument corresponding to incoming edge INDEX for
    GIMPLE_PHI GS.  */
 
-static inline struct phi_arg_d *
+inline struct phi_arg_d *
 gimple_phi_arg (gphi *gs, unsigned index)
 {
   gcc_gimple_checking_assert (index < gs->nargs);
   return &(gs->args[index]);
 }
 
-static inline const phi_arg_d *
+inline const phi_arg_d *
 gimple_phi_arg (const gphi *gs, unsigned index)
 {
   gcc_gimple_checking_assert (index < gs->nargs);
   return &(gs->args[index]);
 }
 
-static inline struct phi_arg_d *
+inline struct phi_arg_d *
 gimple_phi_arg (gimple *gs, unsigned index)
 {
   gphi *phi_stmt = as_a <gphi *> (gs);
@@ -4659,7 +4659,7 @@ gimple_phi_arg (gimple *gs, unsigned index)
 /* Set PHIARG to be the argument corresponding to incoming edge INDEX
    for GIMPLE_PHI PHI.  */
 
-static inline void
+inline void
 gimple_phi_set_arg (gphi *phi, unsigned index, struct phi_arg_d * phiarg)
 {
   gcc_gimple_checking_assert (index < phi->nargs);
@@ -4669,7 +4669,7 @@ gimple_phi_set_arg (gphi *phi, unsigned index, struct phi_arg_d * phiarg)
 /* Return the PHI nodes for basic block BB, or NULL if there are no
    PHI nodes.  */
 
-static inline gimple_seq
+inline gimple_seq
 phi_nodes (const_basic_block bb)
 {
   gcc_checking_assert (!(bb->flags & BB_RTL));
@@ -4678,7 +4678,7 @@ phi_nodes (const_basic_block bb)
 
 /* Return a pointer to the PHI nodes for basic block BB.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 phi_nodes_ptr (basic_block bb)
 {
   gcc_checking_assert (!(bb->flags & BB_RTL));
@@ -4687,13 +4687,13 @@ phi_nodes_ptr (basic_block bb)
 
 /* Return the tree operand for argument I of PHI node GS.  */
 
-static inline tree
+inline tree
 gimple_phi_arg_def (const gphi *gs, size_t index)
 {
   return gimple_phi_arg (gs, index)->def;
 }
 
-static inline tree
+inline tree
 gimple_phi_arg_def (gimple *gs, size_t index)
 {
   return gimple_phi_arg (gs, index)->def;
@@ -4702,7 +4702,7 @@ gimple_phi_arg_def (gimple *gs, size_t index)
 
 /* Return a pointer to the tree operand for argument I of phi node PHI.  */
 
-static inline tree *
+inline tree *
 gimple_phi_arg_def_ptr (gphi *phi, size_t index)
 {
   return &gimple_phi_arg (phi, index)->def;
@@ -4710,7 +4710,7 @@ gimple_phi_arg_def_ptr (gphi *phi, size_t index)
 
 /* Return the edge associated with argument I of phi node PHI.  */
 
-static inline edge
+inline edge
 gimple_phi_arg_edge (const gphi *phi, size_t i)
 {
   return EDGE_PRED (gimple_bb (phi), i);
@@ -4718,7 +4718,7 @@ gimple_phi_arg_edge (const gphi *phi, size_t i)
 
 /* Return the source location of gimple argument I of phi node PHI.  */
 
-static inline location_t
+inline location_t
 gimple_phi_arg_location (const gphi *phi, size_t i)
 {
   return gimple_phi_arg (phi, i)->locus;
@@ -4726,7 +4726,7 @@ gimple_phi_arg_location (const gphi *phi, size_t i)
 
 /* Return the source location of the argument on edge E of phi node PHI.  */
 
-static inline location_t
+inline location_t
 gimple_phi_arg_location_from_edge (gphi *phi, edge e)
 {
   return gimple_phi_arg (phi, e->dest_idx)->locus;
@@ -4734,7 +4734,7 @@ gimple_phi_arg_location_from_edge (gphi *phi, edge e)
 
 /* Set the source location of gimple argument I of phi node PHI to LOC.  */
 
-static inline void
+inline void
 gimple_phi_arg_set_location (gphi *phi, size_t i, location_t loc)
 {
   gimple_phi_arg (phi, i)->locus = loc;
@@ -4742,7 +4742,7 @@ gimple_phi_arg_set_location (gphi *phi, size_t i, location_t loc)
 
 /* Return address of source location of gimple argument I of phi node PHI.  */
 
-static inline location_t *
+inline location_t *
 gimple_phi_arg_location_ptr (gphi *phi, size_t i)
 {
   return &gimple_phi_arg (phi, i)->locus;
@@ -4750,7 +4750,7 @@ gimple_phi_arg_location_ptr (gphi *phi, size_t i)
 
 /* Return TRUE if argument I of phi node PHI has a location record.  */
 
-static inline bool
+inline bool
 gimple_phi_arg_has_location (const gphi *phi, size_t i)
 {
   return gimple_phi_arg_location (phi, i) != UNKNOWN_LOCATION;
@@ -4758,7 +4758,7 @@ gimple_phi_arg_has_location (const gphi *phi, size_t i)
 
 /* Return the number of arguments that can be accessed by gimple_arg.  */
 
-static inline unsigned
+inline unsigned
 gimple_num_args (const gimple *gs)
 {
   if (auto phi = dyn_cast<const gphi *> (gs))
@@ -4773,7 +4773,7 @@ gimple_num_args (const gimple *gs)
    If it's a call, return function argument I.
    If it's a PHI, return the value of PHI argument I.  */
 
-static inline tree
+inline tree
 gimple_arg (const gimple *gs, unsigned int i)
 {
   if (auto phi = dyn_cast<const gphi *> (gs))
@@ -4785,7 +4785,7 @@ gimple_arg (const gimple *gs, unsigned int i)
 
 /* Return a pointer to gimple_arg (GS, I).  */
 
-static inline tree *
+inline tree *
 gimple_arg_ptr (gimple *gs, unsigned int i)
 {
   if (auto phi = dyn_cast<gphi *> (gs))
@@ -4797,7 +4797,7 @@ gimple_arg_ptr (gimple *gs, unsigned int i)
 
 /* Return the region number for GIMPLE_RESX RESX_STMT.  */
 
-static inline int
+inline int
 gimple_resx_region (const gresx *resx_stmt)
 {
   return resx_stmt->region;
@@ -4805,7 +4805,7 @@ gimple_resx_region (const gresx *resx_stmt)
 
 /* Set REGION to be the region number for GIMPLE_RESX RESX_STMT.  */
 
-static inline void
+inline void
 gimple_resx_set_region (gresx *resx_stmt, int region)
 {
   resx_stmt->region = region;
@@ -4813,7 +4813,7 @@ gimple_resx_set_region (gresx *resx_stmt, int region)
 
 /* Return the region number for GIMPLE_EH_DISPATCH EH_DISPATCH_STMT.  */
 
-static inline int
+inline int
 gimple_eh_dispatch_region (const geh_dispatch *eh_dispatch_stmt)
 {
   return eh_dispatch_stmt->region;
@@ -4822,7 +4822,7 @@ gimple_eh_dispatch_region (const geh_dispatch *eh_dispatch_stmt)
 /* Set REGION to be the region number for GIMPLE_EH_DISPATCH
    EH_DISPATCH_STMT.  */
 
-static inline void
+inline void
 gimple_eh_dispatch_set_region (geh_dispatch *eh_dispatch_stmt, int region)
 {
   eh_dispatch_stmt->region = region;
@@ -4830,7 +4830,7 @@ gimple_eh_dispatch_set_region (geh_dispatch *eh_dispatch_stmt, int region)
 
 /* Return the number of labels associated with the switch statement GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_switch_num_labels (const gswitch *gs)
 {
   unsigned num_ops;
@@ -4843,7 +4843,7 @@ gimple_switch_num_labels (const gswitch *gs)
 
 /* Set NLABELS to be the number of labels for the switch statement GS.  */
 
-static inline void
+inline void
 gimple_switch_set_num_labels (gswitch *g, unsigned nlabels)
 {
   GIMPLE_CHECK (g, GIMPLE_SWITCH);
@@ -4853,7 +4853,7 @@ gimple_switch_set_num_labels (gswitch *g, unsigned nlabels)
 
 /* Return the index variable used by the switch statement GS.  */
 
-static inline tree
+inline tree
 gimple_switch_index (const gswitch *gs)
 {
   return gs->op[0];
@@ -4862,7 +4862,7 @@ gimple_switch_index (const gswitch *gs)
 
 /* Return a pointer to the index variable for the switch statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_switch_index_ptr (gswitch *gs)
 {
   return &gs->op[0];
@@ -4871,7 +4871,7 @@ gimple_switch_index_ptr (gswitch *gs)
 
 /* Set INDEX to be the index variable for switch statement GS.  */
 
-static inline void
+inline void
 gimple_switch_set_index (gswitch *gs, tree index)
 {
   gcc_gimple_checking_assert (SSA_VAR_P (index) || CONSTANT_CLASS_P (index));
@@ -4882,7 +4882,7 @@ gimple_switch_set_index (gswitch *gs, tree index)
 /* Return the label numbered INDEX.  The default label is 0, followed by any
    labels in a switch statement.  */
 
-static inline tree
+inline tree
 gimple_switch_label (const gswitch *gs, unsigned index)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 1);
@@ -4891,7 +4891,7 @@ gimple_switch_label (const gswitch *gs, unsigned index)
 
 /* Set the label number INDEX to LABEL.  0 is always the default label.  */
 
-static inline void
+inline void
 gimple_switch_set_label (gswitch *gs, unsigned index, tree label)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 1
@@ -4902,7 +4902,7 @@ gimple_switch_set_label (gswitch *gs, unsigned index, tree label)
 
 /* Return the default label for a switch statement.  */
 
-static inline tree
+inline tree
 gimple_switch_default_label (const gswitch *gs)
 {
   tree label = gimple_switch_label (gs, 0);
@@ -4912,7 +4912,7 @@ gimple_switch_default_label (const gswitch *gs)
 
 /* Set the default label for a switch statement.  */
 
-static inline void
+inline void
 gimple_switch_set_default_label (gswitch *gs, tree label)
 {
   gcc_checking_assert (!CASE_LOW (label) && !CASE_HIGH (label));
@@ -4921,7 +4921,7 @@ gimple_switch_set_default_label (gswitch *gs, tree label)
 
 /* Return true if GS is a GIMPLE_DEBUG statement.  */
 
-static inline bool
+inline bool
 is_gimple_debug (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_DEBUG;
@@ -4930,7 +4930,7 @@ is_gimple_debug (const gimple *gs)
 
 /* Return the first nondebug statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_first_nondebug_stmt (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_first (s);
@@ -4942,7 +4942,7 @@ gimple_seq_first_nondebug_stmt (gimple_seq s)
 
 /* Return the last nondebug statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_last_nondebug_stmt (gimple_seq s)
 {
   gimple_seq_node n;
@@ -4957,7 +4957,7 @@ gimple_seq_last_nondebug_stmt (gimple_seq s)
 
 /* Return true if S is a GIMPLE_DEBUG BIND statement.  */
 
-static inline bool
+inline bool
 gimple_debug_bind_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -4968,7 +4968,7 @@ gimple_debug_bind_p (const gimple *s)
 
 /* Return the variable bound in a GIMPLE_DEBUG bind statement.  */
 
-static inline tree
+inline tree
 gimple_debug_bind_get_var (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -4979,7 +4979,7 @@ gimple_debug_bind_get_var (const gimple *dbg)
 /* Return the value bound to the variable in a GIMPLE_DEBUG bind
    statement.  */
 
-static inline tree
+inline tree
 gimple_debug_bind_get_value (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -4990,7 +4990,7 @@ gimple_debug_bind_get_value (const gimple *dbg)
 /* Return a pointer to the value bound to the variable in a
    GIMPLE_DEBUG bind statement.  */
 
-static inline tree *
+inline tree *
 gimple_debug_bind_get_value_ptr (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5000,7 +5000,7 @@ gimple_debug_bind_get_value_ptr (gimple *dbg)
 
 /* Set the variable bound in a GIMPLE_DEBUG bind statement.  */
 
-static inline void
+inline void
 gimple_debug_bind_set_var (gimple *dbg, tree var)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5011,7 +5011,7 @@ gimple_debug_bind_set_var (gimple *dbg, tree var)
 /* Set the value bound to the variable in a GIMPLE_DEBUG bind
    statement.  */
 
-static inline void
+inline void
 gimple_debug_bind_set_value (gimple *dbg, tree value)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5026,7 +5026,7 @@ gimple_debug_bind_set_value (gimple *dbg, tree value)
 /* Remove the value bound to the variable in a GIMPLE_DEBUG bind
    statement.  */
 
-static inline void
+inline void
 gimple_debug_bind_reset_value (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5037,7 +5037,7 @@ gimple_debug_bind_reset_value (gimple *dbg)
 /* Return true if the GIMPLE_DEBUG bind statement is bound to a
    value.  */
 
-static inline bool
+inline bool
 gimple_debug_bind_has_value_p (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5049,7 +5049,7 @@ gimple_debug_bind_has_value_p (gimple *dbg)
 
 /* Return true if S is a GIMPLE_DEBUG SOURCE BIND statement.  */
 
-static inline bool
+inline bool
 gimple_debug_source_bind_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5060,7 +5060,7 @@ gimple_debug_source_bind_p (const gimple *s)
 
 /* Return the variable bound in a GIMPLE_DEBUG source bind statement.  */
 
-static inline tree
+inline tree
 gimple_debug_source_bind_get_var (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5071,7 +5071,7 @@ gimple_debug_source_bind_get_var (const gimple *dbg)
 /* Return the value bound to the variable in a GIMPLE_DEBUG source bind
    statement.  */
 
-static inline tree
+inline tree
 gimple_debug_source_bind_get_value (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5082,7 +5082,7 @@ gimple_debug_source_bind_get_value (const gimple *dbg)
 /* Return a pointer to the value bound to the variable in a
    GIMPLE_DEBUG source bind statement.  */
 
-static inline tree *
+inline tree *
 gimple_debug_source_bind_get_value_ptr (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5092,7 +5092,7 @@ gimple_debug_source_bind_get_value_ptr (gimple *dbg)
 
 /* Set the variable bound in a GIMPLE_DEBUG source bind statement.  */
 
-static inline void
+inline void
 gimple_debug_source_bind_set_var (gimple *dbg, tree var)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5103,7 +5103,7 @@ gimple_debug_source_bind_set_var (gimple *dbg, tree var)
 /* Set the value bound to the variable in a GIMPLE_DEBUG source bind
    statement.  */
 
-static inline void
+inline void
 gimple_debug_source_bind_set_value (gimple *dbg, tree value)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5113,7 +5113,7 @@ gimple_debug_source_bind_set_value (gimple *dbg, tree value)
 
 /* Return true if S is a GIMPLE_DEBUG BEGIN_STMT statement.  */
 
-static inline bool
+inline bool
 gimple_debug_begin_stmt_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5124,7 +5124,7 @@ gimple_debug_begin_stmt_p (const gimple *s)
 
 /* Return true if S is a GIMPLE_DEBUG INLINE_ENTRY statement.  */
 
-static inline bool
+inline bool
 gimple_debug_inline_entry_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5135,7 +5135,7 @@ gimple_debug_inline_entry_p (const gimple *s)
 
 /* Return true if S is a GIMPLE_DEBUG non-binding marker statement.  */
 
-static inline bool
+inline bool
 gimple_debug_nonbind_marker_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5147,7 +5147,7 @@ gimple_debug_nonbind_marker_p (const gimple *s)
 
 /* Return the line number for EXPR, or return -1 if we have no line
    number information for it.  */
-static inline int
+inline int
 get_lineno (const gimple *stmt)
 {
   location_t loc;
@@ -5164,7 +5164,7 @@ get_lineno (const gimple *stmt)
 
 /* Return a pointer to the body for the OMP statement GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_omp_body_ptr (gimple *gs)
 {
   return &static_cast <gimple_statement_omp *> (gs)->body;
@@ -5172,7 +5172,7 @@ gimple_omp_body_ptr (gimple *gs)
 
 /* Return the body for the OMP statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_omp_body (const gimple *gs)
 {
   return *gimple_omp_body_ptr (const_cast <gimple *> (gs));
@@ -5180,7 +5180,7 @@ gimple_omp_body (const gimple *gs)
 
 /* Set BODY to be the body for the OMP statement GS.  */
 
-static inline void
+inline void
 gimple_omp_set_body (gimple *gs, gimple_seq body)
 {
   static_cast <gimple_statement_omp *> (gs)->body = body;
@@ -5189,7 +5189,7 @@ gimple_omp_set_body (gimple *gs, gimple_seq body)
 
 /* Return the name associated with OMP_CRITICAL statement CRIT_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_critical_name (const gomp_critical *crit_stmt)
 {
   return crit_stmt->name;
@@ -5199,7 +5199,7 @@ gimple_omp_critical_name (const gomp_critical *crit_stmt)
 /* Return a pointer to the name associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_critical_name_ptr (gomp_critical *crit_stmt)
 {
   return &crit_stmt->name;
@@ -5209,7 +5209,7 @@ gimple_omp_critical_name_ptr (gomp_critical *crit_stmt)
 /* Set NAME to be the name associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline void
+inline void
 gimple_omp_critical_set_name (gomp_critical *crit_stmt, tree name)
 {
   crit_stmt->name = name;
@@ -5218,7 +5218,7 @@ gimple_omp_critical_set_name (gomp_critical *crit_stmt, tree name)
 
 /* Return the clauses associated with OMP_CRITICAL statement CRIT_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_critical_clauses (const gomp_critical *crit_stmt)
 {
   return crit_stmt->clauses;
@@ -5228,7 +5228,7 @@ gimple_omp_critical_clauses (const gomp_critical *crit_stmt)
 /* Return a pointer to the clauses associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_critical_clauses_ptr (gomp_critical *crit_stmt)
 {
   return &crit_stmt->clauses;
@@ -5238,7 +5238,7 @@ gimple_omp_critical_clauses_ptr (gomp_critical *crit_stmt)
 /* Set CLAUSES to be the clauses associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline void
+inline void
 gimple_omp_critical_set_clauses (gomp_critical *crit_stmt, tree clauses)
 {
   crit_stmt->clauses = clauses;
@@ -5247,7 +5247,7 @@ gimple_omp_critical_set_clauses (gomp_critical *crit_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_ORDERED statement ORD_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_ordered_clauses (const gomp_ordered *ord_stmt)
 {
   return ord_stmt->clauses;
@@ -5257,7 +5257,7 @@ gimple_omp_ordered_clauses (const gomp_ordered *ord_stmt)
 /* Return a pointer to the clauses associated with OMP ordered statement
    ORD_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_ordered_clauses_ptr (gomp_ordered *ord_stmt)
 {
   return &ord_stmt->clauses;
@@ -5267,7 +5267,7 @@ gimple_omp_ordered_clauses_ptr (gomp_ordered *ord_stmt)
 /* Set CLAUSES to be the clauses associated with OMP ordered statement
    ORD_STMT.  */
 
-static inline void
+inline void
 gimple_omp_ordered_set_clauses (gomp_ordered *ord_stmt, tree clauses)
 {
   ord_stmt->clauses = clauses;
@@ -5276,7 +5276,7 @@ gimple_omp_ordered_set_clauses (gomp_ordered *ord_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_SCAN statement SCAN_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_scan_clauses (const gomp_scan *scan_stmt)
 {
   return scan_stmt->clauses;
@@ -5286,7 +5286,7 @@ gimple_omp_scan_clauses (const gomp_scan *scan_stmt)
 /* Return a pointer to the clauses associated with OMP scan statement
    ORD_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_scan_clauses_ptr (gomp_scan *scan_stmt)
 {
   return &scan_stmt->clauses;
@@ -5296,7 +5296,7 @@ gimple_omp_scan_clauses_ptr (gomp_scan *scan_stmt)
 /* Set CLAUSES to be the clauses associated with OMP scan statement
    ORD_STMT.  */
 
-static inline void
+inline void
 gimple_omp_scan_set_clauses (gomp_scan *scan_stmt, tree clauses)
 {
   scan_stmt->clauses = clauses;
@@ -5305,7 +5305,7 @@ gimple_omp_scan_set_clauses (gomp_scan *scan_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_TASKGROUP statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskgroup_clauses (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
@@ -5317,7 +5317,7 @@ gimple_omp_taskgroup_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with OMP taskgroup statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskgroup_clauses_ptr (gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
@@ -5328,7 +5328,7 @@ gimple_omp_taskgroup_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the clauses associated with OMP taskgroup statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_taskgroup_set_clauses (gimple *gs, tree clauses)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
@@ -5339,7 +5339,7 @@ gimple_omp_taskgroup_set_clauses (gimple *gs, tree clauses)
 
 /* Return the clauses associated with OMP_MASKED statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_masked_clauses (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
@@ -5351,7 +5351,7 @@ gimple_omp_masked_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with OMP masked statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_masked_clauses_ptr (gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
@@ -5362,7 +5362,7 @@ gimple_omp_masked_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the clauses associated with OMP masked statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_masked_set_clauses (gimple *gs, tree clauses)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
@@ -5373,7 +5373,7 @@ gimple_omp_masked_set_clauses (gimple *gs, tree clauses)
 
 /* Return the clauses associated with OMP_SCOPE statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_scope_clauses (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
@@ -5385,7 +5385,7 @@ gimple_omp_scope_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with OMP scope statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_scope_clauses_ptr (gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
@@ -5396,7 +5396,7 @@ gimple_omp_scope_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the clauses associated with OMP scope statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_scope_set_clauses (gimple *gs, tree clauses)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
@@ -5407,7 +5407,7 @@ gimple_omp_scope_set_clauses (gimple *gs, tree clauses)
 
 /* Return the kind of the OMP_FOR statemement G.  */
 
-static inline int
+inline int
 gimple_omp_for_kind (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
@@ -5417,7 +5417,7 @@ gimple_omp_for_kind (const gimple *g)
 
 /* Set the kind of the OMP_FOR statement G.  */
 
-static inline void
+inline void
 gimple_omp_for_set_kind (gomp_for *g, int kind)
 {
   g->subcode = (g->subcode & ~GF_OMP_FOR_KIND_MASK)
@@ -5428,7 +5428,7 @@ gimple_omp_for_set_kind (gomp_for *g, int kind)
 /* Return true if OMP_FOR statement G has the
    GF_OMP_FOR_COMBINED flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_for_combined_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
@@ -5439,7 +5439,7 @@ gimple_omp_for_combined_p (const gimple *g)
 /* Set the GF_OMP_FOR_COMBINED field in the OMP_FOR statement G depending on
    the boolean value of COMBINED_P.  */
 
-static inline void
+inline void
 gimple_omp_for_set_combined_p (gomp_for *g, bool combined_p)
 {
   if (combined_p)
@@ -5452,7 +5452,7 @@ gimple_omp_for_set_combined_p (gomp_for *g, bool combined_p)
 /* Return true if the OMP_FOR statement G has the
    GF_OMP_FOR_COMBINED_INTO flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_for_combined_into_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
@@ -5463,7 +5463,7 @@ gimple_omp_for_combined_into_p (const gimple *g)
 /* Set the GF_OMP_FOR_COMBINED_INTO field in the OMP_FOR statement G depending
    on the boolean value of COMBINED_P.  */
 
-static inline void
+inline void
 gimple_omp_for_set_combined_into_p (gomp_for *g, bool combined_p)
 {
   if (combined_p)
@@ -5475,7 +5475,7 @@ gimple_omp_for_set_combined_into_p (gomp_for *g, bool combined_p)
 
 /* Return the clauses associated with the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_clauses (const gimple *gs)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5486,7 +5486,7 @@ gimple_omp_for_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with the OMP_FOR statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_clauses_ptr (gimple *gs)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5497,7 +5497,7 @@ gimple_omp_for_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the list of clauses associated with the OMP_FOR statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_clauses (gimple *gs, tree clauses)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5507,7 +5507,7 @@ gimple_omp_for_set_clauses (gimple *gs, tree clauses)
 
 /* Get the collapse count of the OMP_FOR statement GS.  */
 
-static inline size_t
+inline size_t
 gimple_omp_for_collapse (const gimple *gs)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5517,7 +5517,7 @@ gimple_omp_for_collapse (const gimple *gs)
 
 /* Return the condition code associated with the OMP_FOR statement GS.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_omp_for_cond (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5528,7 +5528,7 @@ gimple_omp_for_cond (const gimple *gs, size_t i)
 
 /* Set COND to be the condition code for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_cond (gimple *gs, size_t i, enum tree_code cond)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5540,7 +5540,7 @@ gimple_omp_for_set_cond (gimple *gs, size_t i, enum tree_code cond)
 
 /* Return the index variable for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_index (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5551,7 +5551,7 @@ gimple_omp_for_index (const gimple *gs, size_t i)
 
 /* Return a pointer to the index variable for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_index_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5562,7 +5562,7 @@ gimple_omp_for_index_ptr (gimple *gs, size_t i)
 
 /* Set INDEX to be the index variable for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_index (gimple *gs, size_t i, tree index)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5573,7 +5573,7 @@ gimple_omp_for_set_index (gimple *gs, size_t i, tree index)
 
 /* Return the initial value for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_initial (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5584,7 +5584,7 @@ gimple_omp_for_initial (const gimple *gs, size_t i)
 
 /* Return a pointer to the initial value for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_initial_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5595,7 +5595,7 @@ gimple_omp_for_initial_ptr (gimple *gs, size_t i)
 
 /* Set INITIAL to be the initial value for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_initial (gimple *gs, size_t i, tree initial)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5606,7 +5606,7 @@ gimple_omp_for_set_initial (gimple *gs, size_t i, tree initial)
 
 /* Return the final value for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_final (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5617,7 +5617,7 @@ gimple_omp_for_final (const gimple *gs, size_t i)
 
 /* Return a pointer to the final value for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_final_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5628,7 +5628,7 @@ gimple_omp_for_final_ptr (gimple *gs, size_t i)
 
 /* Set FINAL to be the final value for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_final (gimple *gs, size_t i, tree final)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5639,7 +5639,7 @@ gimple_omp_for_set_final (gimple *gs, size_t i, tree final)
 
 /* Return the increment value for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_incr (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5650,7 +5650,7 @@ gimple_omp_for_incr (const gimple *gs, size_t i)
 
 /* Return a pointer to the increment value for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_incr_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5661,7 +5661,7 @@ gimple_omp_for_incr_ptr (gimple *gs, size_t i)
 
 /* Set INCR to be the increment value for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_incr (gimple *gs, size_t i, tree incr)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5673,7 +5673,7 @@ gimple_omp_for_set_incr (gimple *gs, size_t i, tree incr)
 /* Return a pointer to the sequence of statements to execute before the OMP_FOR
    statement GS starts.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_omp_for_pre_body_ptr (gimple *gs)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5684,7 +5684,7 @@ gimple_omp_for_pre_body_ptr (gimple *gs)
 /* Return the sequence of statements to execute before the OMP_FOR
    statement GS starts.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_omp_for_pre_body (const gimple *gs)
 {
   return *gimple_omp_for_pre_body_ptr (const_cast <gimple *> (gs));
@@ -5694,7 +5694,7 @@ gimple_omp_for_pre_body (const gimple *gs)
 /* Set PRE_BODY to be the sequence of statements to execute before the
    OMP_FOR statement GS starts.  */
 
-static inline void
+inline void
 gimple_omp_for_set_pre_body (gimple *gs, gimple_seq pre_body)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5703,7 +5703,7 @@ gimple_omp_for_set_pre_body (gimple *gs, gimple_seq pre_body)
 
 /* Return the clauses associated with OMP_PARALLEL GS.  */
 
-static inline tree
+inline tree
 gimple_omp_parallel_clauses (const gimple *gs)
 {
   const gomp_parallel *omp_parallel_stmt = as_a <const gomp_parallel *> (gs);
@@ -5713,7 +5713,7 @@ gimple_omp_parallel_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_PARALLEL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_parallel_clauses_ptr (gomp_parallel *omp_parallel_stmt)
 {
   return &omp_parallel_stmt->clauses;
@@ -5722,7 +5722,7 @@ gimple_omp_parallel_clauses_ptr (gomp_parallel *omp_parallel_stmt)
 
 /* Set CLAUSES to be the list of clauses associated with OMP_PARALLEL_STMT.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_clauses (gomp_parallel *omp_parallel_stmt,
 				 tree clauses)
 {
@@ -5732,7 +5732,7 @@ gimple_omp_parallel_set_clauses (gomp_parallel *omp_parallel_stmt,
 
 /* Return the child function used to hold the body of OMP_PARALLEL_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_parallel_child_fn (const gomp_parallel *omp_parallel_stmt)
 {
   return omp_parallel_stmt->child_fn;
@@ -5741,7 +5741,7 @@ gimple_omp_parallel_child_fn (const gomp_parallel *omp_parallel_stmt)
 /* Return a pointer to the child function used to hold the body of
    OMP_PARALLEL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_parallel_child_fn_ptr (gomp_parallel *omp_parallel_stmt)
 {
   return &omp_parallel_stmt->child_fn;
@@ -5750,7 +5750,7 @@ gimple_omp_parallel_child_fn_ptr (gomp_parallel *omp_parallel_stmt)
 
 /* Set CHILD_FN to be the child function for OMP_PARALLEL_STMT.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_child_fn (gomp_parallel *omp_parallel_stmt,
 				  tree child_fn)
 {
@@ -5761,7 +5761,7 @@ gimple_omp_parallel_set_child_fn (gomp_parallel *omp_parallel_stmt,
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_PARALLEL_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_parallel_data_arg (const gomp_parallel *omp_parallel_stmt)
 {
   return omp_parallel_stmt->data_arg;
@@ -5770,7 +5770,7 @@ gimple_omp_parallel_data_arg (const gomp_parallel *omp_parallel_stmt)
 
 /* Return a pointer to the data argument for OMP_PARALLEL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_parallel_data_arg_ptr (gomp_parallel *omp_parallel_stmt)
 {
   return &omp_parallel_stmt->data_arg;
@@ -5779,7 +5779,7 @@ gimple_omp_parallel_data_arg_ptr (gomp_parallel *omp_parallel_stmt)
 
 /* Set DATA_ARG to be the data argument for OMP_PARALLEL_STMT.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_data_arg (gomp_parallel *omp_parallel_stmt,
 				  tree data_arg)
 {
@@ -5788,7 +5788,7 @@ gimple_omp_parallel_set_data_arg (gomp_parallel *omp_parallel_stmt,
 
 /* Return the clauses associated with OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_clauses (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -5798,7 +5798,7 @@ gimple_omp_task_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_clauses_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5809,7 +5809,7 @@ gimple_omp_task_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the list of clauses associated with OMP_TASK
    GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_clauses (gimple *gs, tree clauses)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5820,7 +5820,7 @@ gimple_omp_task_set_clauses (gimple *gs, tree clauses)
 /* Return true if OMP task statement G has the
    GF_OMP_TASK_TASKLOOP flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_task_taskloop_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5831,7 +5831,7 @@ gimple_omp_task_taskloop_p (const gimple *g)
 /* Set the GF_OMP_TASK_TASKLOOP field in G depending on the boolean
    value of TASKLOOP_P.  */
 
-static inline void
+inline void
 gimple_omp_task_set_taskloop_p (gimple *g, bool taskloop_p)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5845,7 +5845,7 @@ gimple_omp_task_set_taskloop_p (gimple *g, bool taskloop_p)
 /* Return true if OMP task statement G has the
    GF_OMP_TASK_TASKWAIT flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_task_taskwait_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5856,7 +5856,7 @@ gimple_omp_task_taskwait_p (const gimple *g)
 /* Set the GF_OMP_TASK_TASKWAIT field in G depending on the boolean
    value of TASKWAIT_P.  */
 
-static inline void
+inline void
 gimple_omp_task_set_taskwait_p (gimple *g, bool taskwait_p)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5869,7 +5869,7 @@ gimple_omp_task_set_taskwait_p (gimple *g, bool taskwait_p)
 
 /* Return the child function used to hold the body of OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_child_fn (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -5879,7 +5879,7 @@ gimple_omp_task_child_fn (const gimple *gs)
 /* Return a pointer to the child function used to hold the body of
    OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_child_fn_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5889,7 +5889,7 @@ gimple_omp_task_child_fn_ptr (gimple *gs)
 
 /* Set CHILD_FN to be the child function for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_child_fn (gimple *gs, tree child_fn)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5900,7 +5900,7 @@ gimple_omp_task_set_child_fn (gimple *gs, tree child_fn)
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_data_arg (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -5910,7 +5910,7 @@ gimple_omp_task_data_arg (const gimple *gs)
 
 /* Return a pointer to the data argument for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_data_arg_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5920,7 +5920,7 @@ gimple_omp_task_data_arg_ptr (gimple *gs)
 
 /* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_data_arg (gimple *gs, tree data_arg)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5930,7 +5930,7 @@ gimple_omp_task_set_data_arg (gimple *gs, tree data_arg)
 
 /* Return the clauses associated with OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskreg_clauses (const gimple *gs)
 {
   const gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5941,7 +5941,7 @@ gimple_omp_taskreg_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskreg_clauses_ptr (gimple *gs)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5953,7 +5953,7 @@ gimple_omp_taskreg_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the list of clauses associated with OMP_TASK
    GS.  */
 
-static inline void
+inline void
 gimple_omp_taskreg_set_clauses (gimple *gs, tree clauses)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5964,7 +5964,7 @@ gimple_omp_taskreg_set_clauses (gimple *gs, tree clauses)
 
 /* Return the child function used to hold the body of OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskreg_child_fn (const gimple *gs)
 {
   const gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5975,7 +5975,7 @@ gimple_omp_taskreg_child_fn (const gimple *gs)
 /* Return a pointer to the child function used to hold the body of
    OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskreg_child_fn_ptr (gimple *gs)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5986,7 +5986,7 @@ gimple_omp_taskreg_child_fn_ptr (gimple *gs)
 
 /* Set CHILD_FN to be the child function for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_taskreg_set_child_fn (gimple *gs, tree child_fn)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5998,7 +5998,7 @@ gimple_omp_taskreg_set_child_fn (gimple *gs, tree child_fn)
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskreg_data_arg (const gimple *gs)
 {
   const gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -6009,7 +6009,7 @@ gimple_omp_taskreg_data_arg (const gimple *gs)
 
 /* Return a pointer to the data argument for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskreg_data_arg_ptr (gimple *gs)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -6020,7 +6020,7 @@ gimple_omp_taskreg_data_arg_ptr (gimple *gs)
 
 /* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_taskreg_set_data_arg (gimple *gs, tree data_arg)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -6031,7 +6031,7 @@ gimple_omp_taskreg_set_data_arg (gimple *gs, tree data_arg)
 
 /* Return the copy function used to hold the body of OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_copy_fn (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -6041,7 +6041,7 @@ gimple_omp_task_copy_fn (const gimple *gs)
 /* Return a pointer to the copy function used to hold the body of
    OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_copy_fn_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6051,7 +6051,7 @@ gimple_omp_task_copy_fn_ptr (gimple *gs)
 
 /* Set CHILD_FN to be the copy function for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_copy_fn (gimple *gs, tree copy_fn)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6061,7 +6061,7 @@ gimple_omp_task_set_copy_fn (gimple *gs, tree copy_fn)
 
 /* Return size of the data block in bytes in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_arg_size (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -6071,7 +6071,7 @@ gimple_omp_task_arg_size (const gimple *gs)
 
 /* Return a pointer to the data block size for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_arg_size_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6081,7 +6081,7 @@ gimple_omp_task_arg_size_ptr (gimple *gs)
 
 /* Set ARG_SIZE to be the data block size for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_arg_size (gimple *gs, tree arg_size)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6091,7 +6091,7 @@ gimple_omp_task_set_arg_size (gimple *gs, tree arg_size)
 
 /* Return align of the data block in bytes in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_arg_align (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -6101,7 +6101,7 @@ gimple_omp_task_arg_align (const gimple *gs)
 
 /* Return a pointer to the data block align for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_arg_align_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6111,7 +6111,7 @@ gimple_omp_task_arg_align_ptr (gimple *gs)
 
 /* Set ARG_SIZE to be the data block align for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_arg_align (gimple *gs, tree arg_align)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6121,7 +6121,7 @@ gimple_omp_task_set_arg_align (gimple *gs, tree arg_align)
 
 /* Return the clauses associated with OMP_SINGLE GS.  */
 
-static inline tree
+inline tree
 gimple_omp_single_clauses (const gimple *gs)
 {
   const gomp_single *omp_single_stmt = as_a <const gomp_single *> (gs);
@@ -6131,7 +6131,7 @@ gimple_omp_single_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_SINGLE GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_single_clauses_ptr (gimple *gs)
 {
   gomp_single *omp_single_stmt = as_a <gomp_single *> (gs);
@@ -6141,7 +6141,7 @@ gimple_omp_single_clauses_ptr (gimple *gs)
 
 /* Set CLAUSES to be the clauses associated with OMP_SINGLE_STMT.  */
 
-static inline void
+inline void
 gimple_omp_single_set_clauses (gomp_single *omp_single_stmt, tree clauses)
 {
   omp_single_stmt->clauses = clauses;
@@ -6150,7 +6150,7 @@ gimple_omp_single_set_clauses (gomp_single *omp_single_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_TARGET GS.  */
 
-static inline tree
+inline tree
 gimple_omp_target_clauses (const gimple *gs)
 {
   const gomp_target *omp_target_stmt = as_a <const gomp_target *> (gs);
@@ -6160,7 +6160,7 @@ gimple_omp_target_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TARGET GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_target_clauses_ptr (gimple *gs)
 {
   gomp_target *omp_target_stmt = as_a <gomp_target *> (gs);
@@ -6170,7 +6170,7 @@ gimple_omp_target_clauses_ptr (gimple *gs)
 
 /* Set CLAUSES to be the clauses associated with OMP_TARGET_STMT.  */
 
-static inline void
+inline void
 gimple_omp_target_set_clauses (gomp_target *omp_target_stmt,
 			       tree clauses)
 {
@@ -6180,7 +6180,7 @@ gimple_omp_target_set_clauses (gomp_target *omp_target_stmt,
 
 /* Return the kind of the OMP_TARGET G.  */
 
-static inline int
+inline int
 gimple_omp_target_kind (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TARGET);
@@ -6190,7 +6190,7 @@ gimple_omp_target_kind (const gimple *g)
 
 /* Set the kind of the OMP_TARGET G.  */
 
-static inline void
+inline void
 gimple_omp_target_set_kind (gomp_target *g, int kind)
 {
   g->subcode = (g->subcode & ~GF_OMP_TARGET_KIND_MASK)
@@ -6200,7 +6200,7 @@ gimple_omp_target_set_kind (gomp_target *g, int kind)
 
 /* Return the child function used to hold the body of OMP_TARGET_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_target_child_fn (const gomp_target *omp_target_stmt)
 {
   return omp_target_stmt->child_fn;
@@ -6209,7 +6209,7 @@ gimple_omp_target_child_fn (const gomp_target *omp_target_stmt)
 /* Return a pointer to the child function used to hold the body of
    OMP_TARGET_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_target_child_fn_ptr (gomp_target *omp_target_stmt)
 {
   return &omp_target_stmt->child_fn;
@@ -6218,7 +6218,7 @@ gimple_omp_target_child_fn_ptr (gomp_target *omp_target_stmt)
 
 /* Set CHILD_FN to be the child function for OMP_TARGET_STMT.  */
 
-static inline void
+inline void
 gimple_omp_target_set_child_fn (gomp_target *omp_target_stmt,
 				tree child_fn)
 {
@@ -6229,7 +6229,7 @@ gimple_omp_target_set_child_fn (gomp_target *omp_target_stmt,
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TARGET_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_target_data_arg (const gomp_target *omp_target_stmt)
 {
   return omp_target_stmt->data_arg;
@@ -6238,7 +6238,7 @@ gimple_omp_target_data_arg (const gomp_target *omp_target_stmt)
 
 /* Return a pointer to the data argument for OMP_TARGET GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_target_data_arg_ptr (gomp_target *omp_target_stmt)
 {
   return &omp_target_stmt->data_arg;
@@ -6247,7 +6247,7 @@ gimple_omp_target_data_arg_ptr (gomp_target *omp_target_stmt)
 
 /* Set DATA_ARG to be the data argument for OMP_TARGET_STMT.  */
 
-static inline void
+inline void
 gimple_omp_target_set_data_arg (gomp_target *omp_target_stmt,
 				tree data_arg)
 {
@@ -6257,7 +6257,7 @@ gimple_omp_target_set_data_arg (gomp_target *omp_target_stmt,
 
 /* Return the clauses associated with OMP_TEAMS GS.  */
 
-static inline tree
+inline tree
 gimple_omp_teams_clauses (const gimple *gs)
 {
   const gomp_teams *omp_teams_stmt = as_a <const gomp_teams *> (gs);
@@ -6267,7 +6267,7 @@ gimple_omp_teams_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TEAMS GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_teams_clauses_ptr (gimple *gs)
 {
   gomp_teams *omp_teams_stmt = as_a <gomp_teams *> (gs);
@@ -6277,7 +6277,7 @@ gimple_omp_teams_clauses_ptr (gimple *gs)
 
 /* Set CLAUSES to be the clauses associated with OMP_TEAMS_STMT.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_clauses (gomp_teams *omp_teams_stmt, tree clauses)
 {
   omp_teams_stmt->clauses = clauses;
@@ -6285,7 +6285,7 @@ gimple_omp_teams_set_clauses (gomp_teams *omp_teams_stmt, tree clauses)
 
 /* Return the child function used to hold the body of OMP_TEAMS_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_teams_child_fn (const gomp_teams *omp_teams_stmt)
 {
   return omp_teams_stmt->child_fn;
@@ -6294,7 +6294,7 @@ gimple_omp_teams_child_fn (const gomp_teams *omp_teams_stmt)
 /* Return a pointer to the child function used to hold the body of
    OMP_TEAMS_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_teams_child_fn_ptr (gomp_teams *omp_teams_stmt)
 {
   return &omp_teams_stmt->child_fn;
@@ -6303,7 +6303,7 @@ gimple_omp_teams_child_fn_ptr (gomp_teams *omp_teams_stmt)
 
 /* Set CHILD_FN to be the child function for OMP_TEAMS_STMT.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_child_fn (gomp_teams *omp_teams_stmt, tree child_fn)
 {
   omp_teams_stmt->child_fn = child_fn;
@@ -6313,7 +6313,7 @@ gimple_omp_teams_set_child_fn (gomp_teams *omp_teams_stmt, tree child_fn)
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TEAMS_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_teams_data_arg (const gomp_teams *omp_teams_stmt)
 {
   return omp_teams_stmt->data_arg;
@@ -6322,7 +6322,7 @@ gimple_omp_teams_data_arg (const gomp_teams *omp_teams_stmt)
 
 /* Return a pointer to the data argument for OMP_TEAMS_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_teams_data_arg_ptr (gomp_teams *omp_teams_stmt)
 {
   return &omp_teams_stmt->data_arg;
@@ -6331,7 +6331,7 @@ gimple_omp_teams_data_arg_ptr (gomp_teams *omp_teams_stmt)
 
 /* Set DATA_ARG to be the data argument for OMP_TEAMS_STMT.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_data_arg (gomp_teams *omp_teams_stmt, tree data_arg)
 {
   omp_teams_stmt->data_arg = data_arg;
@@ -6339,7 +6339,7 @@ gimple_omp_teams_set_data_arg (gomp_teams *omp_teams_stmt, tree data_arg)
 
 /* Return the host flag of an OMP_TEAMS_STMT.  */
 
-static inline bool
+inline bool
 gimple_omp_teams_host (const gomp_teams *omp_teams_stmt)
 {
   return (gimple_omp_subcode (omp_teams_stmt) & GF_OMP_TEAMS_HOST) != 0;
@@ -6347,7 +6347,7 @@ gimple_omp_teams_host (const gomp_teams *omp_teams_stmt)
 
 /* Set host flag of an OMP_TEAMS_STMT to VALUE.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_host (gomp_teams *omp_teams_stmt, bool value)
 {
   if (value)
@@ -6358,7 +6358,7 @@ gimple_omp_teams_set_host (gomp_teams *omp_teams_stmt, bool value)
 
 /* Return the clauses associated with OMP_SECTIONS GS.  */
 
-static inline tree
+inline tree
 gimple_omp_sections_clauses (const gimple *gs)
 {
   const gomp_sections *omp_sections_stmt = as_a <const gomp_sections *> (gs);
@@ -6368,7 +6368,7 @@ gimple_omp_sections_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_SECTIONS GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_sections_clauses_ptr (gimple *gs)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6379,7 +6379,7 @@ gimple_omp_sections_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the set of clauses associated with OMP_SECTIONS
    GS.  */
 
-static inline void
+inline void
 gimple_omp_sections_set_clauses (gimple *gs, tree clauses)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6390,7 +6390,7 @@ gimple_omp_sections_set_clauses (gimple *gs, tree clauses)
 /* Return the control variable associated with the GIMPLE_OMP_SECTIONS
    in GS.  */
 
-static inline tree
+inline tree
 gimple_omp_sections_control (const gimple *gs)
 {
   const gomp_sections *omp_sections_stmt = as_a <const gomp_sections *> (gs);
@@ -6401,7 +6401,7 @@ gimple_omp_sections_control (const gimple *gs)
 /* Return a pointer to the clauses associated with the GIMPLE_OMP_SECTIONS
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_sections_control_ptr (gimple *gs)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6412,7 +6412,7 @@ gimple_omp_sections_control_ptr (gimple *gs)
 /* Set CONTROL to be the set of clauses associated with the
    GIMPLE_OMP_SECTIONS in GS.  */
 
-static inline void
+inline void
 gimple_omp_sections_set_control (gimple *gs, tree control)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6422,7 +6422,7 @@ gimple_omp_sections_set_control (gimple *gs, tree control)
 
 /* Set the value being stored in an atomic store.  */
 
-static inline void
+inline void
 gimple_omp_atomic_store_set_val (gomp_atomic_store *store_stmt, tree val)
 {
   store_stmt->val = val;
@@ -6431,7 +6431,7 @@ gimple_omp_atomic_store_set_val (gomp_atomic_store *store_stmt, tree val)
 
 /* Return the value being stored in an atomic store.  */
 
-static inline tree
+inline tree
 gimple_omp_atomic_store_val (const gomp_atomic_store *store_stmt)
 {
   return store_stmt->val;
@@ -6440,7 +6440,7 @@ gimple_omp_atomic_store_val (const gomp_atomic_store *store_stmt)
 
 /* Return a pointer to the value being stored in an atomic store.  */
 
-static inline tree *
+inline tree *
 gimple_omp_atomic_store_val_ptr (gomp_atomic_store *store_stmt)
 {
   return &store_stmt->val;
@@ -6449,7 +6449,7 @@ gimple_omp_atomic_store_val_ptr (gomp_atomic_store *store_stmt)
 
 /* Set the LHS of an atomic load.  */
 
-static inline void
+inline void
 gimple_omp_atomic_load_set_lhs (gomp_atomic_load *load_stmt, tree lhs)
 {
   load_stmt->lhs = lhs;
@@ -6458,7 +6458,7 @@ gimple_omp_atomic_load_set_lhs (gomp_atomic_load *load_stmt, tree lhs)
 
 /* Get the LHS of an atomic load.  */
 
-static inline tree
+inline tree
 gimple_omp_atomic_load_lhs (const gomp_atomic_load *load_stmt)
 {
   return load_stmt->lhs;
@@ -6467,7 +6467,7 @@ gimple_omp_atomic_load_lhs (const gomp_atomic_load *load_stmt)
 
 /* Return a pointer to the LHS of an atomic load.  */
 
-static inline tree *
+inline tree *
 gimple_omp_atomic_load_lhs_ptr (gomp_atomic_load *load_stmt)
 {
   return &load_stmt->lhs;
@@ -6476,7 +6476,7 @@ gimple_omp_atomic_load_lhs_ptr (gomp_atomic_load *load_stmt)
 
 /* Set the RHS of an atomic load.  */
 
-static inline void
+inline void
 gimple_omp_atomic_load_set_rhs (gomp_atomic_load *load_stmt, tree rhs)
 {
   load_stmt->rhs = rhs;
@@ -6485,7 +6485,7 @@ gimple_omp_atomic_load_set_rhs (gomp_atomic_load *load_stmt, tree rhs)
 
 /* Get the RHS of an atomic load.  */
 
-static inline tree
+inline tree
 gimple_omp_atomic_load_rhs (const gomp_atomic_load *load_stmt)
 {
   return load_stmt->rhs;
@@ -6494,7 +6494,7 @@ gimple_omp_atomic_load_rhs (const gomp_atomic_load *load_stmt)
 
 /* Return a pointer to the RHS of an atomic load.  */
 
-static inline tree *
+inline tree *
 gimple_omp_atomic_load_rhs_ptr (gomp_atomic_load *load_stmt)
 {
   return &load_stmt->rhs;
@@ -6503,7 +6503,7 @@ gimple_omp_atomic_load_rhs_ptr (gomp_atomic_load *load_stmt)
 
 /* Get the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline tree
+inline tree
 gimple_omp_continue_control_def (const gomp_continue *cont_stmt)
 {
   return cont_stmt->control_def;
@@ -6511,7 +6511,7 @@ gimple_omp_continue_control_def (const gomp_continue *cont_stmt)
 
 /* The same as above, but return the address.  */
 
-static inline tree *
+inline tree *
 gimple_omp_continue_control_def_ptr (gomp_continue *cont_stmt)
 {
   return &cont_stmt->control_def;
@@ -6519,7 +6519,7 @@ gimple_omp_continue_control_def_ptr (gomp_continue *cont_stmt)
 
 /* Set the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline void
+inline void
 gimple_omp_continue_set_control_def (gomp_continue *cont_stmt, tree def)
 {
   cont_stmt->control_def = def;
@@ -6528,7 +6528,7 @@ gimple_omp_continue_set_control_def (gomp_continue *cont_stmt, tree def)
 
 /* Get the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline tree
+inline tree
 gimple_omp_continue_control_use (const gomp_continue *cont_stmt)
 {
   return cont_stmt->control_use;
@@ -6537,7 +6537,7 @@ gimple_omp_continue_control_use (const gomp_continue *cont_stmt)
 
 /* The same as above, but return the address.  */
 
-static inline tree *
+inline tree *
 gimple_omp_continue_control_use_ptr (gomp_continue *cont_stmt)
 {
   return &cont_stmt->control_use;
@@ -6546,7 +6546,7 @@ gimple_omp_continue_control_use_ptr (gomp_continue *cont_stmt)
 
 /* Set the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline void
+inline void
 gimple_omp_continue_set_control_use (gomp_continue *cont_stmt, tree use)
 {
   cont_stmt->control_use = use;
@@ -6554,7 +6554,7 @@ gimple_omp_continue_set_control_use (gomp_continue *cont_stmt, tree use)
 
 /* Return the guard associated with the GIMPLE_ASSUME statement GS.  */
 
-static inline tree
+inline tree
 gimple_assume_guard (const gimple *gs)
 {
   const gimple_statement_assume *assume_stmt
@@ -6564,14 +6564,14 @@ gimple_assume_guard (const gimple *gs)
 
 /* Set the guard associated with the GIMPLE_ASSUME statement GS.  */
 
-static inline void
+inline void
 gimple_assume_set_guard (gimple *gs, tree guard)
 {
   gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
   assume_stmt->guard = guard;
 }
 
-static inline tree *
+inline tree *
 gimple_assume_guard_ptr (gimple *gs)
 {
   gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
@@ -6581,7 +6581,7 @@ gimple_assume_guard_ptr (gimple *gs)
 /* Return the address of the GIMPLE sequence contained in the GIMPLE_ASSUME
    statement GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_assume_body_ptr (gimple *gs)
 {
   gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
@@ -6590,7 +6590,7 @@ gimple_assume_body_ptr (gimple *gs)
 
 /* Return the GIMPLE sequence contained in the GIMPLE_ASSUME statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_assume_body (const gimple *gs)
 {
   const gimple_statement_assume *assume_stmt
@@ -6601,7 +6601,7 @@ gimple_assume_body (const gimple *gs)
 /* Return a pointer to the body for the GIMPLE_TRANSACTION statement
    TRANSACTION_STMT.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_transaction_body_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->body;
@@ -6609,7 +6609,7 @@ gimple_transaction_body_ptr (gtransaction *transaction_stmt)
 
 /* Return the body for the GIMPLE_TRANSACTION statement TRANSACTION_STMT.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_transaction_body (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->body;
@@ -6617,37 +6617,37 @@ gimple_transaction_body (const gtransaction *transaction_stmt)
 
 /* Return the label associated with a GIMPLE_TRANSACTION.  */
 
-static inline tree
+inline tree
 gimple_transaction_label_norm (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->label_norm;
 }
 
-static inline tree *
+inline tree *
 gimple_transaction_label_norm_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->label_norm;
 }
 
-static inline tree
+inline tree
 gimple_transaction_label_uninst (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->label_uninst;
 }
 
-static inline tree *
+inline tree *
 gimple_transaction_label_uninst_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->label_uninst;
 }
 
-static inline tree
+inline tree
 gimple_transaction_label_over (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->label_over;
 }
 
-static inline tree *
+inline tree *
 gimple_transaction_label_over_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->label_over;
@@ -6655,7 +6655,7 @@ gimple_transaction_label_over_ptr (gtransaction *transaction_stmt)
 
 /* Return the subcode associated with a GIMPLE_TRANSACTION.  */
 
-static inline unsigned int
+inline unsigned int
 gimple_transaction_subcode (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->subcode;
@@ -6664,7 +6664,7 @@ gimple_transaction_subcode (const gtransaction *transaction_stmt)
 /* Set BODY to be the body for the GIMPLE_TRANSACTION statement
    TRANSACTION_STMT.  */
 
-static inline void
+inline void
 gimple_transaction_set_body (gtransaction *transaction_stmt,
 			     gimple_seq body)
 {
@@ -6673,19 +6673,19 @@ gimple_transaction_set_body (gtransaction *transaction_stmt,
 
 /* Set the label associated with a GIMPLE_TRANSACTION.  */
 
-static inline void
+inline void
 gimple_transaction_set_label_norm (gtransaction *transaction_stmt, tree label)
 {
   transaction_stmt->label_norm = label;
 }
 
-static inline void
+inline void
 gimple_transaction_set_label_uninst (gtransaction *transaction_stmt, tree label)
 {
   transaction_stmt->label_uninst = label;
 }
 
-static inline void
+inline void
 gimple_transaction_set_label_over (gtransaction *transaction_stmt, tree label)
 {
   transaction_stmt->label_over = label;
@@ -6693,7 +6693,7 @@ gimple_transaction_set_label_over (gtransaction *transaction_stmt, tree label)
 
 /* Set the subcode associated with a GIMPLE_TRANSACTION.  */
 
-static inline void
+inline void
 gimple_transaction_set_subcode (gtransaction *transaction_stmt,
 				unsigned int subcode)
 {
@@ -6702,7 +6702,7 @@ gimple_transaction_set_subcode (gtransaction *transaction_stmt,
 
 /* Return a pointer to the return value for GIMPLE_RETURN GS.  */
 
-static inline tree *
+inline tree *
 gimple_return_retval_ptr (greturn *gs)
 {
   return &gs->op[0];
@@ -6710,7 +6710,7 @@ gimple_return_retval_ptr (greturn *gs)
 
 /* Return the return value for GIMPLE_RETURN GS.  */
 
-static inline tree
+inline tree
 gimple_return_retval (const greturn *gs)
 {
   return gs->op[0];
@@ -6719,7 +6719,7 @@ gimple_return_retval (const greturn *gs)
 
 /* Set RETVAL to be the return value for GIMPLE_RETURN GS.  */
 
-static inline void
+inline void
 gimple_return_set_retval (greturn *gs, tree retval)
 {
   gs->op[0] = retval;
@@ -6750,7 +6750,7 @@ gimple_return_set_retval (greturn *gs, tree retval)
     case GIMPLE_OMP_ATOMIC_STORE:		\
     case GIMPLE_OMP_CONTINUE
 
-static inline bool
+inline bool
 is_gimple_omp (const gimple *stmt)
 {
   switch (gimple_code (stmt))
@@ -6765,7 +6765,7 @@ is_gimple_omp (const gimple *stmt)
 /* Return true if the OMP gimple statement STMT is any of the OpenACC types
    specifically.  */
 
-static inline bool
+inline bool
 is_gimple_omp_oacc (const gimple *stmt)
 {
   gcc_assert (is_gimple_omp (stmt));
@@ -6814,7 +6814,7 @@ is_gimple_omp_oacc (const gimple *stmt)
 
 /* Return true if the OMP gimple statement STMT is offloaded.  */
 
-static inline bool
+inline bool
 is_gimple_omp_offloaded (const gimple *stmt)
 {
   gcc_assert (is_gimple_omp (stmt));
@@ -6841,7 +6841,7 @@ is_gimple_omp_offloaded (const gimple *stmt)
 
 /* Returns TRUE if statement G is a GIMPLE_NOP.  */
 
-static inline bool
+inline bool
 gimple_nop_p (const gimple *g)
 {
   return gimple_code (g) == GIMPLE_NOP;
@@ -6850,7 +6850,7 @@ gimple_nop_p (const gimple *g)
 
 /* Return true if GS is a GIMPLE_RESX.  */
 
-static inline bool
+inline bool
 is_gimple_resx (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_RESX;
@@ -6872,7 +6872,7 @@ extern uint64_t gimple_alloc_counts[];
 extern uint64_t gimple_alloc_sizes[];
 
 /* Return the allocation kind for a given stmt CODE.  */
-static inline enum gimple_alloc_kind
+inline enum gimple_alloc_kind
 gimple_alloc_kind (enum gimple_code code)
 {
   switch (code)
@@ -6891,7 +6891,7 @@ gimple_alloc_kind (enum gimple_code code)
 /* Return true if a location should not be emitted for this statement
    by annotate_all_with_location.  */
 
-static inline bool
+inline bool
 gimple_do_not_emit_location_p (gimple *g)
 {
   return gimple_plf (g, GF_PLF_1);
@@ -6900,7 +6900,7 @@ gimple_do_not_emit_location_p (gimple *g)
 /* Mark statement G so a location will not be emitted by
    annotate_one_with_location.  */
 
-static inline void
+inline void
 gimple_set_do_not_emit_location (gimple *g)
 {
   /* The PLF flags are initialized to 0 when a new tuple is created,
diff --git a/gcc/graphite.h b/gcc/graphite.h
index c4c5e3c6fc5..dc6e482fce3 100644
--- a/gcc/graphite.h
+++ b/gcc/graphite.h
@@ -32,7 +32,7 @@ typedef struct scop *scop_p;
 
 typedef unsigned graphite_dim_t;
 
-static inline graphite_dim_t scop_nb_params (scop_p);
+inline graphite_dim_t scop_nb_params (scop_p);
 
 /* A data reference can write or read some memory or we
    just know it may write some memory.  */
@@ -189,7 +189,7 @@ void new_poly_dr (poly_bb_p, gimple *, enum poly_dr_type,
 void debug_pdr (poly_dr_p);
 void print_pdr (FILE *, poly_dr_p);
 
-static inline bool
+inline bool
 pdr_read_p (poly_dr_p pdr)
 {
   return PDR_TYPE (pdr) == PDR_READ;
@@ -197,7 +197,7 @@ pdr_read_p (poly_dr_p pdr)
 
 /* Returns true when PDR is a "write".  */
 
-static inline bool
+inline bool
 pdr_write_p (poly_dr_p pdr)
 {
   return PDR_TYPE (pdr) == PDR_WRITE;
@@ -205,7 +205,7 @@ pdr_write_p (poly_dr_p pdr)
 
 /* Returns true when PDR is a "may write".  */
 
-static inline bool
+inline bool
 pdr_may_write_p (poly_dr_p pdr)
 {
   return PDR_TYPE (pdr) == PDR_MAY_WRITE;
@@ -295,13 +295,13 @@ extern void debug_schedule_ast (__isl_keep isl_schedule *, scop_p);
 
 /* The basic block of the PBB.  */
 
-static inline basic_block
+inline basic_block
 pbb_bb (poly_bb_p pbb)
 {
   return GBB_BB (PBB_BLACK_BOX (pbb));
 }
 
-static inline int
+inline int
 pbb_index (poly_bb_p pbb)
 {
   return pbb_bb (pbb)->index;
@@ -309,7 +309,7 @@ pbb_index (poly_bb_p pbb)
 
 /* The loop of the PBB.  */
 
-static inline loop_p
+inline loop_p
 pbb_loop (poly_bb_p pbb)
 {
   return gbb_loop (PBB_BLACK_BOX (pbb));
@@ -317,7 +317,7 @@ pbb_loop (poly_bb_p pbb)
 
 /* The scop that contains the PDR.  */
 
-static inline scop_p
+inline scop_p
 pdr_scop (poly_dr_p pdr)
 {
   return PBB_SCOP (PDR_PBB (pdr));
@@ -325,7 +325,7 @@ pdr_scop (poly_dr_p pdr)
 
 /* Set black box of PBB to BLACKBOX.  */
 
-static inline void
+inline void
 pbb_set_black_box (poly_bb_p pbb, gimple_poly_bb_p black_box)
 {
   pbb->black_box = black_box;
@@ -412,7 +412,7 @@ extern bool apply_poly_transforms (scop_p);
 
 /* Set the region of SCOP to REGION.  */
 
-static inline void
+inline void
 scop_set_region (scop_p scop, sese_info_p region)
 {
   scop->scop_info = region;
@@ -420,7 +420,7 @@ scop_set_region (scop_p scop, sese_info_p region)
 
 /* Returns the number of parameters for SCOP.  */
 
-static inline graphite_dim_t
+inline graphite_dim_t
 scop_nb_params (scop_p scop)
 {
   return scop->nb_params;
@@ -428,7 +428,7 @@ scop_nb_params (scop_p scop)
 
 /* Set the number of params of SCOP to NB_PARAMS.  */
 
-static inline void
+inline void
 scop_set_nb_params (scop_p scop, graphite_dim_t nb_params)
 {
   scop->nb_params = nb_params;
diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
index 320b4349527..b0bb9bce074 100644
--- a/gcc/hard-reg-set.h
+++ b/gcc/hard-reg-set.h
@@ -173,19 +173,19 @@ struct hard_reg_set_container
 #define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
 #define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))
 
-static inline bool
+inline bool
 hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   return (x & ~y) == HARD_CONST (0);
 }
 
-static inline bool
+inline bool
 hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   return (x & y) != HARD_CONST (0);
 }
 
-static inline bool
+inline bool
 hard_reg_set_empty_p (const_hard_reg_set x)
 {
   return x == HARD_CONST (0);
@@ -228,7 +228,7 @@ SET_HARD_REG_SET (HARD_REG_SET &set)
     set.elts[i] = -1;
 }
 
-static inline bool
+inline bool
 hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   HARD_REG_ELT_TYPE bad = 0;
@@ -237,7 +237,7 @@ hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
   return bad == 0;
 }
 
-static inline bool
+inline bool
 hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   HARD_REG_ELT_TYPE good = 0;
@@ -246,7 +246,7 @@ hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
   return good != 0;
 }
 
-static inline bool
+inline bool
 hard_reg_set_empty_p (const_hard_reg_set x)
 {
   HARD_REG_ELT_TYPE bad = 0;
@@ -279,7 +279,7 @@ struct hard_reg_set_iterator
 
 /* The implementation of the iterator functions is fully analogous to
    the bitmap iterators.  */
-static inline void
+inline void
 hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
                         unsigned min, unsigned *regno)
 {
@@ -302,7 +302,7 @@ hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
   *regno = min;
 }
 
-static inline bool
+inline bool
 hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
 {
   while (1)
@@ -337,7 +337,7 @@ hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
     }
 }
 
-static inline void
+inline void
 hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *regno)
 {
   iter->bits >>= 1;
diff --git a/gcc/hash-map.h b/gcc/hash-map.h
index bc7ca9fd8e2..1c5189b04d5 100644
--- a/gcc/hash-map.h
+++ b/gcc/hash-map.h
@@ -315,21 +315,21 @@ private:
 /* ggc marking routines.  */
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_ggc_mx (hash_map<K, V, H> *h)
 {
   gt_ggc_mx (&h->m_table);
 }
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_map<K, V, H> *h)
 {
   gt_pch_nx (&h->m_table);
 }
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_cleare_cache (hash_map<K, V, H> *h)
 {
   if (h)
@@ -337,7 +337,7 @@ gt_cleare_cache (hash_map<K, V, H> *h)
 }
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_map<K, V, H> *h, gt_pointer_operator op, void *cookie)
 {
   op (&h->m_table.m_entries, NULL, cookie);
diff --git a/gcc/hash-set.h b/gcc/hash-set.h
index 048e7e75011..f6125eb6a3a 100644
--- a/gcc/hash-set.h
+++ b/gcc/hash-set.h
@@ -194,21 +194,21 @@ debug_helper (hash_set<T> &ref)
 /* ggc marking routines.  */
 
 template<typename K, typename H>
-static inline void
+inline void
 gt_ggc_mx (hash_set<K, false, H> *h)
 {
   gt_ggc_mx (&h->m_table);
 }
 
 template<typename K, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_set<K, false, H> *h)
 {
   gt_pch_nx (&h->m_table);
 }
 
 template<typename K, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_set<K, false, H> *h, gt_pointer_operator op, void *cookie)
 {
   op (&h->m_table.m_entries, NULL, cookie);
diff --git a/gcc/hash-table.h b/gcc/hash-table.h
index e37625dc315..3f87ec06f37 100644
--- a/gcc/hash-table.h
+++ b/gcc/hash-table.h
@@ -1236,7 +1236,7 @@ hash_table<Descriptor, Lazy, Allocator>::iterator::operator ++ ()
 /* ggc walking routines.  */
 
 template<typename E>
-static inline void
+inline void
 gt_ggc_mx (hash_table<E> *h)
 {
   typedef hash_table<E> table;
@@ -1257,7 +1257,7 @@ gt_ggc_mx (hash_table<E> *h)
 }
 
 template<typename D>
-static inline void
+inline void
 hashtab_entry_note_pointers (void *obj, void *h, gt_pointer_operator op,
 			     void *cookie)
 {
@@ -1293,7 +1293,7 @@ gt_pch_nx (hash_table<D> *h)
 }
 
 template<typename D>
-static inline void
+inline void
 gt_pch_nx (hash_table<D> *h, gt_pointer_operator op, void *cookie)
 {
   op (&h->m_entries, NULL, cookie);
diff --git a/gcc/hwint.h b/gcc/hwint.h
index e31aa006fa4..427e9b9e9fd 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -138,7 +138,7 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
 
 /* Return X with all but the lowest bit masked off.  */
 
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 least_bit_hwi (unsigned HOST_WIDE_INT x)
 {
   return (x & -x);
@@ -146,7 +146,7 @@ least_bit_hwi (unsigned HOST_WIDE_INT x)
 
 /* True if X is zero or a power of two.  */
 
-static inline bool
+inline bool
 pow2_or_zerop (unsigned HOST_WIDE_INT x)
 {
   return least_bit_hwi (x) == x;
@@ -154,7 +154,7 @@ pow2_or_zerop (unsigned HOST_WIDE_INT x)
 
 /* True if X is a power of two.  */
 
-static inline bool
+inline bool
 pow2p_hwi (unsigned HOST_WIDE_INT x)
 {
   return x && pow2_or_zerop (x);
@@ -181,7 +181,7 @@ extern int ceil_log2			(unsigned HOST_WIDE_INT);
 #else /* GCC_VERSION >= 3004 */
 
 /* For convenience, define 0 -> word_size.  */
-static inline int
+inline int
 clz_hwi (unsigned HOST_WIDE_INT x)
 {
   if (x == 0)
@@ -195,7 +195,7 @@ clz_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 ctz_hwi (unsigned HOST_WIDE_INT x)
 {
   if (x == 0)
@@ -209,7 +209,7 @@ ctz_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 ffs_hwi (unsigned HOST_WIDE_INT x)
 {
 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
@@ -221,7 +221,7 @@ ffs_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 popcount_hwi (unsigned HOST_WIDE_INT x)
 {
 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
@@ -233,19 +233,19 @@ popcount_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 floor_log2 (unsigned HOST_WIDE_INT x)
 {
   return HOST_BITS_PER_WIDE_INT - 1 - clz_hwi (x);
 }
 
-static inline int
+inline int
 ceil_log2 (unsigned HOST_WIDE_INT x)
 {
   return x == 0 ? 0 : floor_log2 (x - 1) + 1;
 }
 
-static inline int
+inline int
 exact_log2 (unsigned HOST_WIDE_INT x)
 {
   return pow2p_hwi (x) ? ctz_hwi (x) : -1;
@@ -266,7 +266,7 @@ extern HOST_WIDE_INT least_common_multiple (HOST_WIDE_INT, HOST_WIDE_INT);
 
 /* Like ctz_hwi, except 0 when x == 0.  */
 
-static inline int
+inline int
 ctz_or_zero (unsigned HOST_WIDE_INT x)
 {
   return ffs_hwi (x) - 1;
@@ -274,7 +274,7 @@ ctz_or_zero (unsigned HOST_WIDE_INT x)
 
 /* Sign extend SRC starting from PREC.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 sext_hwi (HOST_WIDE_INT src, unsigned int prec)
 {
   if (prec == HOST_BITS_PER_WIDE_INT)
@@ -304,7 +304,7 @@ sext_hwi (HOST_WIDE_INT src, unsigned int prec)
 }
 
 /* Zero extend SRC starting from PREC.  */
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 zext_hwi (unsigned HOST_WIDE_INT src, unsigned int prec)
 {
   if (prec == HOST_BITS_PER_WIDE_INT)
diff --git a/gcc/input.h b/gcc/input.h
index b1fa14adf5b..9d68648bb3c 100644
--- a/gcc/input.h
+++ b/gcc/input.h
@@ -195,7 +195,7 @@ extern int get_discriminator_from_loc (location_t);
    that is part of a macro replacement-list defined in a system
    header, but expanded in a non-system file.  */
 
-static inline int
+inline int
 in_system_header_at (location_t loc)
 {
   return linemap_location_in_system_header_p (line_table, loc);
@@ -204,7 +204,7 @@ in_system_header_at (location_t loc)
 /* Return true if LOCATION is the locus of a token that
    comes from a macro expansion, false otherwise.  */
 
-static inline bool
+inline bool
 from_macro_expansion_at (location_t loc)
 {
   return linemap_location_from_macro_expansion_p (line_table, loc);
@@ -214,13 +214,13 @@ from_macro_expansion_at (location_t loc)
    a macro definition, false otherwise.  This differs from from_macro_expansion_at
    in its treatment of macro arguments, for which this returns false.  */
 
-static inline bool
+inline bool
 from_macro_definition_at (location_t loc)
 {
   return linemap_location_from_macro_definition_p (line_table, loc);
 }
 
-static inline location_t
+inline location_t
 get_pure_location (location_t loc)
 {
   return get_pure_location (line_table, loc);
@@ -228,7 +228,7 @@ get_pure_location (location_t loc)
 
 /* Get the start of any range encoded within location LOC.  */
 
-static inline location_t
+inline location_t
 get_start (location_t loc)
 {
   return get_range_from_loc (line_table, loc).m_start;
@@ -236,7 +236,7 @@ get_start (location_t loc)
 
 /* Get the endpoint of any range encoded within location LOC.  */
 
-static inline location_t
+inline location_t
 get_finish (location_t loc)
 {
   return get_range_from_loc (line_table, loc).m_finish;
diff --git a/gcc/insn-addr.h b/gcc/insn-addr.h
index aa5fd8ebe0d..baf4d995e22 100644
--- a/gcc/insn-addr.h
+++ b/gcc/insn-addr.h
@@ -37,7 +37,7 @@ extern int insn_current_address;
 #define INSN_ADDRESSES_SET_P() (insn_addresses_.exists ())
 #define INSN_ADDRESSES_SIZE() (insn_addresses_.length ())
 
-static inline void
+inline void
 insn_addresses_new (rtx_insn *insn, int insn_addr)
 {
   unsigned insn_uid = INSN_UID ((insn));
diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h
index 6f7a262a763..2fd82a19d15 100644
--- a/gcc/internal-fn.h
+++ b/gcc/internal-fn.h
@@ -105,7 +105,7 @@ extern void init_internal_fns ();
 
 extern const char *const internal_fn_name_array[];
 
-static inline const char *
+inline const char *
 internal_fn_name (enum internal_fn fn)
 {
   return internal_fn_name_array[(int) fn];
@@ -117,7 +117,7 @@ extern internal_fn lookup_internal_fn (const char *);
 
 extern const int internal_fn_flags_array[];
 
-static inline int
+inline int
 internal_fn_flags (enum internal_fn fn)
 {
   return internal_fn_flags_array[(int) fn];
@@ -127,7 +127,7 @@ internal_fn_flags (enum internal_fn fn)
 
 extern GTY(()) const_tree internal_fn_fnspec_array[IFN_LAST + 1];
 
-static inline const_tree
+inline const_tree
 internal_fn_fnspec (enum internal_fn fn)
 {
   return internal_fn_fnspec_array[(int) fn];
diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h
index 546d15aea30..fcc01167d0d 100644
--- a/gcc/ipa-fnsummary.h
+++ b/gcc/ipa-fnsummary.h
@@ -435,7 +435,7 @@ void ipa_remove_from_growth_caches (struct cgraph_edge *edge);
 
 /* Return true if EDGE is a cross module call.  */
 
-static inline bool
+inline bool
 cross_module_call_p (struct cgraph_edge *edge)
 {
   /* Here we do not want to walk to alias target becuase ICF may create
diff --git a/gcc/ipa-icf-gimple.h b/gcc/ipa-icf-gimple.h
index 09a31e8e55a..1ad6421a5ba 100644
--- a/gcc/ipa-icf-gimple.h
+++ b/gcc/ipa-icf-gimple.h
@@ -39,7 +39,7 @@ along with GCC; see the file COPYING3.  If not see
 /* Logs a MESSAGE to dump_file if exists and returns false. FUNC is name
    of function and LINE is location in the source file.  */
 
-static inline bool
+inline bool
 return_false_with_message_1 (const char *message, const char *filename,
 			     const char *func, unsigned int line)
 {
@@ -59,7 +59,7 @@ return_false_with_message_1 (const char *message, const char *filename,
 /* Logs return value if RESULT is false. FUNC is name of function and LINE
    is location in the source file.  */
 
-static inline bool
+inline bool
 return_with_result (bool result, const char *filename,
 		    const char *func, unsigned int line)
 {
@@ -77,7 +77,7 @@ return_with_result (bool result, const char *filename,
 /* Verbose logging function logging statements S1 and S2 of a CODE.
    FUNC is name of function and LINE is location in the source file.  */
 
-static inline bool
+inline bool
 return_different_stmts_1 (gimple *s1, gimple *s2, const char *code,
 			  const char *func, unsigned int line)
 {
diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h
index b238316f977..70de89a8b5a 100644
--- a/gcc/ipa-inline.h
+++ b/gcc/ipa-inline.h
@@ -69,7 +69,7 @@ extern function_summary <tree *> *ipa_saved_clone_sources;
 
 /* Return estimated size of the inline sequence of EDGE.  */
 
-static inline int
+inline int
 estimate_edge_size (struct cgraph_edge *edge)
 {
   edge_growth_cache_entry *entry;
@@ -82,7 +82,7 @@ estimate_edge_size (struct cgraph_edge *edge)
 
 /* Return lower bound on estimated callee growth after inlining EDGE.  */
 
-static inline int
+inline int
 estimate_min_edge_growth (struct cgraph_edge *edge)
 {
   ipa_call_summary *s = ipa_call_summaries->get (edge);
@@ -92,7 +92,7 @@ estimate_min_edge_growth (struct cgraph_edge *edge)
 
 /* Return estimated callee growth after inlining EDGE.  */
 
-static inline int
+inline int
 estimate_edge_growth (struct cgraph_edge *edge)
 {
   ipa_call_summary *s = ipa_call_summaries->get (edge);
@@ -103,7 +103,7 @@ estimate_edge_growth (struct cgraph_edge *edge)
 /* Return estimated callee runtime increase after inlining
    EDGE.  */
 
-static inline sreal
+inline sreal
 estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
 {
   edge_growth_cache_entry *entry;
@@ -120,7 +120,7 @@ estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
 /* Return estimated callee runtime increase after inlining
    EDGE.  */
 
-static inline ipa_hints
+inline ipa_hints
 estimate_edge_hints (struct cgraph_edge *edge)
 {
   edge_growth_cache_entry *entry;
diff --git a/gcc/ipa-modref.h b/gcc/ipa-modref.h
index 7a2fd730db6..2a2d31e86db 100644
--- a/gcc/ipa-modref.h
+++ b/gcc/ipa-modref.h
@@ -108,7 +108,7 @@ static const int implicit_retslot_eaf_flags
    MODREF_FLAGS are flags determined by analysis of function body while
    FLAGS are flags known otherwise (i.e. by fnspec, pure/const attributes
    etc.)  */
-static inline int
+inline int
 interposable_eaf_flags (int modref_flags, int flags)
 {
   /* If parameter was previously unused, we know it is only read
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index ea062e00a65..a40ccc0ebbe 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -348,14 +348,14 @@ struct GTY (()) ipa_jump_func
 
 /* Return the constant stored in a constant jump functin JFUNC.  */
 
-static inline tree
+inline tree
 ipa_get_jf_constant (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_CONST);
   return jfunc->value.constant.value;
 }
 
-static inline struct ipa_cst_ref_desc *
+inline struct ipa_cst_ref_desc *
 ipa_get_jf_constant_rdesc (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_CONST);
@@ -364,7 +364,7 @@ ipa_get_jf_constant_rdesc (struct ipa_jump_func *jfunc)
 
 /* Return the operand of a pass through jmp function JFUNC.  */
 
-static inline tree
+inline tree
 ipa_get_jf_pass_through_operand (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -374,7 +374,7 @@ ipa_get_jf_pass_through_operand (struct ipa_jump_func *jfunc)
 /* Return the number of the caller's formal parameter that a pass through jump
    function JFUNC refers to.  */
 
-static inline int
+inline int
 ipa_get_jf_pass_through_formal_id (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -383,7 +383,7 @@ ipa_get_jf_pass_through_formal_id (struct ipa_jump_func *jfunc)
 
 /* Return operation of a pass through jump function JFUNC.  */
 
-static inline enum tree_code
+inline enum tree_code
 ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -392,7 +392,7 @@ ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
 
 /* Return the agg_preserved flag of a pass through jump function JFUNC.  */
 
-static inline bool
+inline bool
 ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -402,7 +402,7 @@ ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
 /* Return true if pass through jump function JFUNC preserves type
    information.  */
 
-static inline bool
+inline bool
 ipa_get_jf_pass_through_type_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -411,7 +411,7 @@ ipa_get_jf_pass_through_type_preserved (struct ipa_jump_func *jfunc)
 
 /* Return the offset of an ancestor jump function JFUNC.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 ipa_get_jf_ancestor_offset (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -421,7 +421,7 @@ ipa_get_jf_ancestor_offset (struct ipa_jump_func *jfunc)
 /* Return the number of the caller's formal parameter that an ancestor jump
    function JFUNC refers to.  */
 
-static inline int
+inline int
 ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -430,7 +430,7 @@ ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
 
 /* Return the agg_preserved flag of an ancestor jump function JFUNC.  */
 
-static inline bool
+inline bool
 ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -439,7 +439,7 @@ ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
 
 /* Return true if ancestor jump function JFUNC presrves type information.  */
 
-static inline bool
+inline bool
 ipa_get_jf_ancestor_type_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -450,7 +450,7 @@ ipa_get_jf_ancestor_type_preserved (struct ipa_jump_func *jfunc)
    parameter for non-NULLness unless it does not matter because the offset is
    zero anyway.  */
 
-static inline bool
+inline bool
 ipa_get_jf_ancestor_keep_null (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -701,7 +701,7 @@ struct ipa_func_body_info
 
 /* Return the number of formal parameters. */
 
-static inline int
+inline int
 ipa_get_param_count (class ipa_node_params *info)
 {
   return vec_safe_length (info->descriptors);
@@ -710,7 +710,7 @@ ipa_get_param_count (class ipa_node_params *info)
 /* Return the parameter declaration in DESCRIPTORS at index I and assert it is
    indeed a PARM_DECL.  */
 
-static inline tree
+inline tree
 ipa_get_param (const vec<ipa_param_descriptor, va_gc> &descriptors, int i)
 {
   tree t = descriptors[i].decl_or_type;
@@ -723,7 +723,7 @@ ipa_get_param (const vec<ipa_param_descriptor, va_gc> &descriptors, int i)
    using ipa_initialize_node_params.  This function should not be called in
    WPA.  */
 
-static inline tree
+inline tree
 ipa_get_param (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -733,7 +733,7 @@ ipa_get_param (class ipa_node_params *info, int i)
 /* Return the type of Ith formal parameter of the function corresponding
    to INFO if it is known or NULL if not.  */
 
-static inline tree
+inline tree
 ipa_get_type (class ipa_node_params *info, int i)
 {
   if (vec_safe_length (info->descriptors) <= (unsigned) i)
@@ -750,7 +750,7 @@ ipa_get_type (class ipa_node_params *info, int i)
 /* Return the move cost of Ith formal parameter of the function corresponding
    to INFO.  */
 
-static inline int
+inline int
 ipa_get_param_move_cost (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -760,7 +760,7 @@ ipa_get_param_move_cost (class ipa_node_params *info, int i)
 /* Set the used flag corresponding to the Ith formal parameter of the function
    associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -770,7 +770,7 @@ ipa_set_param_used (class ipa_node_params *info, int i, bool val)
 /* Set the used_by_ipa_predicates flag corresponding to the Ith formal
    parameter of the function associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used_by_ipa_predicates (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -780,7 +780,7 @@ ipa_set_param_used_by_ipa_predicates (class ipa_node_params *info, int i, bool v
 /* Set the used_by_indirect_call flag corresponding to the Ith formal
    parameter of the function associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used_by_indirect_call (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -790,7 +790,7 @@ ipa_set_param_used_by_indirect_call (class ipa_node_params *info, int i, bool va
 /* Set the .used_by_polymorphic_call flag corresponding to the Ith formal
    parameter of the function associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used_by_polymorphic_call (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -800,7 +800,7 @@ ipa_set_param_used_by_polymorphic_call (class ipa_node_params *info, int i, bool
 /* Return how many uses described by ipa-prop a parameter has or
    IPA_UNDESCRIBED_USE if there is a use that is not described by these
    structures.  */
-static inline int
+inline int
 ipa_get_controlled_uses (class ipa_node_params *info, int i)
 {
   /* FIXME: introducing speculation causes out of bounds access here.  */
@@ -811,7 +811,7 @@ ipa_get_controlled_uses (class ipa_node_params *info, int i)
 
 /* Set the controlled counter of a given parameter.  */
 
-static inline void
+inline void
 ipa_set_controlled_uses (class ipa_node_params *info, int i, int val)
 {
   gcc_checking_assert (info->descriptors);
@@ -820,7 +820,7 @@ ipa_set_controlled_uses (class ipa_node_params *info, int i, int val)
 
 /* Assuming a parameter does not have IPA_UNDESCRIBED_USE controlled uses,
    return flag which indicates it has been dereferenced but only in a load.  */
-static inline int
+inline int
 ipa_get_param_load_dereferenced (class ipa_node_params *info, int i)
 {
   gcc_assert (ipa_get_controlled_uses (info, i) != IPA_UNDESCRIBED_USE);
@@ -829,7 +829,7 @@ ipa_get_param_load_dereferenced (class ipa_node_params *info, int i)
 
 /* Set the load_dereferenced flag of a given parameter.  */
 
-static inline void
+inline void
 ipa_set_param_load_dereferenced (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -839,7 +839,7 @@ ipa_set_param_load_dereferenced (class ipa_node_params *info, int i, bool val)
 /* Return the used flag corresponding to the Ith formal parameter of the
    function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -849,7 +849,7 @@ ipa_is_param_used (class ipa_node_params *info, int i)
 /* Return the used_by_ipa_predicates flag corresponding to the Ith formal
    parameter of the function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used_by_ipa_predicates (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -859,7 +859,7 @@ ipa_is_param_used_by_ipa_predicates (class ipa_node_params *info, int i)
 /* Return the used_by_indirect_call flag corresponding to the Ith formal
    parameter of the function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used_by_indirect_call (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -869,7 +869,7 @@ ipa_is_param_used_by_indirect_call (class ipa_node_params *info, int i)
 /* Return the used_by_polymorphic_call flag corresponding to the Ith formal
    parameter of the function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used_by_polymorphic_call (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -944,7 +944,7 @@ class GTY((for_user)) ipa_edge_args
 
 /* Return the number of actual arguments. */
 
-static inline int
+inline int
 ipa_get_cs_argument_count (class ipa_edge_args *args)
 {
   return vec_safe_length (args->jump_functions);
@@ -954,7 +954,7 @@ ipa_get_cs_argument_count (class ipa_edge_args *args)
    there is no setter function as jump functions are all set up in
    ipa_compute_jump_functions. */
 
-static inline struct ipa_jump_func *
+inline struct ipa_jump_func *
 ipa_get_ith_jump_func (class ipa_edge_args *args, int i)
 {
   return &(*args->jump_functions)[i];
@@ -962,7 +962,7 @@ ipa_get_ith_jump_func (class ipa_edge_args *args, int i)
 
 /* Returns a pointer to the polymorphic call context for the ith argument.
    NULL if contexts are not computed.  */
-static inline class ipa_polymorphic_call_context *
+inline class ipa_polymorphic_call_context *
 ipa_get_ith_polymorhic_call_context (class ipa_edge_args *args, int i)
 {
   if (!args->polymorphic_call_contexts)
@@ -1056,7 +1056,7 @@ int count_formal_params (tree fndecl);
 /* This function ensures the array of node param infos is big enough to
    accommodate a structure for all nodes and reallocates it if not.  */
 
-static inline void
+inline void
 ipa_check_create_node_params (void)
 {
   if (!ipa_node_params_sum)
@@ -1069,13 +1069,13 @@ ipa_check_create_node_params (void)
    of this function is that debug dumping function can check info availability
    without causing allocations.  */
 
-static inline bool
+inline bool
 ipa_edge_args_info_available_for_edge_p (struct cgraph_edge *edge)
 {
   return ipa_edge_args_sum->exists (edge);
 }
 
-static inline ipcp_transformation *
+inline ipcp_transformation *
 ipcp_get_transformation_summary (cgraph_node *node)
 {
   if (ipcp_transformation_sum == NULL)
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index 95ad76e96ce..e2de47213b4 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -504,7 +504,7 @@ struct ira_emit_data
 extern ira_emit_data_t ira_allocno_emit_data;
 
 /* Abbreviation for frequent emit data access.  */
-static inline rtx
+inline rtx
 allocno_emit_reg (ira_allocno_t a)
 {
   return ALLOCNO_EMIT_DATA (a)->reg;
@@ -734,7 +734,7 @@ struct minmax_set_iterator {
 
 /* Initialize the iterator I for bit vector VEC containing minimal and
    maximal values MIN and MAX.  */
-static inline void
+inline void
 minmax_set_iter_init (minmax_set_iterator *i, IRA_INT_TYPE *vec, int min,
 		      int max)
 {
@@ -749,7 +749,7 @@ minmax_set_iter_init (minmax_set_iterator *i, IRA_INT_TYPE *vec, int min,
 /* Return TRUE if we have more allocnos to visit, in which case *N is
    set to the number of the element to be visited.  Otherwise, return
    FALSE.  */
-static inline bool
+inline bool
 minmax_set_iter_cond (minmax_set_iterator *i, int *n)
 {
   /* Skip words that are zeros.  */
@@ -774,7 +774,7 @@ minmax_set_iter_cond (minmax_set_iterator *i, int *n)
 }
 
 /* Advance to the next element in the set.  */
-static inline void
+inline void
 minmax_set_iter_next (minmax_set_iterator *i)
 {
   i->word >>= 1;
@@ -1084,7 +1084,7 @@ extern void ira_emit (bool);
 \f
 
 /* Return true if equivalence of pseudo REGNO is not a lvalue.  */
-static inline bool
+inline bool
 ira_equiv_no_lvalue_p (int regno)
 {
   if (regno >= ira_reg_equiv_len)
@@ -1098,7 +1098,7 @@ ira_equiv_no_lvalue_p (int regno)
 \f
 
 /* Initialize register costs for MODE if necessary.  */
-static inline void
+inline void
 ira_init_register_move_cost_if_necessary (machine_mode mode)
 {
   if (ira_register_move_cost[mode] == NULL)
@@ -1114,7 +1114,7 @@ struct ira_allocno_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_allocno_iter_init (ira_allocno_iterator *i)
 {
   i->n = 0;
@@ -1122,7 +1122,7 @@ ira_allocno_iter_init (ira_allocno_iterator *i)
 
 /* Return TRUE if we have more allocnos to visit, in which case *A is
    set to the allocno to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_allocno_iter_cond (ira_allocno_iterator *i, ira_allocno_t *a)
 {
   int n;
@@ -1151,7 +1151,7 @@ struct ira_object_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_object_iter_init (ira_object_iterator *i)
 {
   i->n = 0;
@@ -1159,7 +1159,7 @@ ira_object_iter_init (ira_object_iterator *i)
 
 /* Return TRUE if we have more objects to visit, in which case *OBJ is
    set to the object to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_object_iter_cond (ira_object_iterator *i, ira_object_t *obj)
 {
   int n;
@@ -1188,7 +1188,7 @@ struct ira_allocno_object_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_allocno_object_iter_init (ira_allocno_object_iterator *i)
 {
   i->n = 0;
@@ -1197,7 +1197,7 @@ ira_allocno_object_iter_init (ira_allocno_object_iterator *i)
 /* Return TRUE if we have more objects to visit in allocno A, in which
    case *O is set to the object to be visited.  Otherwise, return
    FALSE.  */
-static inline bool
+inline bool
 ira_allocno_object_iter_cond (ira_allocno_object_iterator *i, ira_allocno_t a,
 			      ira_object_t *o)
 {
@@ -1225,7 +1225,7 @@ struct ira_pref_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_pref_iter_init (ira_pref_iterator *i)
 {
   i->n = 0;
@@ -1233,7 +1233,7 @@ ira_pref_iter_init (ira_pref_iterator *i)
 
 /* Return TRUE if we have more prefs to visit, in which case *PREF is
    set to the pref to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_pref_iter_cond (ira_pref_iterator *i, ira_pref_t *pref)
 {
   int n;
@@ -1263,7 +1263,7 @@ struct ira_copy_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_copy_iter_init (ira_copy_iterator *i)
 {
   i->n = 0;
@@ -1271,7 +1271,7 @@ ira_copy_iter_init (ira_copy_iterator *i)
 
 /* Return TRUE if we have more copies to visit, in which case *CP is
    set to the copy to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_copy_iter_cond (ira_copy_iterator *i, ira_copy_t *cp)
 {
   int n;
@@ -1324,7 +1324,7 @@ struct ira_object_conflict_iterator {
 };
 
 /* Initialize the iterator I with ALLOCNO conflicts.  */
-static inline void
+inline void
 ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
 			       ira_object_t obj)
 {
@@ -1350,7 +1350,7 @@ ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
 /* Return TRUE if we have more conflicting allocnos to visit, in which
    case *A is set to the allocno to be visited.  Otherwise, return
    FALSE.  */
-static inline bool
+inline bool
 ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
 			       ira_object_t *pobj)
 {
@@ -1405,7 +1405,7 @@ ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
 /* The function returns TRUE if at least one hard register from ones
    starting with HARD_REGNO and containing value of MODE are in set
    HARD_REGSET.  */
-static inline bool
+inline bool
 ira_hard_reg_set_intersection_p (int hard_regno, machine_mode mode,
 				 HARD_REG_SET hard_regset)
 {
@@ -1419,7 +1419,7 @@ ira_hard_reg_set_intersection_p (int hard_regno, machine_mode mode,
 }
 
 /* Return number of hard registers in hard register SET.  */
-static inline int
+inline int
 hard_reg_set_size (HARD_REG_SET set)
 {
   int i, size;
@@ -1433,7 +1433,7 @@ hard_reg_set_size (HARD_REG_SET set)
 /* The function returns TRUE if hard registers starting with
    HARD_REGNO and containing value of MODE are fully in set
    HARD_REGSET.  */
-static inline bool
+inline bool
 ira_hard_reg_in_set_p (int hard_regno, machine_mode mode,
 		       HARD_REG_SET hard_regset)
 {
@@ -1454,7 +1454,7 @@ ira_hard_reg_in_set_p (int hard_regno, machine_mode mode,
 
 /* Allocate cost vector *VEC for hard registers of ACLASS and
    initialize the elements by VAL if it is necessary */
-static inline void
+inline void
 ira_allocate_and_set_costs (int **vec, reg_class_t aclass, int val)
 {
   int i, *reg_costs;
@@ -1470,7 +1470,7 @@ ira_allocate_and_set_costs (int **vec, reg_class_t aclass, int val)
 
 /* Allocate cost vector *VEC for hard registers of ACLASS and copy
    values of vector SRC into the vector if it is necessary */
-static inline void
+inline void
 ira_allocate_and_copy_costs (int **vec, enum reg_class aclass, int *src)
 {
   int len;
@@ -1484,7 +1484,7 @@ ira_allocate_and_copy_costs (int **vec, enum reg_class aclass, int *src)
 
 /* Allocate cost vector *VEC for hard registers of ACLASS and add
    values of vector SRC into the vector if it is necessary */
-static inline void
+inline void
 ira_allocate_and_accumulate_costs (int **vec, enum reg_class aclass, int *src)
 {
   int i, len;
@@ -1504,7 +1504,7 @@ ira_allocate_and_accumulate_costs (int **vec, enum reg_class aclass, int *src)
 /* Allocate cost vector *VEC for hard registers of ACLASS and copy
    values of vector SRC into the vector or initialize it by VAL (if
    SRC is null).  */
-static inline void
+inline void
 ira_allocate_and_set_or_copy_costs (int **vec, enum reg_class aclass,
 				    int val, int *src)
 {
diff --git a/gcc/ira.h b/gcc/ira.h
index 58b50dbe8a2..ddd86ef345a 100644
--- a/gcc/ira.h
+++ b/gcc/ira.h
@@ -232,7 +232,7 @@ extern rtx non_conflicting_reg_copy_p (rtx_insn *);
    non-local goto code using frame-pointer to address saved stack
    pointer value after restoring old frame pointer value.  The
    function returns TRUE if REGNO is such a static chain pseudo.  */
-static inline bool
+inline bool
 non_spilled_static_chain_regno_p (int regno)
 {
   return (cfun->static_chain_decl && crtl->has_nonlocal_goto
diff --git a/gcc/jit/jit-dejagnu.h b/gcc/jit/jit-dejagnu.h
index 86f6ad3e14d..bdf57857537 100644
--- a/gcc/jit/jit-dejagnu.h
+++ b/gcc/jit/jit-dejagnu.h
@@ -66,7 +66,7 @@ dg_wait (void)
 }
 #endif
 
-static inline void
+inline void
 pass (const char* fmt, ...)
 {
   va_list ap;
@@ -81,7 +81,7 @@ pass (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 xpass (const char* fmt, ...)
 {
   va_list ap;
@@ -96,7 +96,7 @@ xpass (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 fail (const char* fmt, ...)
 {
   va_list ap;
@@ -111,7 +111,7 @@ fail (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 xfail (const char* fmt, ...)
 {
   va_list ap;
@@ -126,7 +126,7 @@ xfail (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 untested (const char* fmt, ...)
 {
   va_list ap;
@@ -141,7 +141,7 @@ untested (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 unresolved (const char* fmt, ...)
 {
   va_list ap;
@@ -156,7 +156,7 @@ unresolved (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 note (const char* fmt, ...)
 {
   va_list ap;
@@ -170,7 +170,7 @@ note (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 totals (void)
 {
   printf ("\nTotals:\n");
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index 2dc9448d7c9..400cf345600 100644
--- a/gcc/jit/jit-recording.h
+++ b/gcc/jit/jit-recording.h
@@ -2556,7 +2556,7 @@ types_kinda_same_internal (recording::type *a,
 
    For array and vector types the number of element also
    has to match, aswell as the element types themself.  */
-static inline bool
+inline bool
 types_kinda_same (recording::type *a, recording::type *b)
 {
   /* Handle trivial case here, to allow for inlining.  */
diff --git a/gcc/lra-int.h b/gcc/lra-int.h
index 2f1450b345c..73f8eb004b0 100644
--- a/gcc/lra-int.h
+++ b/gcc/lra-int.h
@@ -419,7 +419,7 @@ extern void lra_eliminate_reg_if_possible (rtx *);
 /* Return the hard register which given pseudo REGNO assigned to.
    Negative value means that the register got memory or we don't know
    allocation yet.  */
-static inline int
+inline int
 lra_get_regno_hard_regno (int regno)
 {
   resize_reg_info ();
@@ -443,7 +443,7 @@ lra_change_class (int regno, enum reg_class new_class,
 
 /* Update insn operands which are duplication of NOP operand.  The
    insn is represented by its LRA internal representation ID.  */
-static inline void
+inline void
 lra_update_dup (lra_insn_recog_data_t id, int nop)
 {
   int i;
@@ -458,7 +458,7 @@ lra_update_dup (lra_insn_recog_data_t id, int nop)
    operands processing.	 Generally speaking, we could do this probably
    simultaneously with operands processing because a common practice
    is to enumerate the operators after their operands.	*/
-static inline void
+inline void
 lra_update_operator_dups (lra_insn_recog_data_t id)
 {
   int i;
@@ -474,7 +474,7 @@ lra_update_operator_dups (lra_insn_recog_data_t id)
 }
 
 /* Return info about INSN.  Set up the info if it is not done yet.  */
-static inline lra_insn_recog_data_t
+inline lra_insn_recog_data_t
 lra_get_insn_recog_data (rtx_insn *insn)
 {
   lra_insn_recog_data_t data;
@@ -494,7 +494,7 @@ lra_get_insn_recog_data (rtx_insn *insn)
 }
 
 /* Update offset from pseudos with VAL by INCR.  */
-static inline void
+inline void
 lra_update_reg_val_offset (int val, poly_int64 incr)
 {
   int i;
@@ -507,7 +507,7 @@ lra_update_reg_val_offset (int val, poly_int64 incr)
 }
 
 /* Return true if register content is equal to VAL with OFFSET.  */
-static inline bool
+inline bool
 lra_reg_val_equal_p (int regno, int val, poly_int64 offset)
 {
   if (lra_reg_info[regno].val == val
@@ -518,7 +518,7 @@ lra_reg_val_equal_p (int regno, int val, poly_int64 offset)
 }
 
 /* Assign value of register FROM to TO.  */
-static inline void
+inline void
 lra_assign_reg_val (int from, int to)
 {
   lra_reg_info[to].val = lra_reg_info[from].val;
diff --git a/gcc/lra.h b/gcc/lra.h
index ec25947d5fa..85dbf927414 100644
--- a/gcc/lra.h
+++ b/gcc/lra.h
@@ -27,7 +27,7 @@ extern bool lra_simple_p;
 /* Return the allocno reg class of REGNO.  If it is a reload pseudo,
    the pseudo should finally get hard register of the allocno
    class.  */
-static inline enum reg_class
+inline enum reg_class
 lra_get_allocno_class (int regno)
 {
   resize_reg_info ();
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index d544dabe184..fc7133d07ba 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -969,7 +969,7 @@ extern const char *lto_section_name[];
 extern vec<lto_out_decl_state_ptr> lto_function_decl_states;
 
 /* Return true if LTO tag TAG corresponds to a tree code.  */
-static inline bool
+inline bool
 lto_tag_is_tree_code_p (enum LTO_tags tag)
 {
   return tag > LTO_first_tree_tag && (unsigned) tag <= MAX_TREE_CODES;
@@ -977,7 +977,7 @@ lto_tag_is_tree_code_p (enum LTO_tags tag)
 
 
 /* Return true if LTO tag TAG corresponds to a gimple code.  */
-static inline bool
+inline bool
 lto_tag_is_gimple_code_p (enum LTO_tags tag)
 {
   return (unsigned) tag >= LTO_first_gimple_tag
@@ -988,7 +988,7 @@ lto_tag_is_gimple_code_p (enum LTO_tags tag)
 
 /* Return the LTO tag corresponding to gimple code CODE.  See enum
    LTO_tags for details on the conversion.  */
-static inline enum LTO_tags
+inline enum LTO_tags
 lto_gimple_code_to_tag (enum gimple_code code)
 {
   return (enum LTO_tags) ((unsigned) code + LTO_first_gimple_tag);
@@ -997,7 +997,7 @@ lto_gimple_code_to_tag (enum gimple_code code)
 
 /* Return the GIMPLE code corresponding to TAG.  See enum LTO_tags for
    details on the conversion.  */
-static inline enum gimple_code
+inline enum gimple_code
 lto_tag_to_gimple_code (enum LTO_tags tag)
 {
   gcc_assert (lto_tag_is_gimple_code_p (tag));
@@ -1007,7 +1007,7 @@ lto_tag_to_gimple_code (enum LTO_tags tag)
 
 /* Return the LTO tag corresponding to tree code CODE.  See enum
    LTO_tags for details on the conversion.  */
-static inline enum LTO_tags
+inline enum LTO_tags
 lto_tree_code_to_tag (enum tree_code code)
 {
   return (enum LTO_tags) ((unsigned) code + LTO_first_tree_tag);
@@ -1016,7 +1016,7 @@ lto_tree_code_to_tag (enum tree_code code)
 
 /* Return the tree code corresponding to TAG.  See enum LTO_tags for
    details on the conversion.  */
-static inline enum tree_code
+inline enum tree_code
 lto_tag_to_tree_code (enum LTO_tags tag)
 {
   gcc_assert (lto_tag_is_tree_code_p (tag));
@@ -1024,7 +1024,7 @@ lto_tag_to_tree_code (enum LTO_tags tag)
 }
 
 /* Check that tag ACTUAL == EXPECTED.  */
-static inline void
+inline void
 lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
 {
   if (actual != expected)
@@ -1033,7 +1033,7 @@ lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
 }
 
 /* Check that tag ACTUAL is in the range [TAG1, TAG2].  */
-static inline void
+inline void
 lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1,
 		     enum LTO_tags tag2)
 {
@@ -1046,7 +1046,7 @@ lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1,
 }
 
 /* Initialize an lto_out_decl_buffer ENCODER.  */
-static inline void
+inline void
 lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 {
   encoder->tree_hash_table = new hash_map<tree, unsigned> (251);
@@ -1056,7 +1056,7 @@ lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 
 /* Destroy an lto_tree_ref_encoder ENCODER by freeing its contents.  The
    memory used by ENCODER is not freed by this function.  */
-static inline void
+inline void
 lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 {
   /* Hash table may be delete already.  */
@@ -1066,14 +1066,14 @@ lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 }
 
 /* Return the number of trees encoded in ENCODER. */
-static inline unsigned int
+inline unsigned int
 lto_tree_ref_encoder_size (struct lto_tree_ref_encoder *encoder)
 {
   return encoder->trees.length ();
 }
 
 /* Return the IDX-th tree in ENCODER. */
-static inline tree
+inline tree
 lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder,
 			       unsigned int idx)
 {
@@ -1081,7 +1081,7 @@ lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder,
 }
 
 /* Return number of encoded nodes in ENCODER.  */
-static inline int
+inline int
 lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
 {
   return encoder->nodes.length ();
@@ -1093,7 +1093,7 @@ lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
 /* Look up NODE in encoder.  Return NODE's reference if it has been encoded
    or LCC_NOT_FOUND if it is not there.  */
 
-static inline int
+inline int
 lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
 			   symtab_node *node)
 {
@@ -1102,35 +1102,35 @@ lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
 }
 
 /* Return true if iterator LSE points to nothing.  */
-static inline bool
+inline bool
 lsei_end_p (lto_symtab_encoder_iterator lsei)
 {
   return lsei.index >= (unsigned)lto_symtab_encoder_size (lsei.encoder);
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next (lto_symtab_encoder_iterator *lsei)
 {
   lsei->index++;
 }
 
 /* Return the node pointed to by LSI.  */
-static inline symtab_node *
+inline symtab_node *
 lsei_node (lto_symtab_encoder_iterator lsei)
 {
   return lsei.encoder->nodes[lsei.index].node;
 }
 
 /* Return the node pointed to by LSI.  */
-static inline struct cgraph_node *
+inline struct cgraph_node *
 lsei_cgraph_node (lto_symtab_encoder_iterator lsei)
 {
   return dyn_cast<cgraph_node *> (lsei.encoder->nodes[lsei.index].node);
 }
 
 /* Return the node pointed to by LSI.  */
-static inline varpool_node *
+inline varpool_node *
 lsei_varpool_node (lto_symtab_encoder_iterator lsei)
 {
   return dyn_cast<varpool_node *> (lsei.encoder->nodes[lsei.index].node);
@@ -1138,7 +1138,7 @@ lsei_varpool_node (lto_symtab_encoder_iterator lsei)
 
 /* Return the cgraph node corresponding to REF using ENCODER.  */
 
-static inline symtab_node *
+inline symtab_node *
 lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
 {
   if (ref == LCC_NOT_FOUND)
@@ -1148,7 +1148,7 @@ lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei;
@@ -1159,7 +1159,7 @@ lsei_start (lto_symtab_encoder_t encoder)
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
 {
   lsei_next (lsei);
@@ -1169,7 +1169,7 @@ lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start_in_partition (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei = lsei_start (encoder);
@@ -1183,7 +1183,7 @@ lsei_start_in_partition (lto_symtab_encoder_t encoder)
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
 {
   lsei_next (lsei);
@@ -1194,7 +1194,7 @@ lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei = lsei_start (encoder);
@@ -1209,7 +1209,7 @@ lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
 {
   lsei_next (lsei);
@@ -1220,7 +1220,7 @@ lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start_variable_in_partition (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei = lsei_start (encoder);
diff --git a/gcc/memmodel.h b/gcc/memmodel.h
index 308beca18ba..7dfad2fb6b1 100644
--- a/gcc/memmodel.h
+++ b/gcc/memmodel.h
@@ -51,63 +51,63 @@ enum memmodel
 };
 
 /* Return the memory model from a host integer.  */
-static inline enum memmodel
+inline enum memmodel
 memmodel_from_int (unsigned HOST_WIDE_INT val)
 {
   return (enum memmodel) (val & MEMMODEL_MASK);
 }
 
 /* Return the base memory model from a host integer.  */
-static inline enum memmodel
+inline enum memmodel
 memmodel_base (unsigned HOST_WIDE_INT val)
 {
   return (enum memmodel) (val & MEMMODEL_BASE_MASK);
 }
 
 /* Return TRUE if the memory model is RELAXED.  */
-static inline bool
+inline bool
 is_mm_relaxed (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELAXED;
 }
 
 /* Return TRUE if the memory model is CONSUME.  */
-static inline bool
+inline bool
 is_mm_consume (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_CONSUME;
 }
 
 /* Return TRUE if the memory model is ACQUIRE.  */
-static inline bool
+inline bool
 is_mm_acquire (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQUIRE;
 }
 
 /* Return TRUE if the memory model is RELEASE.  */
-static inline bool
+inline bool
 is_mm_release (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELEASE;
 }
 
 /* Return TRUE if the memory model is ACQ_REL.  */
-static inline bool
+inline bool
 is_mm_acq_rel (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQ_REL;
 }
 
 /* Return TRUE if the memory model is SEQ_CST.  */
-static inline bool
+inline bool
 is_mm_seq_cst (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_SEQ_CST;
 }
 
 /* Return TRUE if the memory model is a SYNC variant.  */
-static inline bool
+inline bool
 is_mm_sync (enum memmodel model)
 {
   return (model & MEMMODEL_SYNC);
diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h
index 775f74adfc9..e21ab52d8ca 100644
--- a/gcc/objc/objc-act.h
+++ b/gcc/objc/objc-act.h
@@ -745,7 +745,7 @@ size_t objc_common_tree_size (enum tree_code code);
 #define objc_is_class_id(TYPE) (OBJC_TYPE_NAME (TYPE) == objc_class_id)
 
 /* Retrieve category interface CAT_NAME (if any) associated with CLASS.  */
-static inline tree
+inline tree
 lookup_category (tree klass, tree cat_name)
 {
   tree category = CLASS_CATEGORY_LIST (klass);
@@ -756,7 +756,7 @@ lookup_category (tree klass, tree cat_name)
 }
 
 /* Count only the fields occurring in T.  */
-static inline int
+inline int
 ivar_list_length (tree t)
 {
   int count = 0;
@@ -768,7 +768,7 @@ ivar_list_length (tree t)
   return count;
 }
 
-static inline tree
+inline tree
 is_ivar (tree decl_chain, tree ident)
 {
   for ( ; decl_chain; decl_chain = DECL_CHAIN (decl_chain))
diff --git a/gcc/objc/objc-map.h b/gcc/objc/objc-map.h
index 4842abc1431..1e1b5fd419b 100644
--- a/gcc/objc/objc-map.h
+++ b/gcc/objc/objc-map.h
@@ -133,7 +133,7 @@ int objc_map_maximum_load_factor (objc_map_t map);
    value NULL, and objc_map_get() will return NULL in that case.
    So a result of NULL means that they key *was* found, and the value
    associated with it was NULL.  */
-static inline tree
+inline tree
 objc_map_get (objc_map_t map, /* struct tree_identifier * */tree key)
 {
   /* The inline implementation is private and may change without notice.  */
@@ -169,7 +169,7 @@ objc_map_get (objc_map_t map, /* struct tree_identifier * */tree key)
    You can use any identifier as key, with the exception of NULL.
 
    You can use any tree as value, including NULL.  */
-static inline
+inline
 void objc_map_put (objc_map_t map, /*struct tree_identifier * */tree key, tree value)
 {
   /* The inline implementation is private and may change without notice.  */
@@ -243,7 +243,7 @@ typedef size_t objc_map_iterator_t;
 /* Initialize an iterator to iterate over the specified objc_map.  You
    must use this before starting the iteration, to get a working
    iterator.  */
-static inline
+inline
 void
 objc_map_iterator_initialize (objc_map_t map ATTRIBUTE_UNUSED, objc_map_iterator_t *i)
 {
@@ -262,7 +262,7 @@ objc_map_iterator_initialize (objc_map_t map ATTRIBUTE_UNUSED, objc_map_iterator
    been initialized using objc_map_iterator_initialize().  Note that
    because this function is modifying the iterator, you need to pass a
    pointer to it.  */
-static inline
+inline
 int
 objc_map_iterator_move_to_next (objc_map_t map, objc_map_iterator_t *i)
 {
@@ -285,7 +285,7 @@ objc_map_iterator_move_to_next (objc_map_t map, objc_map_iterator_t *i)
    first element), and only if the last call returned
    OBJC_MAP_SUCCESS.  The behavior is otherwise undefined, probably a
    segmentation fault.  */
-static inline
+inline
 tree
 objc_map_iterator_current_key (objc_map_t map, objc_map_iterator_t i)
 {
@@ -298,7 +298,7 @@ objc_map_iterator_current_key (objc_map_t map, objc_map_iterator_t i)
    the first element), and only if the last call returned
    OBJC_MAP_SUCCESS.  The behavior is otherwise undefined, probably a
    segmentation fault.  */
-static inline
+inline
 tree
 objc_map_iterator_current_value (objc_map_t map, objc_map_iterator_t i)
 {
diff --git a/gcc/omp-general.h b/gcc/omp-general.h
index 74e30c5e313..92717db1628 100644
--- a/gcc/omp-general.h
+++ b/gcc/omp-general.h
@@ -137,7 +137,7 @@ enum omp_requires {
 
 extern GTY(()) enum omp_requires omp_requires_mask;
 
-static inline dump_flags_t
+inline dump_flags_t
 get_openacc_privatization_dump_flags ()
 {
   dump_flags_t l_dump_flags = MSG_NOTE;
diff --git a/gcc/optabs-query.h b/gcc/optabs-query.h
index ed03bbcc3c3..b266d2fe990 100644
--- a/gcc/optabs-query.h
+++ b/gcc/optabs-query.h
@@ -92,7 +92,7 @@ trapv_binoptab_p (optab binoptab)
 /* Return insn code for a comparison operator with VMODE
    resultin MASK_MODE, unsigned if UNS is true.  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
 {
   optab tab = uns ? vec_cmpu_optab : vec_cmp_optab;
@@ -102,7 +102,7 @@ get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
 /* Return insn code for a comparison operator with VMODE
    resultin MASK_MODE (only for EQ/NE).  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vec_cmp_eq_icode (machine_mode vmode, machine_mode mask_mode)
 {
   return convert_optab_handler (vec_cmpeq_optab, vmode, mask_mode);
@@ -125,7 +125,7 @@ get_vcond_icode (machine_mode vmode, machine_mode cmode, bool uns)
 /* Return insn code for a conditional operator with a mask mode
    MMODE resulting in a value of mode VMODE.  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vcond_mask_icode (machine_mode vmode, machine_mode mmode)
 {
   return convert_optab_handler (vcond_mask_optab, vmode, mmode);
@@ -134,7 +134,7 @@ get_vcond_mask_icode (machine_mode vmode, machine_mode mmode)
 /* Return insn code for a conditional operator with a comparison in
    mode CMODE (only EQ/NE), resulting in a value of mode VMODE.  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vcond_eq_icode (machine_mode vmode, machine_mode cmode)
 {
   return convert_optab_handler (vcondeq_optab, vmode, cmode);
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 7ab2a85e818..29ccbe9235e 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -70,7 +70,7 @@ public:
 /* Initialize OP with the given fields.  Initialise the other fields
    to their default values.  */
 
-static inline void
+inline void
 create_expand_operand (class expand_operand *op,
 		       enum expand_operand_type type,
 		       rtx value, machine_mode mode,
@@ -87,7 +87,7 @@ create_expand_operand (class expand_operand *op,
 
 /* Make OP describe an operand that must use rtx X, even if X is volatile.  */
 
-static inline void
+inline void
 create_fixed_operand (class expand_operand *op, rtx x)
 {
   create_expand_operand (op, EXPAND_FIXED, x, VOIDmode, false);
@@ -98,7 +98,7 @@ create_fixed_operand (class expand_operand *op, rtx x)
    It is OK for VALUE to be inconsistent with MODE, although it will just
    be ignored in that case.  */
 
-static inline void
+inline void
 create_output_operand (class expand_operand *op, rtx x,
 		       machine_mode mode)
 {
@@ -110,7 +110,7 @@ create_output_operand (class expand_operand *op, rtx x,
    VALUE be copied into a different kind of rtx before being passed
    as an operand.  */
 
-static inline void
+inline void
 create_input_operand (class expand_operand *op, rtx value,
 		      machine_mode mode)
 {
@@ -120,7 +120,7 @@ create_input_operand (class expand_operand *op, rtx value,
 /* Like create_input_operand, except that VALUE must first be converted
    to mode MODE.  UNSIGNED_P says whether VALUE is unsigned.  */
 
-static inline void
+inline void
 create_convert_operand_to (class expand_operand *op, rtx value,
 			   machine_mode mode, bool unsigned_p)
 {
@@ -136,7 +136,7 @@ create_convert_operand_to (class expand_operand *op, rtx value,
    conversion (as for convert_modes) and duplicating a scalar to fill
    a vector (if VALUE is a scalar but the operand is a vector).  */
 
-static inline void
+inline void
 create_convert_operand_from (class expand_operand *op, rtx value,
 			     machine_mode mode, bool unsigned_p)
 {
@@ -147,7 +147,7 @@ create_convert_operand_from (class expand_operand *op, rtx value,
 /* Make OP describe an input Pmode address operand.  VALUE is the value
    of the address, but it may need to be converted to Pmode first.  */
 
-static inline void
+inline void
 create_address_operand (class expand_operand *op, rtx value)
 {
   create_expand_operand (op, EXPAND_ADDRESS, value, Pmode, false);
diff --git a/gcc/plugin.h b/gcc/plugin.h
index 3b6f7fd19ee..ee0a53ec4c9 100644
--- a/gcc/plugin.h
+++ b/gcc/plugin.h
@@ -184,7 +184,7 @@ extern bool flag_plugin_added;
    EVENT    - the event identifier
    GCC_DATA - event-specific data provided by the compiler  */
 
-static inline int
+inline int
 invoke_plugin_callbacks (int event ATTRIBUTE_UNUSED,
 			 void *gcc_data ATTRIBUTE_UNUSED)
 {
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index c7788d720f8..0230a289df5 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -113,7 +113,7 @@ public:
 
 /* Finishes constructing a NULL-terminated character string representing
    the buffered text.  */
-static inline const char *
+inline const char *
 output_buffer_formatted_text (output_buffer *buff)
 {
   obstack_1grow (buff->obstack, '\0');
@@ -122,7 +122,7 @@ output_buffer_formatted_text (output_buffer *buff)
 
 /* Append to the output buffer a string specified by its
    STARTing character and LENGTH.  */
-static inline void
+inline void
 output_buffer_append_r (output_buffer *buff, const char *start, int length)
 {
   gcc_checking_assert (start);
@@ -136,7 +136,7 @@ output_buffer_append_r (output_buffer *buff, const char *start, int length)
 
 /*  Return a pointer to the last character emitted in the
     output_buffer.  A NULL pointer means no character available.  */
-static inline const char *
+inline const char *
 output_buffer_last_position_in_text (const output_buffer *buff)
 {
   const char *p = NULL;
@@ -283,7 +283,7 @@ public:
   diagnostic_url_format url_format;
 };
 
-static inline const char *
+inline const char *
 pp_get_prefix (const pretty_printer *pp) { return pp->prefix; }
 
 #define pp_space(PP)            pp_character (PP, ' ')
@@ -415,7 +415,7 @@ extern void pp_begin_url (pretty_printer *pp, const char *url);
 extern void pp_end_url (pretty_printer *pp);
 
 /* Switch into verbatim mode and return the old mode.  */
-static inline pp_wrapping_mode_t
+inline pp_wrapping_mode_t
 pp_set_verbatim_wrapping_ (pretty_printer *pp)
 {
   pp_wrapping_mode_t oldmode = pp_wrapping_mode (pp);
diff --git a/gcc/range.h b/gcc/range.h
index 12f907c4abf..3b0e9efffbf 100644
--- a/gcc/range.h
+++ b/gcc/range.h
@@ -28,7 +28,7 @@ value_range range_negatives (tree type);
 
 // Return an irange instance that is a boolean TRUE.
 
-static inline int_range<1>
+inline int_range<1>
 range_true (tree type)
 {
   unsigned prec = TYPE_PRECISION (type);
@@ -37,7 +37,7 @@ range_true (tree type)
 
 // Return an irange instance that is a boolean FALSE.
 
-static inline int_range<1>
+inline int_range<1>
 range_false (tree type)
 {
   unsigned prec = TYPE_PRECISION (type);
@@ -46,7 +46,7 @@ range_false (tree type)
 
 // Return an irange that covers both true and false.
 
-static inline int_range<1>
+inline int_range<1>
 range_true_and_false (tree type)
 {
   unsigned prec = TYPE_PRECISION (type);
diff --git a/gcc/read-md.h b/gcc/read-md.h
index cc0670a04b5..b309c9c3deb 100644
--- a/gcc/read-md.h
+++ b/gcc/read-md.h
@@ -375,7 +375,7 @@ extern void (*include_callback) (const char *);
 
 /* Read the next character from the MD file.  */
 
-static inline int
+inline int
 read_char (void)
 {
   return md_reader_ptr->read_char ();
@@ -383,7 +383,7 @@ read_char (void)
 
 /* Put back CH, which was the last character read from the MD file.  */
 
-static inline void
+inline void
 unread_char (int ch)
 {
   md_reader_ptr->unread_char (ch);
diff --git a/gcc/recog.h b/gcc/recog.h
index 86da3c2bdbb..764fa90afde 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -76,7 +76,7 @@ struct operand_alternative
 /* Return the class for operand I of alternative ALT, taking matching
    constraints into account.  */
 
-static inline enum reg_class
+inline enum reg_class
 alternative_class (const operand_alternative *alt, int i)
 {
   return alt[i].matches >= 0 ? alt[alt[i].matches].cl : alt[i].cl;
@@ -229,7 +229,7 @@ extern bool mode_dependent_address_p (rtx, addr_space_t);
 
 extern int recog (rtx, rtx_insn *, int *);
 #ifndef GENERATOR_FILE
-static inline int recog_memoized (rtx_insn *insn);
+inline int recog_memoized (rtx_insn *insn);
 #endif
 extern void add_clobbers (rtx, int);
 extern int added_clobbers_hard_reg_p (int);
@@ -266,7 +266,7 @@ extern void copy_frame_info_to_split_insn (rtx_insn *, rtx_insn *);
    The automatically-generated function `recog' is normally called
    through this one.  */
 
-static inline int
+inline int
 recog_memoized (rtx_insn *insn)
 {
   if (INSN_CODE (insn) < 0)
@@ -277,7 +277,7 @@ recog_memoized (rtx_insn *insn)
 
 /* Skip chars until the next ',' or the end of the string.  This is
    useful to skip alternatives in a constraint string.  */
-static inline const char *
+inline const char *
 skip_alternative (const char *p)
 {
   const char *r = p;
diff --git a/gcc/regs.h b/gcc/regs.h
index d0f029f7749..aea093ed795 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -64,7 +64,7 @@ struct regstat_n_sets_and_refs_t
 extern struct regstat_n_sets_and_refs_t *regstat_n_sets_and_refs;
 
 /* Indexed by n, gives number of times (REG n) is used or set.  */
-static inline int
+inline int
 REG_N_REFS (int regno)
 {
   return regstat_n_sets_and_refs[regno].refs;
@@ -75,7 +75,7 @@ REG_N_REFS (int regno)
 #define INC_REG_N_REFS(N,V) (regstat_n_sets_and_refs[N].refs += V)
 
 /* Indexed by n, gives number of times (REG n) is set.  */
-static inline int
+inline int
 REG_N_SETS (int regno)
 {
   return regstat_n_sets_and_refs[regno].sets;
@@ -266,7 +266,7 @@ hard_regno_nregs (unsigned int regno, machine_mode mode)
 /* Return an exclusive upper bound on the registers occupied by hard
    register (reg:MODE REGNO).  */
 
-static inline unsigned int
+inline unsigned int
 end_hard_regno (machine_mode mode, unsigned int regno)
 {
   return regno + hard_regno_nregs (regno, mode);
@@ -275,7 +275,7 @@ end_hard_regno (machine_mode mode, unsigned int regno)
 /* Add to REGS all the registers required to store a value of mode MODE
    in register REGNO.  */
 
-static inline void
+inline void
 add_to_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 		     unsigned int regno)
 {
@@ -289,7 +289,7 @@ add_to_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 
 /* Likewise, but remove the registers.  */
 
-static inline void
+inline void
 remove_from_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 			  unsigned int regno)
 {
@@ -303,7 +303,7 @@ remove_from_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 
 /* Return true if REGS contains the whole of (reg:MODE REGNO).  */
 
-static inline bool
+inline bool
 in_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 		   unsigned int regno)
 {
@@ -328,7 +328,7 @@ in_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 
 /* Return true if (reg:MODE REGNO) includes an element of REGS.  */
 
-static inline bool
+inline bool
 overlaps_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 			 unsigned int regno)
 {
@@ -348,7 +348,7 @@ overlaps_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 /* Like add_to_hard_reg_set, but use a REGNO/NREGS range instead of
    REGNO and MODE.  */
 
-static inline void
+inline void
 add_range_to_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 			   int nregs)
 {
@@ -358,7 +358,7 @@ add_range_to_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 
 /* Likewise, but remove the registers.  */
 
-static inline void
+inline void
 remove_range_from_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 				int nregs)
 {
@@ -368,7 +368,7 @@ remove_range_from_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 
 /* Like overlaps_hard_reg_set_p, but use a REGNO/NREGS range instead of
    REGNO and MODE.  */
-static inline bool
+inline bool
 range_overlaps_hard_reg_set_p (const_hard_reg_set set, unsigned regno,
 			       int nregs)
 {
@@ -380,7 +380,7 @@ range_overlaps_hard_reg_set_p (const_hard_reg_set set, unsigned regno,
 
 /* Like in_hard_reg_set_p, but use a REGNO/NREGS range instead of
    REGNO and MODE.  */
-static inline bool
+inline bool
 range_in_hard_reg_set_p (const_hard_reg_set set, unsigned regno, int nregs)
 {
   while (nregs-- > 0)
diff --git a/gcc/rtl-iter.h b/gcc/rtl-iter.h
index df7b4960cce..00ce4f12cac 100644
--- a/gcc/rtl-iter.h
+++ b/gcc/rtl-iter.h
@@ -39,7 +39,7 @@ extern rtx_subrtx_bound_info rtx_nonconst_subrtx_bounds[];
 
 /* Return true if CODE has no subrtxes.  */
 
-static inline bool
+inline bool
 leaf_code_p (enum rtx_code code)
 {
   return rtx_all_subrtx_bounds[code].count == 0;
diff --git a/gcc/rtl.h b/gcc/rtl.h
index f9057123127..52f0419af29 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1895,7 +1895,7 @@ inline void rtx_jump_insn::set_jump_target (rtx_code_label *target)
 #define LABEL_REFS(LABEL) XCEXP (LABEL, 3, CODE_LABEL)
 
 /* Get the label that a LABEL_REF references.  */
-static inline rtx_insn *
+inline rtx_insn *
 label_ref_label (const_rtx ref)
 {
   return as_a<rtx_insn *> (XCEXP (ref, 0, LABEL_REF));
@@ -1903,7 +1903,7 @@ label_ref_label (const_rtx ref)
 
 /* Set the label that LABEL_REF ref refers to.  */
 
-static inline void
+inline void
 set_label_ref_label (rtx ref, rtx_insn *label)
 {
   XCEXP (ref, 0, LABEL_REF) = label;
@@ -1926,14 +1926,14 @@ set_label_ref_label (rtx ref, rtx_insn *label)
   (RTL_FLAG_CHECK1 ("ORIGINAL_REGNO", (RTX), REG)->u2.original_regno)
 
 /* Force the REGNO macro to only be used on the lhs.  */
-static inline unsigned int
+inline unsigned int
 rhs_regno (const_rtx x)
 {
   return REG_CHECK (x)->regno;
 }
 
 /* Return the final register in REG X plus one.  */
-static inline unsigned int
+inline unsigned int
 END_REGNO (const_rtx x)
 {
   return REGNO (x) + REG_NREGS (x);
@@ -1941,7 +1941,7 @@ END_REGNO (const_rtx x)
 
 /* Change the REGNO and REG_NREGS of REG X to the specified values,
    bypassing the df machinery.  */
-static inline void
+inline void
 set_regno_raw (rtx x, unsigned int regno, unsigned int nregs)
 {
   reg_info *reg = REG_CHECK (x);
@@ -2058,7 +2058,7 @@ const_vector_encoded_nelts (const_rtx x)
 
 /* Return true if CODE always has VOIDmode.  */
 
-static inline bool
+inline bool
 always_void_p (enum rtx_code code)
 {
   return code == SET;
@@ -2073,7 +2073,7 @@ struct full_rtx_costs
 };
 
 /* Initialize a full_rtx_costs structure C to the maximum cost.  */
-static inline void
+inline void
 init_costs_to_max (struct full_rtx_costs *c)
 {
   c->speed = MAX_COST;
@@ -2081,7 +2081,7 @@ init_costs_to_max (struct full_rtx_costs *c)
 }
 
 /* Initialize a full_rtx_costs structure C to zero cost.  */
-static inline void
+inline void
 init_costs_to_zero (struct full_rtx_costs *c)
 {
   c->speed = 0;
@@ -2090,7 +2090,7 @@ init_costs_to_zero (struct full_rtx_costs *c)
 
 /* Compare two full_rtx_costs structures A and B, returning true
    if A < B when optimizing for speed.  */
-static inline bool
+inline bool
 costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
 	    bool speed)
 {
@@ -2104,7 +2104,7 @@ costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
 
 /* Increase both members of the full_rtx_costs structure C by the
    cost of N insns.  */
-static inline void
+inline void
 costs_add_n_insns (struct full_rtx_costs *c, int n)
 {
   c->speed += COSTS_N_INSNS (n);
@@ -2168,7 +2168,7 @@ subreg_shape::unique_id () const
 
 /* Return the shape of a SUBREG rtx.  */
 
-static inline subreg_shape
+inline subreg_shape
 shape_of_subreg (const_rtx x)
 {
   return subreg_shape (GET_MODE (SUBREG_REG (x)),
@@ -2919,7 +2919,7 @@ extern int currently_expanding_to_rtl;
 /* Return the cost of SET X.  SPEED_P is true if optimizing for speed
    rather than size.  */
 
-static inline int
+inline int
 set_rtx_cost (rtx x, bool speed_p)
 {
   return rtx_cost (x, VOIDmode, INSN, 4, speed_p);
@@ -2927,7 +2927,7 @@ set_rtx_cost (rtx x, bool speed_p)
 
 /* Like set_rtx_cost, but return both the speed and size costs in C.  */
 
-static inline void
+inline void
 get_full_set_rtx_cost (rtx x, struct full_rtx_costs *c)
 {
   get_full_rtx_cost (x, VOIDmode, INSN, 4, c);
@@ -2937,7 +2937,7 @@ get_full_set_rtx_cost (rtx x, struct full_rtx_costs *c)
    of a register move.  SPEED_P is true if optimizing for speed rather
    than size.  */
 
-static inline int
+inline int
 set_src_cost (rtx x, machine_mode mode, bool speed_p)
 {
   return rtx_cost (x, mode, SET, 1, speed_p);
@@ -2945,7 +2945,7 @@ set_src_cost (rtx x, machine_mode mode, bool speed_p)
 
 /* Like set_src_cost, but return both the speed and size costs in C.  */
 
-static inline void
+inline void
 get_full_set_src_cost (rtx x, machine_mode mode, struct full_rtx_costs *c)
 {
   get_full_rtx_cost (x, mode, SET, 1, c);
@@ -3947,7 +3947,7 @@ extern struct target_rtl *this_target_rtl;
 
 #ifndef GENERATOR_FILE
 /* Return the attributes of a MEM rtx.  */
-static inline const class mem_attrs *
+inline const class mem_attrs *
 get_mem_attrs (const_rtx x)
 {
   class mem_attrs *attrs;
@@ -3996,7 +3996,7 @@ extern rtx gen_rtx_VAR_LOCATION (machine_mode, tree, rtx,
 #ifdef GENERATOR_FILE
 #define PUT_MODE(RTX, MODE) PUT_MODE_RAW (RTX, MODE)
 #else
-static inline void
+inline void
 PUT_MODE (rtx x, machine_mode mode)
 {
   if (REG_P (x))
diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
index 751d28c2c9e..61172db9d7b 100644
--- a/gcc/sbitmap.h
+++ b/gcc/sbitmap.h
@@ -98,7 +98,7 @@ struct simple_bitmap_def
 
 /* Verify that access at INDEX in bitmap MAP is valid.  */ 
 
-static inline void
+inline void
 bitmap_check_index (const_sbitmap map, int index)
 {
   gcc_checking_assert (index >= 0);
@@ -107,14 +107,14 @@ bitmap_check_index (const_sbitmap map, int index)
 
 /* Verify that bitmaps A and B have same size.  */ 
 
-static inline void
+inline void
 bitmap_check_sizes (const_sbitmap a, const_sbitmap b)
 {
   gcc_checking_assert (a->n_bits == b->n_bits);
 }
 
 /* Test if bit number bitno in the bitmap is set.  */
-static inline bool
+inline bool
 bitmap_bit_p (const_sbitmap map, int bitno)
 {
   bitmap_check_index (map, bitno);
@@ -127,7 +127,7 @@ bitmap_bit_p (const_sbitmap map, int bitno)
 /* Set bit number BITNO in the sbitmap MAP.
    Return true if the bit changed.  */
 
-static inline bool
+inline bool
 bitmap_set_bit (sbitmap map, int bitno)
 {
   bitmap_check_index (map, bitno);
@@ -143,7 +143,7 @@ bitmap_set_bit (sbitmap map, int bitno)
 /* Reset bit number BITNO in the sbitmap MAP.
    Return true if the bit changed.  */
 
-static inline bool
+inline bool
 bitmap_clear_bit (sbitmap map, int bitno)
 {
   bitmap_check_index (map, bitno);
@@ -177,7 +177,7 @@ struct sbitmap_iterator {
 /* Initialize the iterator I with sbitmap BMP and the initial index
    MIN.  */
 
-static inline void
+inline void
 bmp_iter_set_init (sbitmap_iterator *i, const_sbitmap bmp,
 		   unsigned int min, unsigned *bit_no ATTRIBUTE_UNUSED)
 {
@@ -197,7 +197,7 @@ bmp_iter_set_init (sbitmap_iterator *i, const_sbitmap bmp,
    to the index of the bit to be visited.  Otherwise, return
    false.  */
 
-static inline bool
+inline bool
 bmp_iter_set (sbitmap_iterator *i, unsigned int *n)
 {
   /* Skip words that are zeros.  */
@@ -223,7 +223,7 @@ bmp_iter_set (sbitmap_iterator *i, unsigned int *n)
 
 /* Advance to the next bit.  */
 
-static inline void
+inline void
 bmp_iter_next (sbitmap_iterator *i, unsigned *bit_no ATTRIBUTE_UNUSED)
 {
   i->word >>= 1;
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index ab3ad99cdeb..97b7d2d319b 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -87,7 +87,7 @@ extern struct common_sched_info_def *common_sched_info;
 extern const struct common_sched_info_def haifa_common_sched_info;
 
 /* Return true if selective scheduling pass is working.  */
-static inline bool
+inline bool
 sel_sched_p (void)
 {
   return common_sched_info->sched_pass_id == SCHED_SEL_PASS;
@@ -1588,7 +1588,7 @@ typedef struct _sd_iterator sd_iterator_def;
    struct _deps_link.  */
 
 /* Return initialized iterator.  */
-static inline sd_iterator_def
+inline sd_iterator_def
 sd_iterator_start (rtx insn, sd_list_types_def types)
 {
   /* Some dep_link a pointer to which will return NULL.  */
@@ -1607,7 +1607,7 @@ sd_iterator_start (rtx insn, sd_list_types_def types)
 }
 
 /* Return the current element.  */
-static inline bool
+inline bool
 sd_iterator_cond (sd_iterator_def *it_ptr, dep_t *dep_ptr)
 {
   while (true)
@@ -1645,7 +1645,7 @@ sd_iterator_cond (sd_iterator_def *it_ptr, dep_t *dep_ptr)
 }
 
 /* Advance iterator.  */
-static inline void
+inline void
 sd_iterator_next (sd_iterator_def *it_ptr)
 {
   it_ptr->linkp = &DEP_LINK_NEXT (*it_ptr->linkp);
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index b36f2caa2b8..7034a1ab06c 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -359,13 +359,13 @@ struct _list_node
    we can't move them in sel-sched-ir.cc.  */
 extern object_allocator<_list_node> sched_lists_pool;
 
-static inline _list_t
+inline _list_t
 _list_alloc (void)
 {
   return sched_lists_pool.allocate ();
 }
 
-static inline void
+inline void
 _list_add (_list_t *lp)
 {
   _list_t l = _list_alloc ();
@@ -374,7 +374,7 @@ _list_add (_list_t *lp)
   *lp = l;
 }
 
-static inline void
+inline void
 _list_remove_nofree (_list_t *lp)
 {
   _list_t n = *lp;
@@ -382,7 +382,7 @@ _list_remove_nofree (_list_t *lp)
   *lp = _LIST_NEXT (n);
 }
 
-static inline void
+inline void
 _list_remove (_list_t *lp)
 {
   _list_t n = *lp;
@@ -391,7 +391,7 @@ _list_remove (_list_t *lp)
   sched_lists_pool.remove (n);
 }
 
-static inline void
+inline void
 _list_clear (_list_t *l)
 {
   while (*l)
@@ -412,7 +412,7 @@ struct _list_iterator
   bool removed_p;
 };
 
-static inline void
+inline void
 _list_iter_start (_list_iterator *ip, _list_t *lp, bool can_remove_p)
 {
   ip->lp = lp;
@@ -420,7 +420,7 @@ _list_iter_start (_list_iterator *ip, _list_t *lp, bool can_remove_p)
   ip->removed_p = false;
 }
 
-static inline void
+inline void
 _list_iter_next (_list_iterator *ip)
 {
   if (!ip->removed_p)
@@ -429,7 +429,7 @@ _list_iter_next (_list_iterator *ip)
     ip->removed_p = false;
 }
 
-static inline void
+inline void
 _list_iter_remove (_list_iterator *ip)
 {
   gcc_assert (!ip->removed_p && ip->can_remove_p);
@@ -437,7 +437,7 @@ _list_iter_remove (_list_iterator *ip)
   ip->removed_p = true;
 }
 
-static inline void
+inline void
 _list_iter_remove_nofree (_list_iterator *ip)
 {
   gcc_assert (!ip->removed_p && ip->can_remove_p);
@@ -460,7 +460,7 @@ _list_iter_remove_nofree (_list_iterator *ip)
 
 /* _xlist_t functions.  */
 
-static inline void
+inline void
 _xlist_add (_xlist_t *lp, rtx x)
 {
   _list_add (lp);
@@ -470,7 +470,7 @@ _xlist_add (_xlist_t *lp, rtx x)
 #define _xlist_remove(LP) (_list_remove (LP))
 #define _xlist_clear(LP) (_list_clear (LP))
 
-static inline bool
+inline bool
 _xlist_is_in_p (_xlist_t l, rtx x)
 {
   while (l)
@@ -484,7 +484,7 @@ _xlist_is_in_p (_xlist_t l, rtx x)
 }
 
 /* Used through _FOR_EACH.  */
-static inline bool
+inline bool
 _list_iter_cond_x (_xlist_t l, rtx *xp)
 {
   if (l)
@@ -505,7 +505,7 @@ typedef _list_iterator _xlist_iterator;
 
 /* ilist_t functions.  */
 
-static inline void
+inline void
 ilist_add (ilist_t *lp, insn_t insn)
 {
   _list_add (lp);
@@ -514,7 +514,7 @@ ilist_add (ilist_t *lp, insn_t insn)
 #define ilist_remove(LP) (_list_remove (LP))
 #define ilist_clear(LP) (_list_clear (LP))
 
-static inline bool
+inline bool
 ilist_is_in_p (ilist_t l, insn_t insn)
 {
   while (l)
@@ -528,7 +528,7 @@ ilist_is_in_p (ilist_t l, insn_t insn)
 }
 
 /* Used through _FOR_EACH.  */
-static inline bool
+inline bool
 _list_iter_cond_insn (ilist_t l, insn_t *ip)
 {
   if (l)
@@ -574,7 +574,7 @@ typedef _list_iterator def_list_iterator;
 
 #define FOR_EACH_DEF(DEF, I, DEF_LIST) _FOR_EACH (def, (DEF), (I), (DEF_LIST))
 
-static inline bool
+inline bool
 _list_iter_cond_def (def_list_t def_list, def_t *def)
 {
   if (def_list)
@@ -1040,7 +1040,7 @@ extern bool sel_bb_empty_p (basic_block);
 extern bool in_current_region_p (basic_block);
 
 /* True when BB is a header of the inner loop.  */
-static inline bool
+inline bool
 inner_loop_header_p (basic_block bb)
 {
   class loop *inner_loop;
@@ -1068,7 +1068,7 @@ inner_loop_header_p (basic_block bb)
 }
 
 /* Return exit edges of LOOP, filtering out edges with the same dest bb.  */
-static inline vec<edge> 
+inline vec<edge> 
 get_loop_exit_edges_unique_dests (const class loop *loop)
 {
   vec<edge> edges = vNULL;
@@ -1122,7 +1122,7 @@ sel_bb_empty_or_nop_p (basic_block bb)
    traverse all of them and if any of them turns out to be another loop header
    (after skipping empty BBs), add its loop exits to the resulting vector
    as well.  */
-static inline vec<edge> 
+inline vec<edge> 
 get_all_loop_exits (basic_block bb)
 {
   vec<edge> exits = vNULL;
@@ -1212,7 +1212,7 @@ get_all_loop_exits (basic_block bb)
 
 /* We need to return a succ_iterator to avoid 'unitialized' warning
    during bootstrap.  */
-static inline succ_iterator
+inline succ_iterator
 _succ_iter_start (insn_t *succp, insn_t insn, int flags)
 {
   succ_iterator i;
@@ -1249,7 +1249,7 @@ _succ_iter_start (insn_t *succp, insn_t insn, int flags)
   return i;
 }
 
-static inline bool
+inline bool
 _succ_iter_cond (succ_iterator *ip, insn_t *succp, insn_t insn,
                  bool check (edge, succ_iterator *))
 {
@@ -1354,7 +1354,7 @@ _succ_iter_cond (succ_iterator *ip, insn_t *succp, insn_t insn,
     }
 }
 
-static inline void
+inline void
 _succ_iter_next (succ_iterator *ip)
 {
   gcc_assert (!ip->e2 || ip->e1);
@@ -1367,7 +1367,7 @@ _succ_iter_next (succ_iterator *ip)
    empty blocks.  When E2P is not null, the resulting edge is written there.
    FLAGS are used to specify whether back edges and out-of-region edges
    should be considered.  */
-static inline bool
+inline bool
 _eligible_successor_edge_p (edge e1, succ_iterator *ip)
 {
   edge e2 = e1;
@@ -1476,7 +1476,7 @@ _eligible_successor_edge_p (edge e1, succ_iterator *ip)
 #define SUCC_ITER_EDGE(ITER) ((ITER)->e1)
 
 /* Return the next block of BB not running into inconsistencies.  */
-static inline basic_block
+inline basic_block
 bb_next_bb (basic_block bb)
 {
   switch (EDGE_COUNT (bb->succs))
diff --git a/gcc/sese.h b/gcc/sese.h
index e79be7514f1..252318bcc1c 100644
--- a/gcc/sese.h
+++ b/gcc/sese.h
@@ -44,7 +44,7 @@ void dump_sese (const sese_l &);
 
 /* Get the entry of an sese S.  */
 
-static inline basic_block
+inline basic_block
 get_entry_bb (const sese_l &s)
 {
   return s.entry->dest;
@@ -52,7 +52,7 @@ get_entry_bb (const sese_l &s)
 
 /* Get the exit of an sese S.  */
 
-static inline basic_block
+inline basic_block
 get_exit_bb (const sese_l &s)
 {
   return s.exit->src;
@@ -110,7 +110,7 @@ extern bool sese_trivially_empty_bb_p (basic_block);
 
 /* The number of parameters in REGION. */
 
-static inline unsigned
+inline unsigned
 sese_nb_params (sese_info_p region)
 {
   return region->params.length ();
@@ -119,7 +119,7 @@ sese_nb_params (sese_info_p region)
 /* Checks whether BB is contained in the region delimited by ENTRY and
    EXIT blocks.  */
 
-static inline bool
+inline bool
 bb_in_region (const_basic_block bb, const_basic_block entry, const_basic_block exit)
 {
   return dominated_by_p (CDI_DOMINATORS, bb, entry)
@@ -130,7 +130,7 @@ bb_in_region (const_basic_block bb, const_basic_block entry, const_basic_block e
 /* Checks whether BB is contained in the region delimited by ENTRY and
    EXIT blocks.  */
 
-static inline bool
+inline bool
 bb_in_sese_p (basic_block bb, const sese_l &r)
 {
   return bb_in_region (bb, r.entry->dest, r.exit->dest);
@@ -138,7 +138,7 @@ bb_in_sese_p (basic_block bb, const sese_l &r)
 
 /* Returns true when STMT is defined in REGION.  */
 
-static inline bool
+inline bool
 stmt_in_sese_p (gimple *stmt, const sese_l &r)
 {
   basic_block bb = gimple_bb (stmt);
@@ -147,7 +147,7 @@ stmt_in_sese_p (gimple *stmt, const sese_l &r)
 
 /* Returns true when NAME is defined in REGION.  */
 
-static inline bool
+inline bool
 defined_in_sese_p (tree name, const sese_l &r)
 {
   return stmt_in_sese_p (SSA_NAME_DEF_STMT (name), r);
@@ -155,7 +155,7 @@ defined_in_sese_p (tree name, const sese_l &r)
 
 /* Returns true when LOOP is in REGION.  */
 
-static inline bool
+inline bool
 loop_in_sese_p (class loop *loop, const sese_l &region)
 {
   return (bb_in_sese_p (loop->header, region)
@@ -185,7 +185,7 @@ loop_in_sese_p (class loop *loop, const sese_l &region)
     loop_1 exists, but is not completely contained in the region -> depth 0
     loop_2 is completely contained -> depth 1  */
 
-static inline unsigned int
+inline unsigned int
 sese_loop_depth (const sese_l &region, loop_p loop)
 {
   unsigned int depth = 0;
@@ -212,19 +212,19 @@ extern void set_ifsese_condition (ifsese, tree);
 extern edge get_true_edge_from_guard_bb (basic_block);
 extern edge get_false_edge_from_guard_bb (basic_block);
 
-static inline edge
+inline edge
 if_region_entry (ifsese if_region)
 {
   return if_region->region->region.entry;
 }
 
-static inline edge
+inline edge
 if_region_exit (ifsese if_region)
 {
   return if_region->region->region.exit;
 }
 
-static inline basic_block
+inline basic_block
 if_region_get_condition_block (ifsese if_region)
 {
   return if_region_entry (if_region)->dest;
@@ -272,7 +272,7 @@ typedef struct gimple_poly_bb
 
 /* Return the innermost loop that contains the basic block GBB.  */
 
-static inline class loop *
+inline class loop *
 gbb_loop (gimple_poly_bb_p gbb)
 {
   return GBB_BB (gbb)->loop_father;
@@ -281,7 +281,7 @@ gbb_loop (gimple_poly_bb_p gbb)
 /* Returns the gimple loop, that corresponds to the loop_iterator_INDEX.
    If there is no corresponding gimple loop, we return NULL.  */
 
-static inline loop_p
+inline loop_p
 gbb_loop_at_index (gimple_poly_bb_p gbb, sese_l &region, int index)
 {
   loop_p loop = gbb_loop (gbb);
@@ -297,7 +297,7 @@ gbb_loop_at_index (gimple_poly_bb_p gbb, sese_l &region, int index)
 
 /* The number of common loops in REGION for GBB1 and GBB2.  */
 
-static inline int
+inline int
 nb_common_loops (sese_l &region, gimple_poly_bb_p gbb1, gimple_poly_bb_p gbb2)
 {
   loop_p l1 = gbb_loop (gbb1);
diff --git a/gcc/sparseset.h b/gcc/sparseset.h
index 74934cea18b..694ff117f0e 100644
--- a/gcc/sparseset.h
+++ b/gcc/sparseset.h
@@ -109,7 +109,7 @@ extern bool sparseset_equal_p (sparseset, sparseset);
 /* Operation: S = {}
    Clear the set of all elements.  */
 
-static inline void
+inline void
 sparseset_clear (sparseset s)
 {
   s->members = 0;
@@ -118,7 +118,7 @@ sparseset_clear (sparseset s)
 
 /* Return the number of elements currently in the set.  */
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_cardinality (sparseset s)
 {
   return s->members;
@@ -126,7 +126,7 @@ sparseset_cardinality (sparseset s)
 
 /* Return the maximum number of elements this set can hold.  */
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_size (sparseset s)
 {
   return s->size;
@@ -134,7 +134,7 @@ sparseset_size (sparseset s)
 
 /* Return true if e is a member of the set S, otherwise return false.  */
 
-static inline bool
+inline bool
 sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e)
 {
   SPARSESET_ELT_TYPE idx;
@@ -149,7 +149,7 @@ sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e)
 /* Low level insertion routine not meant for use outside of sparseset.[ch].
    Assumes E is valid and not already a member of the set S.  */
 
-static inline void
+inline void
 sparseset_insert_bit (sparseset s, SPARSESET_ELT_TYPE e, SPARSESET_ELT_TYPE idx)
 {
   s->sparse[e] = idx;
@@ -159,7 +159,7 @@ sparseset_insert_bit (sparseset s, SPARSESET_ELT_TYPE e, SPARSESET_ELT_TYPE idx)
 /* Operation: S = S + {e}
    Insert E into the set S, if it isn't already a member.  */
 
-static inline void
+inline void
 sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
 {
   if (!sparseset_bit_p (s, e))
@@ -168,7 +168,7 @@ sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
 
 /* Return and remove the last member added to the set S.  */
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_pop (sparseset s)
 {
   SPARSESET_ELT_TYPE mem = s->members;
@@ -179,7 +179,7 @@ sparseset_pop (sparseset s)
   return s->dense[s->members];
 }
 
-static inline void
+inline void
 sparseset_iter_init (sparseset s)
 {
   s->iter = 0;
@@ -187,7 +187,7 @@ sparseset_iter_init (sparseset s)
   s->iterating = true;
 }
 
-static inline bool
+inline bool
 sparseset_iter_p (sparseset s)
 {
   if (s->iterating && s->iter < s->members)
@@ -196,13 +196,13 @@ sparseset_iter_p (sparseset s)
     return s->iterating = false;
 }
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_iter_elm (sparseset s)
 {
   return s->dense[s->iter];
 }
 
-static inline void
+inline void
 sparseset_iter_next (sparseset s)
 {
   s->iter += s->iter_inc;
diff --git a/gcc/ssa-iterators.h b/gcc/ssa-iterators.h
index 43c9b861440..3aeb89bb60e 100644
--- a/gcc/ssa-iterators.h
+++ b/gcc/ssa-iterators.h
@@ -78,7 +78,7 @@ struct imm_use_iterator
        (void) ((DEST) = next_readonly_imm_use (&(ITER))))
 
 /* Forward declare for use in the class below.  */
-static inline void end_imm_use_stmt_traverse (imm_use_iterator *);
+inline void end_imm_use_stmt_traverse (imm_use_iterator *);
 
 /* arrange to automatically call, upon descruction, end_imm_use_stmt_traverse
    with a given pointer to imm_use_iterator.  */
@@ -246,7 +246,7 @@ struct ssa_op_iter
 
 
 /* Delink an immediate_uses node from its chain.  */
-static inline void
+inline void
 delink_imm_use (ssa_use_operand_t *linknode)
 {
   /* Return if this node is not in a list.  */
@@ -260,7 +260,7 @@ delink_imm_use (ssa_use_operand_t *linknode)
 }
 
 /* Link ssa_imm_use node LINKNODE into the chain for LIST.  */
-static inline void
+inline void
 link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
 {
   /* Link the new node at the head of the list.  If we are in the process of
@@ -272,7 +272,7 @@ link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
 }
 
 /* Link ssa_imm_use node LINKNODE into the chain for DEF.  */
-static inline void
+inline void
 link_imm_use (ssa_use_operand_t *linknode, tree def)
 {
   ssa_use_operand_t *root;
@@ -289,7 +289,7 @@ link_imm_use (ssa_use_operand_t *linknode, tree def)
 }
 
 /* Set the value of a use pointed to by USE to VAL.  */
-static inline void
+inline void
 set_ssa_use_from_ptr (use_operand_p use, tree val)
 {
   delink_imm_use (use);
@@ -299,7 +299,7 @@ set_ssa_use_from_ptr (use_operand_p use, tree val)
 
 /* Link ssa_imm_use node LINKNODE into the chain for DEF, with use occurring
    in STMT.  */
-static inline void
+inline void
 link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple *stmt)
 {
   if (stmt)
@@ -310,7 +310,7 @@ link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple *stmt)
 }
 
 /* Relink a new node in place of an old node in the list.  */
-static inline void
+inline void
 relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
 {
   /* The node one had better be in the same list.  */
@@ -328,7 +328,7 @@ relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
 
 /* Relink ssa_imm_use node LINKNODE into the chain for OLD, with use occurring
    in STMT.  */
-static inline void
+inline void
 relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
 		     gimple *stmt)
 {
@@ -341,14 +341,14 @@ relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
 
 
 /* Return true is IMM has reached the end of the immediate use list.  */
-static inline bool
+inline bool
 end_readonly_imm_use_p (const imm_use_iterator *imm)
 {
   return (imm->imm_use == imm->end_p);
 }
 
 /* Initialize iterator IMM to process the list for VAR.  */
-static inline use_operand_p
+inline use_operand_p
 first_readonly_imm_use (imm_use_iterator *imm, tree var)
 {
   imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
@@ -360,7 +360,7 @@ first_readonly_imm_use (imm_use_iterator *imm, tree var)
 }
 
 /* Bump IMM to the next use in the list.  */
-static inline use_operand_p
+inline use_operand_p
 next_readonly_imm_use (imm_use_iterator *imm)
 {
   use_operand_p old = imm->imm_use;
@@ -383,7 +383,7 @@ next_readonly_imm_use (imm_use_iterator *imm)
 
 
 /* Return true if VAR has no nondebug uses.  */
-static inline bool
+inline bool
 has_zero_uses (const_tree var)
 {
   const ssa_use_operand_t *const head = &(SSA_NAME_IMM_USE_NODE (var));
@@ -397,7 +397,7 @@ has_zero_uses (const_tree var)
 }
 
 /* Return true if VAR has a single nondebug use.  */
-static inline bool
+inline bool
 has_single_use (const_tree var)
 {
   const ssa_use_operand_t *const head = &(SSA_NAME_IMM_USE_NODE (var));
@@ -418,7 +418,7 @@ has_single_use (const_tree var)
     
 /* If VAR has only a single immediate nondebug use, return true, and
    set USE_P and STMT to the use pointer and stmt of occurrence.  */
-static inline bool
+inline bool
 single_imm_use (const_tree var, use_operand_p *use_p, gimple **stmt)
 {
   const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var));
@@ -449,7 +449,7 @@ single_imm_use (const_tree var, use_operand_p *use_p, gimple **stmt)
 }
 
 /* Return the number of nondebug immediate uses of VAR.  */
-static inline unsigned int
+inline unsigned int
 num_imm_uses (const_tree var)
 {
   const ssa_use_operand_t *const start = &(SSA_NAME_IMM_USE_NODE (var));
@@ -476,14 +476,14 @@ num_imm_uses (const_tree var)
    SSA operands.  */
 
 /* Return true if PTR is finished iterating.  */
-static inline bool
+inline bool
 op_iter_done (const ssa_op_iter *ptr)
 {
   return ptr->done;
 }
 
 /* Get the next iterator use value for PTR.  */
-static inline use_operand_p
+inline use_operand_p
 op_iter_next_use (ssa_op_iter *ptr)
 {
   use_operand_p use_p;
@@ -503,7 +503,7 @@ op_iter_next_use (ssa_op_iter *ptr)
 }
 
 /* Get the next iterator def value for PTR.  */
-static inline def_operand_p
+inline def_operand_p
 op_iter_next_def (ssa_op_iter *ptr)
 {
   gcc_checking_assert (ptr->iter_type == ssa_op_iter_def);
@@ -538,7 +538,7 @@ op_iter_next_def (ssa_op_iter *ptr)
 }
 
 /* Get the next iterator tree value for PTR.  */
-static inline tree
+inline tree
 op_iter_next_tree (ssa_op_iter *ptr)
 {
   tree val;
@@ -582,7 +582,7 @@ op_iter_next_tree (ssa_op_iter *ptr)
    used to prevent warnings in the compile about might be uninitialized
    components.  */
 
-static inline void
+inline void
 clear_and_done_ssa_iter (ssa_op_iter *ptr)
 {
   ptr->i = 0;
@@ -595,7 +595,7 @@ clear_and_done_ssa_iter (ssa_op_iter *ptr)
 }
 
 /* Initialize the iterator PTR to the virtual defs in STMT.  */
-static inline void
+inline void
 op_iter_init (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   /* PHI nodes require a different iterator initialization path.  We
@@ -640,7 +640,7 @@ op_iter_init (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* Initialize iterator PTR to the use operands in STMT based on FLAGS. Return
    the first use.  */
-static inline use_operand_p
+inline use_operand_p
 op_iter_init_use (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   gcc_checking_assert ((flags & SSA_OP_ALL_DEFS) == 0
@@ -652,7 +652,7 @@ op_iter_init_use (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* Initialize iterator PTR to the def operands in STMT based on FLAGS. Return
    the first def.  */
-static inline def_operand_p
+inline def_operand_p
 op_iter_init_def (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   gcc_checking_assert ((flags & SSA_OP_ALL_USES) == 0
@@ -664,7 +664,7 @@ op_iter_init_def (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* Initialize iterator PTR to the operands in STMT based on FLAGS. Return
    the first operand as a tree.  */
-static inline tree
+inline tree
 op_iter_init_tree (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   op_iter_init (ptr, stmt, flags);
@@ -675,7 +675,7 @@ op_iter_init_tree (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
    return NULL.  */
-static inline tree
+inline tree
 single_ssa_tree_operand (gimple *stmt, int flags)
 {
   tree var;
@@ -693,7 +693,7 @@ single_ssa_tree_operand (gimple *stmt, int flags)
 
 /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
    return NULL.  */
-static inline use_operand_p
+inline use_operand_p
 single_ssa_use_operand (gimple *stmt, int flags)
 {
   use_operand_p var;
@@ -710,7 +710,7 @@ single_ssa_use_operand (gimple *stmt, int flags)
 
 /* Return the single virtual use operand in STMT if present.  Otherwise
    return NULL.  */
-static inline use_operand_p
+inline use_operand_p
 ssa_vuse_operand (gimple *stmt)
 {
   if (! gimple_vuse (stmt))
@@ -721,7 +721,7 @@ ssa_vuse_operand (gimple *stmt)
 
 /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
    return NULL.  */
-static inline def_operand_p
+inline def_operand_p
 single_ssa_def_operand (gimple *stmt, int flags)
 {
   def_operand_p var;
@@ -739,7 +739,7 @@ single_ssa_def_operand (gimple *stmt, int flags)
 
 /* Return true if there are zero operands in STMT matching the type
    given in FLAGS.  */
-static inline bool
+inline bool
 zero_ssa_operands (gimple *stmt, int flags)
 {
   ssa_op_iter iter;
@@ -750,7 +750,7 @@ zero_ssa_operands (gimple *stmt, int flags)
 
 
 /* Return the number of operands matching FLAGS in STMT.  */
-static inline int
+inline int
 num_ssa_operands (gimple *stmt, int flags)
 {
   ssa_op_iter iter;
@@ -765,7 +765,7 @@ num_ssa_operands (gimple *stmt, int flags)
 
 /* If there is a single DEF in the PHI node which matches FLAG, return it.
    Otherwise return NULL_DEF_OPERAND_P.  */
-static inline tree
+inline tree
 single_phi_def (gphi *stmt, int flags)
 {
   tree def = PHI_RESULT (stmt);
@@ -778,7 +778,7 @@ single_phi_def (gphi *stmt, int flags)
 
 /* Initialize the iterator PTR for uses matching FLAGS in PHI.  FLAGS should
    be either SSA_OP_USES or SSA_OP_VIRTUAL_USES.  */
-static inline use_operand_p
+inline use_operand_p
 op_iter_init_phiuse (ssa_op_iter *ptr, gphi *phi, int flags)
 {
   tree phi_def = gimple_phi_result (phi);
@@ -808,7 +808,7 @@ op_iter_init_phiuse (ssa_op_iter *ptr, gphi *phi, int flags)
 
 /* Start an iterator for a PHI definition.  */
 
-static inline def_operand_p
+inline def_operand_p
 op_iter_init_phidef (ssa_op_iter *ptr, gphi *phi, int flags)
 {
   tree phi_def = PHI_RESULT (phi);
@@ -838,7 +838,7 @@ op_iter_init_phidef (ssa_op_iter *ptr, gphi *phi, int flags)
 
 /* Return true is IMM has reached the end of the immediate use stmt list.  */
 
-static inline bool
+inline bool
 end_imm_use_stmt_p (const imm_use_iterator *imm)
 {
   return (imm->imm_use == imm->end_p);
@@ -847,7 +847,7 @@ end_imm_use_stmt_p (const imm_use_iterator *imm)
 /* Finished the traverse of an immediate use stmt list IMM by removing the
    placeholder node from the list.  */
 
-static inline void
+inline void
 end_imm_use_stmt_traverse (imm_use_iterator *imm)
 {
   delink_imm_use (&(imm->iter_node));
@@ -859,7 +859,7 @@ end_imm_use_stmt_traverse (imm_use_iterator *imm)
    currently delimited by HEAD and LAST_P.  The new LAST_P value is
    returned.  */
 
-static inline use_operand_p
+inline use_operand_p
 move_use_after_head (use_operand_p use_p, use_operand_p head,
 		      use_operand_p last_p)
 {
@@ -885,7 +885,7 @@ move_use_after_head (use_operand_p use_p, use_operand_p head,
 /* This routine will relink all uses with the same stmt as HEAD into the list
    immediately following HEAD for iterator IMM.  */
 
-static inline void
+inline void
 link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
 {
   use_operand_p use_p;
@@ -925,7 +925,7 @@ link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
 }
 
 /* Initialize IMM to traverse over uses of VAR.  Return the first statement.  */
-static inline gimple *
+inline gimple *
 first_imm_use_stmt (imm_use_iterator *imm, tree var)
 {
   imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
@@ -950,7 +950,7 @@ first_imm_use_stmt (imm_use_iterator *imm, tree var)
 
 /* Bump IMM to the next stmt which has a use of var.  */
 
-static inline gimple *
+inline gimple *
 next_imm_use_stmt (imm_use_iterator *imm)
 {
   imm->imm_use = imm->iter_node.next;
@@ -968,7 +968,7 @@ next_imm_use_stmt (imm_use_iterator *imm)
 /* This routine will return the first use on the stmt IMM currently refers
    to.  */
 
-static inline use_operand_p
+inline use_operand_p
 first_imm_use_on_stmt (imm_use_iterator *imm)
 {
   imm->next_imm_name = imm->imm_use->next;
@@ -977,7 +977,7 @@ first_imm_use_on_stmt (imm_use_iterator *imm)
 
 /*  Return TRUE if the last use on the stmt IMM refers to has been visited.  */
 
-static inline bool
+inline bool
 end_imm_use_on_stmt_p (const imm_use_iterator *imm)
 {
   return (imm->imm_use == &(imm->iter_node));
@@ -985,7 +985,7 @@ end_imm_use_on_stmt_p (const imm_use_iterator *imm)
 
 /* Bump to the next use on the stmt IMM refers to, return NULL if done.  */
 
-static inline use_operand_p
+inline use_operand_p
 next_imm_use_on_stmt (imm_use_iterator *imm)
 {
   imm->imm_use = imm->next_imm_name;
@@ -999,7 +999,7 @@ next_imm_use_on_stmt (imm_use_iterator *imm)
 }
 
 /* Delink all immediate_use information for STMT.  */
-static inline void
+inline void
 delink_stmt_imm_use (gimple *stmt)
 {
    ssa_op_iter iter;
diff --git a/gcc/system.h b/gcc/system.h
index 5eaeb9d2d03..64cd5a49258 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -1166,7 +1166,7 @@ extern void fancy_abort (const char *, int, const char *)
    so does GCC 3.4.x (PR17436).  */
 #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
 #elif defined(__GNUC__)
-static inline char *
+inline char *
 helper_const_non_const_cast (const char *p)
 {
   union {
@@ -1308,7 +1308,7 @@ void gcc_stablesort_r (void *, size_t, size_t, sort_r_cmp_fn *, void *data);
 
 /* Return true if STR string starts with PREFIX.  */
 
-static inline bool
+inline bool
 startswith (const char *str, const char *prefix)
 {
   return strncmp (str, prefix, strlen (prefix)) == 0;
@@ -1316,7 +1316,7 @@ startswith (const char *str, const char *prefix)
 
 /* Return true if STR string ends with SUFFIX.  */
 
-static inline bool
+inline bool
 endswith (const char *str, const char *suffix)
 {
   size_t str_len = strlen (str);
diff --git a/gcc/target-globals.h b/gcc/target-globals.h
index 551b21e8a60..daedf66017f 100644
--- a/gcc/target-globals.h
+++ b/gcc/target-globals.h
@@ -69,7 +69,7 @@ extern class target_globals default_target_globals;
 extern class target_globals *save_target_globals (void);
 extern class target_globals *save_target_globals_default_opts (void);
 
-static inline void
+inline void
 restore_target_globals (class target_globals *g)
 {
   this_target_flag_state = g->flag_state;
diff --git a/gcc/target.h b/gcc/target.h
index 03fd03a5207..fdb364ca451 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -279,7 +279,7 @@ extern struct gcc_target targetm;
    runtime value is needed for correctness, since the function only
    provides a rough guess.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 estimated_poly_value (poly_int64 x,
 		      poly_value_estimate_kind kind = POLY_VALUE_LIKELY)
 {
@@ -295,7 +295,7 @@ estimated_poly_value (poly_int64 x,
 #define CUMULATIVE_ARGS_MAGIC ((void *) &targetm.calls)
 #endif
 
-static inline CUMULATIVE_ARGS *
+inline CUMULATIVE_ARGS *
 get_cumulative_args (cumulative_args_t arg)
 {
 #if CHECKING_P
@@ -304,7 +304,7 @@ get_cumulative_args (cumulative_args_t arg)
   return (CUMULATIVE_ARGS *) arg.p;
 }
 
-static inline cumulative_args_t
+inline cumulative_args_t
 pack_cumulative_args (CUMULATIVE_ARGS *arg)
 {
   cumulative_args_t ret;
diff --git a/gcc/timevar.h b/gcc/timevar.h
index 6f3ac370917..ad465731609 100644
--- a/gcc/timevar.h
+++ b/gcc/timevar.h
@@ -206,14 +206,14 @@ class timer
 };
 
 /* Provided for backward compatibility.  */
-static inline void
+inline void
 timevar_push (timevar_id_t tv)
 {
   if (g_timer)
     g_timer->push (tv);
 }
 
-static inline void
+inline void
 timevar_pop (timevar_id_t tv)
 {
   if (g_timer)
diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
index 83ec0f58659..9c412dc879a 100644
--- a/gcc/tree-chrec.h
+++ b/gcc/tree-chrec.h
@@ -35,7 +35,7 @@ along with GCC; see the file COPYING3.  If not see
 /* After having added an automatically generated element, please
    include it in the following function.  */
 
-static inline bool
+inline bool
 automatically_generated_chrec_p (const_tree chrec)
 {
   return (chrec == chrec_dont_know
@@ -44,7 +44,7 @@ automatically_generated_chrec_p (const_tree chrec)
 
 /* The tree nodes aka. CHRECs.  */
 
-static inline bool
+inline bool
 tree_is_chrec (const_tree expr)
 {
   if (TREE_CODE (expr) == POLYNOMIAL_CHREC
@@ -96,7 +96,7 @@ extern bool evolution_function_right_is_integer_cst (const_tree);
 
 /* Determines whether CHREC is equal to zero.  */
 
-static inline bool
+inline bool
 chrec_zerop (const_tree chrec)
 {
   if (chrec == NULL_TREE)
@@ -111,7 +111,7 @@ chrec_zerop (const_tree chrec)
 /* Determines whether CHREC is a loop invariant with respect to LOOP_NUM.
    Set the result in RES and return true when the property can be computed.  */
 
-static inline bool
+inline bool
 no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
 {
   tree scev;
@@ -129,7 +129,7 @@ no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
 
 /* Build a polynomial chain of recurrence.  */
 
-static inline tree
+inline tree
 build_polynomial_chrec (unsigned loop_num,
 			tree left,
 			tree right)
@@ -167,7 +167,7 @@ build_polynomial_chrec (unsigned loop_num,
 
 /* Determines whether the expression CHREC is a constant.  */
 
-static inline bool
+inline bool
 evolution_function_is_constant_p (const_tree chrec)
 {
   if (chrec == NULL_TREE)
@@ -178,7 +178,7 @@ evolution_function_is_constant_p (const_tree chrec)
 
 /* Determine whether CHREC is an affine evolution function in LOOPNUM.  */
 
-static inline bool
+inline bool
 evolution_function_is_affine_in_loop (const_tree chrec, int loopnum)
 {
   if (chrec == NULL_TREE)
@@ -200,7 +200,7 @@ evolution_function_is_affine_in_loop (const_tree chrec, int loopnum)
 
 /* Determine whether CHREC is an affine evolution function or not.  */
 
-static inline bool
+inline bool
 evolution_function_is_affine_p (const_tree chrec)
 {
   return chrec
@@ -213,7 +213,7 @@ evolution_function_is_affine_p (const_tree chrec)
 
 /* Determines whether EXPR does not contains chrec expressions.  */
 
-static inline bool
+inline bool
 tree_does_not_contain_chrecs (const_tree expr)
 {
   return !tree_contains_chrecs (expr, NULL);
@@ -221,7 +221,7 @@ tree_does_not_contain_chrecs (const_tree expr)
 
 /* Returns the type of the chrec.  */
 
-static inline tree
+inline tree
 chrec_type (const_tree chrec)
 {
   if (automatically_generated_chrec_p (chrec))
@@ -230,7 +230,7 @@ chrec_type (const_tree chrec)
   return TREE_TYPE (chrec);
 }
 
-static inline tree
+inline tree
 chrec_fold_op (enum tree_code code, tree type, tree op0, tree op1)
 {
   switch (code)
diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h
index 50718c0642a..4d1a5c4a45e 100644
--- a/gcc/tree-data-ref.h
+++ b/gcc/tree-data-ref.h
@@ -592,7 +592,7 @@ extern bool dr_known_forward_stride_p (struct data_reference *);
 /* Return true when the base objects of data references A and B are
    the same memory object.  */
 
-static inline bool
+inline bool
 same_data_refs_base_objects (data_reference_p a, data_reference_p b)
 {
   return DR_NUM_DIMENSIONS (a) == DR_NUM_DIMENSIONS (b)
@@ -603,7 +603,7 @@ same_data_refs_base_objects (data_reference_p a, data_reference_p b)
    memory object with the same access functions.  Optionally skip the
    last OFFSET dimensions in the data reference.  */
 
-static inline bool
+inline bool
 same_data_refs (data_reference_p a, data_reference_p b, int offset = 0)
 {
   unsigned int i;
@@ -641,7 +641,7 @@ known_dependences_p (vec<ddr_p> dependence_relations)
    LEVEL = 0 means a lexicographic dependence, i.e. a dependence due
    to the sequence of statements, not carried by any loop.  */
 
-static inline unsigned
+inline unsigned
 dependence_level (lambda_vector dist_vect, int length)
 {
   int i;
@@ -655,7 +655,7 @@ dependence_level (lambda_vector dist_vect, int length)
 
 /* Return the dependence level for the DDR relation.  */
 
-static inline unsigned
+inline unsigned
 ddr_dependence_level (ddr_p ddr)
 {
   unsigned vector;
@@ -672,7 +672,7 @@ ddr_dependence_level (ddr_p ddr)
 
 /* Return the index of the variable VAR in the LOOP_NEST array.  */
 
-static inline int
+inline int
 index_in_loop_nest (int var, const vec<loop_p> &loop_nest)
 {
   class loop *loopi;
@@ -688,7 +688,7 @@ index_in_loop_nest (int var, const vec<loop_p> &loop_nest)
 /* Returns true when the data reference DR the form "A[i] = ..."
    with a stride equal to its unit type size.  */
 
-static inline bool
+inline bool
 adjacent_dr_p (struct data_reference *dr)
 {
   /* If this is a bitfield store bail out.  */
@@ -709,7 +709,7 @@ void split_constant_offset (tree , tree *, tree *);
 
 /* Compute the greatest common divisor of a VECTOR of SIZE numbers.  */
 
-static inline lambda_int
+inline lambda_int
 lambda_vector_gcd (lambda_vector vector, int size)
 {
   int i;
@@ -726,7 +726,7 @@ lambda_vector_gcd (lambda_vector vector, int size)
 
 /* Allocate a new vector of given SIZE.  */
 
-static inline lambda_vector
+inline lambda_vector
 lambda_vector_new (int size)
 {
   /* ???  We shouldn't abuse the GC allocator here.  */
@@ -735,7 +735,7 @@ lambda_vector_new (int size)
 
 /* Clear out vector VEC1 of length SIZE.  */
 
-static inline void
+inline void
 lambda_vector_clear (lambda_vector vec1, int size)
 {
   memset (vec1, 0, size * sizeof (*vec1));
@@ -744,7 +744,7 @@ lambda_vector_clear (lambda_vector vec1, int size)
 /* Returns true when the vector V is lexicographically positive, in
    other words, when the first nonzero element is positive.  */
 
-static inline bool
+inline bool
 lambda_vector_lexico_pos (lambda_vector v,
 			  unsigned n)
 {
@@ -763,7 +763,7 @@ lambda_vector_lexico_pos (lambda_vector v,
 
 /* Return true if vector VEC1 of length SIZE is the zero vector.  */
 
-static inline bool
+inline bool
 lambda_vector_zerop (lambda_vector vec1, int size)
 {
   int i;
@@ -775,7 +775,7 @@ lambda_vector_zerop (lambda_vector vec1, int size)
 
 /* Allocate a matrix of M rows x  N cols.  */
 
-static inline lambda_matrix
+inline lambda_matrix
 lambda_matrix_new (int m, int n, struct obstack *lambda_obstack)
 {
   lambda_matrix mat;
diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h
index d09ec7d4118..800dd2e9c0e 100644
--- a/gcc/tree-iterator.h
+++ b/gcc/tree-iterator.h
@@ -49,7 +49,7 @@ struct tree_stmt_iterator {
   tree operator* () const { return ptr->stmt; }
 };
 
-static inline tree_stmt_iterator
+inline tree_stmt_iterator
 tsi_start (tree t)
 {
   tree_stmt_iterator i;
@@ -60,7 +60,7 @@ tsi_start (tree t)
   return i;
 }
 
-static inline tree_stmt_iterator
+inline tree_stmt_iterator
 tsi_last (tree t)
 {
   tree_stmt_iterator i;
@@ -71,37 +71,37 @@ tsi_last (tree t)
   return i;
 }
 
-static inline bool
+inline bool
 tsi_end_p (tree_stmt_iterator i)
 {
   return i.ptr == NULL;
 }
 
-static inline bool
+inline bool
 tsi_one_before_end_p (tree_stmt_iterator i)
 {
   return i.ptr != NULL && i.ptr->next == NULL;
 }
 
-static inline void
+inline void
 tsi_next (tree_stmt_iterator *i)
 {
   ++(*i);
 }
 
-static inline void
+inline void
 tsi_prev (tree_stmt_iterator *i)
 {
   --(*i);
 }
 
-static inline tree *
+inline tree *
 tsi_stmt_ptr (tree_stmt_iterator i)
 {
   return &(*i);
 }
 
-static inline tree
+inline tree
 tsi_stmt (tree_stmt_iterator i)
 {
   return *i;
diff --git a/gcc/tree-outof-ssa.h b/gcc/tree-outof-ssa.h
index 75264ed2b8a..d69c5a7e68d 100644
--- a/gcc/tree-outof-ssa.h
+++ b/gcc/tree-outof-ssa.h
@@ -53,7 +53,7 @@ extern struct ssaexpand SA;
 
 /* Returns the RTX expression representing the storage of the outof-SSA
    partition that the SSA name EXP is a member of.  */
-static inline rtx
+inline rtx
 get_rtx_for_ssa_name (tree exp)
 {
   int p = partition_find (SA.map->var_partition, SSA_NAME_VERSION (exp));
@@ -65,7 +65,7 @@ get_rtx_for_ssa_name (tree exp)
 
 /* If TER decided to forward the definition of SSA name EXP this function
    returns the defining statement, otherwise NULL.  */
-static inline gimple *
+inline gimple *
 get_gimple_for_ssa_name (tree exp)
 {
   int v = SSA_NAME_VERSION (exp);
diff --git a/gcc/tree-phinodes.h b/gcc/tree-phinodes.h
index 29b2143589b..932a461e987 100644
--- a/gcc/tree-phinodes.h
+++ b/gcc/tree-phinodes.h
@@ -31,7 +31,7 @@ extern void remove_phi_nodes (basic_block);
 extern tree degenerate_phi_result (gphi *);
 extern void set_phi_nodes (basic_block, gimple_seq);
 
-static inline use_operand_p
+inline use_operand_p
 gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
 {
   return &gimple_phi_arg (gs, i)->imm_use;
@@ -39,7 +39,7 @@ gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
 
 /* Return the phi argument which contains the specified use.  */
 
-static inline int
+inline int
 phi_arg_index_from_use (use_operand_p use)
 {
   struct phi_arg_d *element, *root;
diff --git a/gcc/tree-scalar-evolution.h b/gcc/tree-scalar-evolution.h
index d26bfc7ba79..c58a8a16e81 100644
--- a/gcc/tree-scalar-evolution.h
+++ b/gcc/tree-scalar-evolution.h
@@ -46,7 +46,7 @@ extern tree compute_overall_effect_of_inner_loop (class loop *, tree);
 /* Returns the basic block preceding LOOP, or the CFG entry block when
    the loop is function's body.  */
 
-static inline basic_block
+inline basic_block
 block_before_loop (loop_p loop)
 {
   edge preheader = loop_preheader_edge (loop);
@@ -57,7 +57,7 @@ block_before_loop (loop_p loop)
    symbolic form.  LOOP is the loop in which symbolic names have to
    be analyzed and instantiated.  */
 
-static inline tree
+inline tree
 instantiate_parameters (class loop *loop, tree chrec)
 {
   return instantiate_scev (loop_preheader_edge (loop), loop, chrec);
@@ -65,7 +65,7 @@ instantiate_parameters (class loop *loop, tree chrec)
 
 /* Returns the loop of the polynomial chrec CHREC.  */
 
-static inline class loop *
+inline class loop *
 get_chrec_loop (const_tree chrec)
 {
   return get_loop (cfun, CHREC_VARIABLE (chrec));
diff --git a/gcc/tree-sra.h b/gcc/tree-sra.h
index e817d0cdd6d..f20266c4622 100644
--- a/gcc/tree-sra.h
+++ b/gcc/tree-sra.h
@@ -24,7 +24,7 @@ bool type_internals_preclude_sra_p (tree type, const char **msg);
 /* Return true iff TYPE is stdarg va_list type (which early SRA and IPA-SRA
    should leave alone).  */
 
-static inline bool
+inline bool
 is_va_list_type (tree type)
 {
   return TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (va_list_type_node);
diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h
index ac676422e41..dce27323247 100644
--- a/gcc/tree-ssa-alias.h
+++ b/gcc/tree-ssa-alias.h
@@ -186,7 +186,7 @@ extern GTY(()) struct pt_solution ipa_escaped_pt;
    overlap.  SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the
    range is open-ended.  Otherwise return false.  */
 
-static inline bool
+inline bool
 ranges_overlap_p (HOST_WIDE_INT pos1,
 		  unsigned HOST_WIDE_INT size1,
 		  HOST_WIDE_INT pos2,
diff --git a/gcc/tree-ssa-live.h b/gcc/tree-ssa-live.h
index 33d35496df6..de665d6bad0 100644
--- a/gcc/tree-ssa-live.h
+++ b/gcc/tree-ssa-live.h
@@ -109,7 +109,7 @@ region_contains_p (var_map map, basic_block bb)
 
 /* Return number of partitions in MAP.  */
 
-static inline unsigned
+inline unsigned
 num_var_partitions (var_map map)
 {
   return map->num_partitions;
@@ -119,7 +119,7 @@ num_var_partitions (var_map map)
 /* Given partition index I from MAP, return the variable which represents that
    partition.  */
 
-static inline tree
+inline tree
 partition_to_var (var_map map, int i)
 {
   tree name;
@@ -134,7 +134,7 @@ partition_to_var (var_map map, int i)
 /* Given ssa_name VERSION, if it has a partition in MAP,  return the var it
    is associated with.  Otherwise return NULL.  */
 
-static inline tree
+inline tree
 version_to_var (var_map map, int version)
 {
   int part;
@@ -151,7 +151,7 @@ version_to_var (var_map map, int version)
 /* Given VAR, return the partition number in MAP which contains it.
    NO_PARTITION is returned if it's not in any partition.  */
 
-static inline int
+inline int
 var_to_partition (var_map map, tree var)
 {
   int part;
@@ -166,7 +166,7 @@ var_to_partition (var_map map, tree var)
 /* Given VAR, return the variable which represents the entire partition
    it is a member of in MAP.  NULL is returned if it is not in a partition.  */
 
-static inline tree
+inline tree
 var_to_partition_to_var (var_map map, tree var)
 {
   int part;
@@ -180,7 +180,7 @@ var_to_partition_to_var (var_map map, tree var)
 
 /* Return the index into the basevar table for PARTITION's base in MAP.  */
 
-static inline int
+inline int
 basevar_index (var_map map, int partition)
 {
   gcc_checking_assert (partition >= 0
@@ -191,7 +191,7 @@ basevar_index (var_map map, int partition)
 
 /* Return the number of different base variables in MAP.  */
 
-static inline int
+inline int
 num_basevars (var_map map)
 {
   return map->num_basevars;
@@ -274,7 +274,7 @@ extern void destroy_live_vars (vec<bitmap_head> &);
 
 /*  Return TRUE if P is marked as a global in LIVE.  */
 
-static inline int
+inline int
 partition_is_global (tree_live_info_p live, int p)
 {
   gcc_checking_assert (live->global);
@@ -285,7 +285,7 @@ partition_is_global (tree_live_info_p live, int p)
 /* Return the bitmap from LIVE representing the live on entry blocks for
    partition P.  */
 
-static inline bitmap
+inline bitmap
 live_on_entry (tree_live_info_p live, basic_block bb)
 {
   gcc_checking_assert (live->livein
@@ -299,7 +299,7 @@ live_on_entry (tree_live_info_p live, basic_block bb)
 /* Return the bitmap from LIVE representing the live on exit partitions from
    block BB.  */
 
-static inline bitmap
+inline bitmap
 live_on_exit (tree_live_info_p live, basic_block bb)
 {
   gcc_checking_assert (live->liveout
@@ -312,7 +312,7 @@ live_on_exit (tree_live_info_p live, basic_block bb)
 
 /* Return the partition map which the information in LIVE utilizes.  */
 
-static inline var_map
+inline var_map
 live_var_map (tree_live_info_p live)
 {
   return live->map;
@@ -321,7 +321,7 @@ live_var_map (tree_live_info_p live)
 
 /* Mark partition P as live on entry to basic block BB in LIVE.  */
 
-static inline void
+inline void
 make_live_on_entry (tree_live_info_p live, basic_block bb , int p)
 {
   bitmap_set_bit (&live->livein[bb->index], p);
diff --git a/gcc/tree-ssa-loop-manip.h b/gcc/tree-ssa-loop-manip.h
index f0b1ed00f9a..d49273a3987 100644
--- a/gcc/tree-ssa-loop-manip.h
+++ b/gcc/tree-ssa-loop-manip.h
@@ -27,7 +27,7 @@ extern void create_iv (tree, tree, tree, class loop *, gimple_stmt_iterator *,
 extern void rewrite_into_loop_closed_ssa (bitmap, unsigned);
 extern void verify_loop_closed_ssa (bool, class loop * = NULL);
 
-static inline void
+inline void
 checking_verify_loop_closed_ssa (bool verify_ssa_p, class loop *loop = NULL)
 {
   if (flag_checking)
diff --git a/gcc/tree-ssa-loop.h b/gcc/tree-ssa-loop.h
index d42ccd455f0..3fd4cd45466 100644
--- a/gcc/tree-ssa-loop.h
+++ b/gcc/tree-ssa-loop.h
@@ -71,7 +71,7 @@ extern unsigned tree_num_loop_insns (class loop *, struct eni_weights *);
 
 /* Returns the loop of the statement STMT.  */
 
-static inline class loop *
+inline class loop *
 loop_containing_stmt (gimple *stmt)
 {
   basic_block bb = gimple_bb (stmt);
diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h
index 946cd95f125..ae36bcdb893 100644
--- a/gcc/tree-ssa-operands.h
+++ b/gcc/tree-ssa-operands.h
@@ -106,14 +106,14 @@ extern void debug_immediate_uses_for (tree var);
 extern void unlink_stmt_vdef (gimple *);
 
 /* Return the tree pointed-to by USE.  */
-static inline tree
+inline tree
 get_use_from_ptr (use_operand_p use)
 {
   return *(use->use);
 }
 
 /* Return the tree pointed-to by DEF.  */
-static inline tree
+inline tree
 get_def_from_ptr (def_operand_p def)
 {
   return *def;
diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h
index c9921e56971..be4cb457873 100644
--- a/gcc/tree-ssa-propagate.h
+++ b/gcc/tree-ssa-propagate.h
@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* If SIM_P is true, statement S will be simulated again.  */
 
-static inline void
+inline void
 prop_set_simulate_again (gimple *s, bool visit_p)
 {
   gimple_set_visited (s, visit_p);
@@ -34,7 +34,7 @@ prop_set_simulate_again (gimple *s, bool visit_p)
 
 /* Return true if statement T should be simulated again.  */
 
-static inline bool
+inline bool
 prop_simulate_again_p (gimple *s)
 {
   return gimple_visited_p (s);
diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h
index a6f5973a368..675240ebb9d 100644
--- a/gcc/tree-ssa-sccvn.h
+++ b/gcc/tree-ssa-sccvn.h
@@ -68,7 +68,7 @@ typedef const struct vn_nary_op_s *const_vn_nary_op_t;
 
 /* Return the size of a vn_nary_op_t with LENGTH operands.  */
 
-static inline size_t
+inline size_t
 sizeof_vn_nary_op (unsigned int length)
 {
   return sizeof (struct vn_nary_op_s) + sizeof (tree) * length - sizeof (tree);
@@ -166,7 +166,7 @@ enum vn_kind vn_get_stmt_kind (gimple *);
 /* Hash the type TYPE using bits that distinguishes it in the
    types_compatible_p sense.  */
 
-static inline hashval_t
+inline hashval_t
 vn_hash_type (tree type)
 {
   return (INTEGRAL_TYPE_P (type)
@@ -177,7 +177,7 @@ vn_hash_type (tree type)
 /* Hash the constant CONSTANT with distinguishing type incompatible
    constants in the types_compatible_p sense.  */
 
-static inline hashval_t
+inline hashval_t
 vn_hash_constant_with_type (tree constant)
 {
   inchash::hash hstate;
@@ -189,7 +189,7 @@ vn_hash_constant_with_type (tree constant)
 /* Compare the constants C1 and C2 with distinguishing type incompatible
    constants in the types_compatible_p sense.  */
 
-static inline bool
+inline bool
 vn_constant_eq_with_type (tree c1, tree c2)
 {
   return (expressions_equal_p (c1, c2)
@@ -286,7 +286,7 @@ unsigned int get_constant_value_id (tree);
 unsigned int get_or_alloc_constant_value_id (tree);
 
 /* Return true if V is a value id for a constant.  */
-static inline bool
+inline bool
 value_id_constant_p (unsigned int v)
 {
   return (int)v < 0;
diff --git a/gcc/tree-ssa.h b/gcc/tree-ssa.h
index 2153cefd226..fa8c8082311 100644
--- a/gcc/tree-ssa.h
+++ b/gcc/tree-ssa.h
@@ -63,7 +63,7 @@ extern void mark_ssa_maybe_undefs (void);
 /* Return TRUE iff VAR is marked as maybe-undefined.  See
    mark_ssa_maybe_undefs.  */
 
-static inline bool
+inline bool
 ssa_name_maybe_undef_p (tree var)
 {
   gcc_checking_assert (TREE_CODE (var) == SSA_NAME);
@@ -72,7 +72,7 @@ ssa_name_maybe_undef_p (tree var)
 
 /* Set (or clear, depending on VALUE) VAR's maybe-undefined mark.  */
 
-static inline void
+inline void
 ssa_name_set_maybe_undef (tree var, bool value = true)
 {
   gcc_checking_assert (TREE_CODE (var) == SSA_NAME);
@@ -84,7 +84,7 @@ extern void execute_update_addresses_taken (void);
 
 /* Given an edge_var_map V, return the PHI arg definition.  */
 
-static inline tree
+inline tree
 redirect_edge_var_map_def (edge_var_map *v)
 {
   return v->def;
@@ -92,7 +92,7 @@ redirect_edge_var_map_def (edge_var_map *v)
 
 /* Given an edge_var_map V, return the PHI result.  */
 
-static inline tree
+inline tree
 redirect_edge_var_map_result (edge_var_map *v)
 {
   return v->result;
@@ -100,7 +100,7 @@ redirect_edge_var_map_result (edge_var_map *v)
 
 /* Given an edge_var_map V, return the PHI arg location.  */
 
-static inline location_t
+inline location_t
 redirect_edge_var_map_location (edge_var_map *v)
 {
   return v->locus;
@@ -108,7 +108,7 @@ redirect_edge_var_map_location (edge_var_map *v)
 
 /* Verify SSA invariants, if internal consistency checks are enabled.  */
 
-static inline void
+inline void
 checking_verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
 {
   if (flag_checking)
diff --git a/gcc/tree-ssanames.h b/gcc/tree-ssanames.h
index b45b37b43e7..b09e71bf779 100644
--- a/gcc/tree-ssanames.h
+++ b/gcc/tree-ssanames.h
@@ -91,7 +91,7 @@ extern void flush_ssaname_freelist (void);
 /* Return an SSA_NAME node for variable VAR defined in statement STMT
    in function cfun.  */
 
-static inline tree
+inline tree
 make_ssa_name (tree var, gimple *stmt = NULL)
 {
   return make_ssa_name_fn (cfun, var, stmt);
@@ -100,7 +100,7 @@ make_ssa_name (tree var, gimple *stmt = NULL)
 /* Return an SSA_NAME node using the template SSA name NAME defined in
    statement STMT in function cfun.  */
 
-static inline tree
+inline tree
 copy_ssa_name (tree var, gimple *stmt = NULL)
 {
   return copy_ssa_name_fn (cfun, var, stmt);
@@ -109,7 +109,7 @@ copy_ssa_name (tree var, gimple *stmt = NULL)
 /*  Creates a duplicate of a SSA name NAME tobe defined by statement STMT
     in function cfun.  */
 
-static inline tree
+inline tree
 duplicate_ssa_name (tree var, gimple *stmt)
 {
   return duplicate_ssa_name_fn (cfun, var, stmt);
@@ -117,7 +117,7 @@ duplicate_ssa_name (tree var, gimple *stmt)
 
 /* Release the SSA name NAME used in function cfun.  */
 
-static inline void
+inline void
 release_ssa_name (tree name)
 {
   release_ssa_name_fn (cfun, name);
@@ -126,7 +126,7 @@ release_ssa_name (tree name)
 /* Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
    in function cfun.  Arrange so that it uses NAME in dumps.  */
 
-static inline tree
+inline tree
 make_temp_ssa_name (tree type, gimple *stmt, const char *name)
 {
   tree ssa_name;
diff --git a/gcc/tree-streamer.h b/gcc/tree-streamer.h
index acca901d660..170d61cf20b 100644
--- a/gcc/tree-streamer.h
+++ b/gcc/tree-streamer.h
@@ -90,7 +90,7 @@ void streamer_tree_cache_delete (struct streamer_tree_cache_d *);
 
 /* Return the tree node at slot IX in CACHE.  */
 
-static inline tree
+inline tree
 streamer_tree_cache_get_tree (struct streamer_tree_cache_d *cache, unsigned ix)
 {
   return cache->nodes[ix];
@@ -98,20 +98,20 @@ streamer_tree_cache_get_tree (struct streamer_tree_cache_d *cache, unsigned ix)
 
 /* Return the tree hash value at slot IX in CACHE.  */
 
-static inline hashval_t
+inline hashval_t
 streamer_tree_cache_get_hash (struct streamer_tree_cache_d *cache, unsigned ix)
 {
   return cache->hashes[ix];
 }
 
-static inline void
+inline void
 bp_pack_machine_mode (struct bitpack_d *bp, machine_mode mode)
 {
   streamer_mode_table[mode] = 1;
   bp_pack_enum (bp, machine_mode, 1 << 8, mode);
 }
 
-static inline machine_mode
+inline machine_mode
 bp_unpack_machine_mode (struct bitpack_d *bp)
 {
   return (machine_mode)
diff --git a/gcc/tree-switch-conversion.h b/gcc/tree-switch-conversion.h
index 07b11a998a5..4e97164e0ef 100644
--- a/gcc/tree-switch-conversion.h
+++ b/gcc/tree-switch-conversion.h
@@ -914,7 +914,7 @@ switch_decision_tree::reset_out_edges_aux (gswitch *swtch)
 
 /* Release CLUSTERS vector and destruct all dynamically allocated items.  */
 
-static inline void
+inline void
 release_clusters (vec<cluster *> &clusters)
 {
   for (unsigned i = 0; i < clusters.length (); i++)
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index a2aa71bedc0..87851080758 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -969,7 +969,7 @@ public:
    stack.  */
 typedef opt_pointer_wrapper <loop_vec_info> opt_loop_vec_info;
 
-static inline loop_vec_info
+inline loop_vec_info
 loop_vec_info_for_loop (class loop *loop)
 {
   return (loop_vec_info) loop->aux;
@@ -1641,7 +1641,7 @@ vector_costs::suggested_unroll_factor () const
        && TYPE_PRECISION (TYPE) == 1		\
        && TYPE_UNSIGNED (TYPE)))
 
-static inline bool
+inline bool
 nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
 {
   return (loop->inner
@@ -1652,7 +1652,7 @@ nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
    Return the initial value of the variable on entry to the containing
    loop.  */
 
-static inline tree
+inline tree
 vect_phi_initial_value (gphi *phi)
 {
   basic_block bb = gimple_bb (phi);
@@ -1664,7 +1664,7 @@ vect_phi_initial_value (gphi *phi)
 /* Return true if STMT_INFO should produce a vector mask type rather than
    a normal nonmask type.  */
 
-static inline bool
+inline bool
 vect_use_mask_type_p (stmt_vec_info stmt_info)
 {
   return stmt_info->mask_precision && stmt_info->mask_precision != ~0U;
@@ -1673,7 +1673,7 @@ vect_use_mask_type_p (stmt_vec_info stmt_info)
 /* Return TRUE if a statement represented by STMT_INFO is a part of a
    pattern.  */
 
-static inline bool
+inline bool
 is_pattern_stmt_p (stmt_vec_info stmt_info)
 {
   return stmt_info->pattern_stmt_p;
@@ -1692,7 +1692,7 @@ vect_orig_stmt (stmt_vec_info stmt_info)
 
 /* Return the later statement between STMT1_INFO and STMT2_INFO.  */
 
-static inline stmt_vec_info
+inline stmt_vec_info
 get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
 {
   if (gimple_uid (vect_orig_stmt (stmt1_info)->stmt)
@@ -1715,7 +1715,7 @@ vect_stmt_to_vectorize (stmt_vec_info stmt_info)
 
 /* Return true if BB is a loop header.  */
 
-static inline bool
+inline bool
 is_loop_header_bb_p (basic_block bb)
 {
   if (bb == (bb->loop_father)->header)
@@ -1726,7 +1726,7 @@ is_loop_header_bb_p (basic_block bb)
 
 /* Return pow2 (X).  */
 
-static inline int
+inline int
 vect_pow2 (int x)
 {
   int i, res = 1;
@@ -1739,7 +1739,7 @@ vect_pow2 (int x)
 
 /* Alias targetm.vectorize.builtin_vectorization_cost.  */
 
-static inline int
+inline int
 builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
 			    tree vectype, int misalign)
 {
@@ -1749,7 +1749,7 @@ builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
 
 /* Get cost by calling cost target builtin.  */
 
-static inline
+inline
 int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
 {
   return builtin_vectorization_cost (type_of_cost, NULL, 0);
@@ -1757,7 +1757,7 @@ int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
 
 /* Alias targetm.vectorize.init_cost.  */
 
-static inline vector_costs *
+inline vector_costs *
 init_cost (vec_info *vinfo, bool costing_for_scalar)
 {
   return targetm.vectorize.create_costs (vinfo, costing_for_scalar);
@@ -1769,7 +1769,7 @@ extern void dump_stmt_cost (FILE *, int, enum vect_cost_for_stmt,
 
 /* Alias targetm.vectorize.add_stmt_cost.  */
 
-static inline unsigned
+inline unsigned
 add_stmt_cost (vector_costs *costs, int count,
 	       enum vect_cost_for_stmt kind,
 	       stmt_vec_info stmt_info, slp_tree node,
@@ -1784,7 +1784,7 @@ add_stmt_cost (vector_costs *costs, int count,
   return cost;
 }
 
-static inline unsigned
+inline unsigned
 add_stmt_cost (vector_costs *costs, int count, enum vect_cost_for_stmt kind,
 	       enum vect_cost_model_location where)
 {
@@ -1795,7 +1795,7 @@ add_stmt_cost (vector_costs *costs, int count, enum vect_cost_for_stmt kind,
 
 /* Alias targetm.vectorize.add_stmt_cost.  */
 
-static inline unsigned
+inline unsigned
 add_stmt_cost (vector_costs *costs, stmt_info_for_cost *i)
 {
   return add_stmt_cost (costs, i->count, i->kind, i->stmt_info, i->node,
@@ -1804,7 +1804,7 @@ add_stmt_cost (vector_costs *costs, stmt_info_for_cost *i)
 
 /* Alias targetm.vectorize.finish_cost.  */
 
-static inline void
+inline void
 finish_cost (vector_costs *costs, const vector_costs *scalar_costs,
 	     unsigned *prologue_cost, unsigned *body_cost,
 	     unsigned *epilogue_cost, unsigned *suggested_unroll_factor = NULL)
@@ -1845,7 +1845,7 @@ extern int dr_misalignment (dr_vec_info *dr_info, tree vectype,
 #define SET_DR_MISALIGNMENT(DR, VAL) set_dr_misalignment (DR, VAL)
 
 /* Only defined once DR_MISALIGNMENT is defined.  */
-static inline const poly_uint64
+inline const poly_uint64
 dr_target_alignment (dr_vec_info *dr_info)
 {
   if (STMT_VINFO_GROUPED_ACCESS (dr_info->stmt))
@@ -1854,7 +1854,7 @@ dr_target_alignment (dr_vec_info *dr_info)
 }
 #define DR_TARGET_ALIGNMENT(DR) dr_target_alignment (DR)
 
-static inline void
+inline void
 set_dr_target_alignment (dr_vec_info *dr_info, poly_uint64 val)
 {
   dr_info->target_alignment = val;
@@ -1864,7 +1864,7 @@ set_dr_target_alignment (dr_vec_info *dr_info, poly_uint64 val)
 /* Return true if data access DR_INFO is aligned to the targets
    preferred alignment for VECTYPE (which may be less than a full vector).  */
 
-static inline bool
+inline bool
 aligned_access_p (dr_vec_info *dr_info, tree vectype)
 {
   return (dr_misalignment (dr_info, vectype) == 0);
@@ -1874,7 +1874,7 @@ aligned_access_p (dr_vec_info *dr_info, tree vectype)
    respect to the targets preferred alignment for VECTYPE, and FALSE
    otherwise.  */
 
-static inline bool
+inline bool
 known_alignment_for_access_p (dr_vec_info *dr_info, tree vectype)
 {
   return (dr_misalignment (dr_info, vectype) != DR_MISALIGNMENT_UNKNOWN);
@@ -1883,7 +1883,7 @@ known_alignment_for_access_p (dr_vec_info *dr_info, tree vectype)
 /* Return the minimum alignment in bytes that the vectorized version
    of DR_INFO is guaranteed to have.  */
 
-static inline unsigned int
+inline unsigned int
 vect_known_alignment_in_bytes (dr_vec_info *dr_info, tree vectype)
 {
   int misalignment = dr_misalignment (dr_info, vectype);
@@ -1898,7 +1898,7 @@ vect_known_alignment_in_bytes (dr_vec_info *dr_info, tree vectype)
    (which for outer loop vectorization might not be the behavior recorded
    in DR_INFO itself).  */
 
-static inline innermost_loop_behavior *
+inline innermost_loop_behavior *
 vect_dr_behavior (vec_info *vinfo, dr_vec_info *dr_info)
 {
   stmt_vec_info stmt_info = dr_info->stmt;
@@ -1936,7 +1936,7 @@ get_dr_vinfo_offset (vec_info *vinfo,
 
 
 /* Return the vect cost model for LOOP.  */
-static inline enum vect_cost_model
+inline enum vect_cost_model
 loop_cost_model (loop_p loop)
 {
   if (loop != NULL
@@ -1947,7 +1947,7 @@ loop_cost_model (loop_p loop)
 }
 
 /* Return true if the vect cost model is unlimited.  */
-static inline bool
+inline bool
 unlimited_cost_model (loop_p loop)
 {
   return loop_cost_model (loop) == VECT_COST_MODEL_UNLIMITED;
@@ -1957,7 +1957,7 @@ unlimited_cost_model (loop_p loop)
    if the first iteration should use a partial mask in order to achieve
    alignment.  */
 
-static inline bool
+inline bool
 vect_use_loop_mask_for_alignment_p (loop_vec_info loop_vinfo)
 {
   return (LOOP_VINFO_FULLY_MASKED_P (loop_vinfo)
@@ -1968,7 +1968,7 @@ vect_use_loop_mask_for_alignment_p (loop_vec_info loop_vinfo)
    NUNITS elements.  NUNITS should be based on the vectorization factor,
    so it is always a known multiple of the number of elements in VECTYPE.  */
 
-static inline unsigned int
+inline unsigned int
 vect_get_num_vectors (poly_uint64 nunits, tree vectype)
 {
   return exact_div (nunits, TYPE_VECTOR_SUBPARTS (vectype)).to_constant ();
@@ -1979,7 +1979,7 @@ vect_get_num_vectors (poly_uint64 nunits, tree vectype)
    vectorization factor divided by the number of elements in
    VECTYPE and is always known at compile time.  */
 
-static inline unsigned int
+inline unsigned int
 vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
 {
   return vect_get_num_vectors (LOOP_VINFO_VECT_FACTOR (loop_vinfo), vectype);
@@ -1988,7 +1988,7 @@ vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
 /* Update maximum unit count *MAX_NUNITS so that it accounts for
    NUNITS.  *MAX_NUNITS can be 1 if we haven't yet recorded anything.  */
 
-static inline void
+inline void
 vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
 {
   /* All unit counts have the form vec_info::vector_size * X for some
@@ -2001,7 +2001,7 @@ vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
    the number of units in vector type VECTYPE.  *MAX_NUNITS can be 1
    if we haven't yet recorded any vector types.  */
 
-static inline void
+inline void
 vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
 {
   vect_update_max_nunits (max_nunits, TYPE_VECTOR_SUBPARTS (vectype));
@@ -2012,7 +2012,7 @@ vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
    Pick a reasonable estimate if the vectorization factor isn't
    known at compile time.  */
 
-static inline unsigned int
+inline unsigned int
 vect_vf_for_cost (loop_vec_info loop_vinfo)
 {
   return estimated_poly_value (LOOP_VINFO_VECT_FACTOR (loop_vinfo));
@@ -2022,7 +2022,7 @@ vect_vf_for_cost (loop_vec_info loop_vinfo)
    Pick a reasonable estimate if the exact number isn't known at
    compile time.  */
 
-static inline unsigned int
+inline unsigned int
 vect_nunits_for_cost (tree vec_type)
 {
   return estimated_poly_value (TYPE_VECTOR_SUBPARTS (vec_type));
@@ -2030,7 +2030,7 @@ vect_nunits_for_cost (tree vec_type)
 
 /* Return the maximum possible vectorization factor for LOOP_VINFO.  */
 
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 vect_max_vf (loop_vec_info loop_vinfo)
 {
   unsigned HOST_WIDE_INT vf;
@@ -2160,7 +2160,7 @@ extern unsigned record_stmt_cost (stmt_vector_for_cost *, int,
 
 /* Overload of record_stmt_cost with VECTYPE derived from STMT_INFO.  */
 
-static inline unsigned
+inline unsigned
 record_stmt_cost (stmt_vector_for_cost *body_cost_vec, int count,
 		  enum vect_cost_for_stmt kind, stmt_vec_info stmt_info,
 		  int misalign, enum vect_cost_model_location where)
diff --git a/gcc/tree.h b/gcc/tree.h
index c656cd5b7bf..92ac0e6a214 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1280,7 +1280,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
    location.  */
 #define CAN_HAVE_LOCATION_P(NODE) ((NODE) && EXPR_P (NODE))
 
-static inline source_range
+inline source_range
 get_expr_source_range (tree expr)
 {
   location_t loc = EXPR_LOCATION (expr);
@@ -3263,7 +3263,7 @@ extern void decl_fini_priority_insert (tree, priority_type);
 /* Set decl_type of a DECL.  Set it to T when SET is true, or reset
    it to NONE.  */
 
-static inline void
+inline void
 set_function_decl_type (tree decl, function_decl_type t, bool set)
 {
   if (set)
@@ -4009,7 +4009,7 @@ any_integral_type_check (const_tree __t, const char *__f, int __l,
 /* Compute the number of operands in an expression node NODE.  For
    tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
    otherwise it is looked up from the node's code.  */
-static inline int
+inline int
 tree_operand_length (const_tree node)
 {
   if (VL_EXP_CLASS_P (node))
@@ -4139,7 +4139,7 @@ SET_TYPE_VECTOR_SUBPARTS (tree node, poly_uint64 subparts)
 /* Return true if we can construct vector types with the given number
    of subparts.  */
 
-static inline bool
+inline bool
 valid_vector_subparts_p (poly_uint64 subparts)
 {
   unsigned HOST_WIDE_INT coeff0 = subparts.coeffs[0];
@@ -4587,7 +4587,7 @@ extern tree build5 (enum tree_code, tree, tree, tree, tree, tree,
 
 /* _loc versions of build[1-5].  */
 
-static inline tree
+inline tree
 build1_loc (location_t loc, enum tree_code code, tree type,
 	    tree arg1 CXX_MEM_STAT_INFO)
 {
@@ -4597,7 +4597,7 @@ build1_loc (location_t loc, enum tree_code code, tree type,
   return t;
 }
 
-static inline tree
+inline tree
 build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1 CXX_MEM_STAT_INFO)
 {
@@ -4607,7 +4607,7 @@ build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
   return t;
 }
 
-static inline tree
+inline tree
 build3_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1, tree arg2 CXX_MEM_STAT_INFO)
 {
@@ -4617,7 +4617,7 @@ build3_loc (location_t loc, enum tree_code code, tree type, tree arg0,
   return t;
 }
 
-static inline tree
+inline tree
 build4_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1, tree arg2, tree arg3 CXX_MEM_STAT_INFO)
 {
@@ -4627,7 +4627,7 @@ build4_loc (location_t loc, enum tree_code code, tree type, tree arg0,
   return t;
 }
 
-static inline tree
+inline tree
 build5_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1, tree arg2, tree arg3, tree arg4 CXX_MEM_STAT_INFO)
 {
@@ -5174,7 +5174,7 @@ extern tree get_narrower (tree, int *);
 
 /* Return true if T is an expression that get_inner_reference handles.  */
 
-static inline bool
+inline bool
 handled_component_p (const_tree t)
 {
   switch (TREE_CODE (t))
@@ -5195,7 +5195,7 @@ handled_component_p (const_tree t)
 
 /* Return true T is a component with reverse storage order.  */
 
-static inline bool
+inline bool
 reverse_storage_order_for_component_p (tree t)
 {
   /* The storage order only applies to scalar components.  */
@@ -5233,7 +5233,7 @@ reverse_storage_order_for_component_p (tree t)
    outer type, a VIEW_CONVERT_EXPR can modify the storage order because
    it can change the partition of the aggregate object into scalars.  */
 
-static inline bool
+inline bool
 storage_order_barrier_p (const_tree t)
 {
   if (TREE_CODE (t) != VIEW_CONVERT_EXPR)
@@ -5274,7 +5274,7 @@ extern bool real_zerop (const_tree);
 
 /* Initialize the iterator I with arguments from function FNDECL  */
 
-static inline void
+inline void
 function_args_iter_init (function_args_iterator *i, const_tree fntype)
 {
   i->next = TYPE_ARG_TYPES (fntype);
@@ -5283,7 +5283,7 @@ function_args_iter_init (function_args_iterator *i, const_tree fntype)
 /* Return a pointer that holds the next argument if there are more arguments to
    handle, otherwise return NULL.  */
 
-static inline tree *
+inline tree *
 function_args_iter_cond_ptr (function_args_iterator *i)
 {
   return (i->next) ? &TREE_VALUE (i->next) : NULL;
@@ -5292,14 +5292,14 @@ function_args_iter_cond_ptr (function_args_iterator *i)
 /* Return the next argument if there are more arguments to handle, otherwise
    return NULL.  */
 
-static inline tree
+inline tree
 function_args_iter_cond (function_args_iterator *i)
 {
   return (i->next) ? TREE_VALUE (i->next) : NULL_TREE;
 }
 
 /* Advance to the next argument.  */
-static inline void
+inline void
 function_args_iter_next (function_args_iterator *i)
 {
   gcc_assert (i->next != NULL_TREE);
@@ -5311,7 +5311,7 @@ function_args_iter_next (function_args_iterator *i)
    so the function returns true for all but the innermost and outermost
    blocks into which an expression has been inlined.  */
 
-static inline bool
+inline bool
 inlined_function_outer_scope_p (const_tree block)
 {
  return LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (block)) != UNKNOWN_LOCATION;
@@ -5385,7 +5385,7 @@ extern const char *combined_fn_name (combined_fn);
    pointer.  Assumes all pointers are interchangeable, which is sort
    of already assumed by gcc elsewhere IIRC.  */
 
-static inline int
+inline int
 struct_ptr_eq (const void *a, const void *b)
 {
   const void * const * x = (const void * const *) a;
@@ -5393,7 +5393,7 @@ struct_ptr_eq (const void *a, const void *b)
   return *x == *y;
 }
 
-static inline hashval_t
+inline hashval_t
 struct_ptr_hash (const void *a)
 {
   const void * const * x = (const void * const *) a;
@@ -5401,7 +5401,7 @@ struct_ptr_hash (const void *a)
 }
 
 /* Return nonzero if CODE is a tree code that represents a truth value.  */
-static inline bool
+inline bool
 truth_value_p (enum tree_code code)
 {
   return (TREE_CODE_CLASS (code) == tcc_comparison
@@ -5412,7 +5412,7 @@ truth_value_p (enum tree_code code)
 
 /* Return whether TYPE is a type suitable for an offset for
    a POINTER_PLUS_EXPR.  */
-static inline bool
+inline bool
 ptrofftype_p (tree type)
 {
   return (INTEGRAL_TYPE_P (type)
@@ -5423,7 +5423,7 @@ ptrofftype_p (tree type)
 /* Return true if the argument is a complete type or an array
    of unknown bound (whose type is incomplete but) whose elements
    have complete type.  */
-static inline bool
+inline bool
 complete_or_array_type_p (const_tree type)
 {
   return COMPLETE_TYPE_P (type)
@@ -5482,7 +5482,7 @@ extern void add_expr (const_tree, hash &, unsigned int = 0);
 
 /* Compat version until all callers are converted. Return hash for
    TREE with SEED.  */
-static inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed)
+inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed)
 {
   inchash::hash hstate (seed);
   inchash::add_expr (tree, hstate);
@@ -5776,7 +5776,7 @@ typedef hash_map<tree,tree,decl_tree_traits> decl_tree_map;
 
 /* Initialize the abstract argument list iterator object ITER with the
    arguments from CALL_EXPR node EXP.  */
-static inline void
+inline void
 init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
 {
   iter->t = exp;
@@ -5784,7 +5784,7 @@ init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
   iter->i = 0;
 }
 
-static inline void
+inline void
 init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator *iter)
 {
   iter->t = exp;
@@ -5794,7 +5794,7 @@ init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator
 
 /* Return the next argument from abstract argument list iterator object ITER,
    and advance its state.  Return NULL_TREE if there are no more arguments.  */
-static inline tree
+inline tree
 next_call_expr_arg (call_expr_arg_iterator *iter)
 {
   tree result;
@@ -5805,7 +5805,7 @@ next_call_expr_arg (call_expr_arg_iterator *iter)
   return result;
 }
 
-static inline const_tree
+inline const_tree
 next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
 {
   const_tree result;
@@ -5820,14 +5820,14 @@ next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
    past and return the first argument.  Useful in for expressions, e.g.
      for (arg = first_call_expr_arg (exp, &iter); arg;
           arg = next_call_expr_arg (&iter))   */
-static inline tree
+inline tree
 first_call_expr_arg (tree exp, call_expr_arg_iterator *iter)
 {
   init_call_expr_arg_iterator (exp, iter);
   return next_call_expr_arg (iter);
 }
 
-static inline const_tree
+inline const_tree
 first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
 {
   init_const_call_expr_arg_iterator (exp, iter);
@@ -5836,7 +5836,7 @@ first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
 
 /* Test whether there are more arguments in abstract argument list iterator
    ITER, without changing its state.  */
-static inline bool
+inline bool
 more_call_expr_args_p (const call_expr_arg_iterator *iter)
 {
   return (iter->i < iter->n);
@@ -5853,7 +5853,7 @@ more_call_expr_args_p (const call_expr_arg_iterator *iter)
        (arg) = next_const_call_expr_arg (&(iter)))
 
 /* Return true if tree node T is a language-specific node.  */
-static inline bool
+inline bool
 is_lang_specific (const_tree t)
 {
   return TREE_CODE (t) == LANG_TYPE || TREE_CODE (t) >= NUM_TREE_CODES;
@@ -5871,7 +5871,7 @@ is_lang_specific (const_tree t)
   (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (builtin_decl_explicit (BUILTIN))))
 
 /* Return the tree node for an explicit standard builtin function or NULL.  */
-static inline tree
+inline tree
 builtin_decl_explicit (enum built_in_function fncode)
 {
   gcc_checking_assert (BUILTIN_VALID_P (fncode));
@@ -5880,7 +5880,7 @@ builtin_decl_explicit (enum built_in_function fncode)
 }
 
 /* Return the tree node for an implicit builtin function or NULL.  */
-static inline tree
+inline tree
 builtin_decl_implicit (enum built_in_function fncode)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5900,7 +5900,7 @@ extern tree build_builtin_unreachable (location_t);
 /* Set explicit builtin function nodes and whether it is an implicit
    function.  */
 
-static inline void
+inline void
 set_builtin_decl (enum built_in_function fncode, tree decl, bool implicit_p)
 {
   size_t ufncode = (size_t)fncode;
@@ -5915,7 +5915,7 @@ set_builtin_decl (enum built_in_function fncode, tree decl, bool implicit_p)
 
 /* Set the implicit flag for a builtin function.  */
 
-static inline void
+inline void
 set_builtin_decl_implicit_p (enum built_in_function fncode, bool implicit_p)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5928,7 +5928,7 @@ set_builtin_decl_implicit_p (enum built_in_function fncode, bool implicit_p)
 
 /* Set the declared flag for a builtin function.  */
 
-static inline void
+inline void
 set_builtin_decl_declared_p (enum built_in_function fncode, bool declared_p)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5942,7 +5942,7 @@ set_builtin_decl_declared_p (enum built_in_function fncode, bool declared_p)
 /* Return whether the standard builtin function can be used as an explicit
    function.  */
 
-static inline bool
+inline bool
 builtin_decl_explicit_p (enum built_in_function fncode)
 {
   gcc_checking_assert (BUILTIN_VALID_P (fncode));
@@ -5951,7 +5951,7 @@ builtin_decl_explicit_p (enum built_in_function fncode)
 
 /* Return whether the standard builtin function can be used implicitly.  */
 
-static inline bool
+inline bool
 builtin_decl_implicit_p (enum built_in_function fncode)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5963,7 +5963,7 @@ builtin_decl_implicit_p (enum built_in_function fncode)
 
 /* Return whether the standard builtin function was declared.  */
 
-static inline bool
+inline bool
 builtin_decl_declared_p (enum built_in_function fncode)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5983,7 +5983,7 @@ builtin_decl_declared_p (enum built_in_function fncode)
    Avoid using this, as it's generally better to use attributes rather
    than to check for functions by name.  */
 
-static inline bool
+inline bool
 maybe_special_function_p (const_tree fndecl)
 {
   tree name_decl = DECL_NAME (fndecl);
@@ -6001,7 +6001,7 @@ maybe_special_function_p (const_tree fndecl)
 /* Return true if T (assumed to be a DECL) is a global variable.
    A variable is considered global if its storage is not automatic.  */
 
-static inline bool
+inline bool
 is_global_var (const_tree t)
 {
   return (TREE_STATIC (t) || DECL_EXTERNAL (t));
@@ -6011,7 +6011,7 @@ is_global_var (const_tree t)
    maybe aliased if it has its address taken by the local TU
    or possibly by another TU and might be modified through a pointer.  */
 
-static inline bool
+inline bool
 may_be_aliased (const_tree var)
 {
   return (TREE_CODE (var) != CONST_DECL
@@ -6025,7 +6025,7 @@ may_be_aliased (const_tree var)
 }
 
 /* Return pointer to optimization flags of FNDECL.  */
-static inline struct cl_optimization *
+inline struct cl_optimization *
 opts_for_fn (const_tree fndecl)
 {
   tree fn_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
@@ -6035,7 +6035,7 @@ opts_for_fn (const_tree fndecl)
 }
 
 /* Return pointer to target flags of FNDECL.  */
-static inline cl_target_option *
+inline cl_target_option *
 target_opts_for_fn (const_tree fndecl)
 {
   tree fn_opts = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
diff --git a/gcc/wide-int.h b/gcc/wide-int.h
index b3c19ec451c..a450a744c9f 100644
--- a/gcc/wide-int.h
+++ b/gcc/wide-int.h
@@ -3495,7 +3495,7 @@ wi::set_bit_in_zero (unsigned int bit)
 
 /* Accumulate a set of overflows into OVERFLOW.  */
 
-static inline void
+inline void
 wi::accumulate_overflow (wi::overflow_type &overflow,
 			 wi::overflow_type suboverflow)
 {
-- 
2.39.1.367.g5cc9858f1b


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

* Re: [PATCH] don't declare header-defined functions both static and inline
  2023-01-31  3:37 [PATCH] don't declare header-defined functions both static and inline Patrick Palka
@ 2023-01-31  7:05 ` Richard Biener
  2023-01-31  8:42   ` Jakub Jelinek
  0 siblings, 1 reply; 9+ messages in thread
From: Richard Biener @ 2023-01-31  7:05 UTC (permalink / raw)
  To: Patrick Palka; +Cc: gcc-patches

On Tue, Jan 31, 2023 at 4:39 AM Patrick Palka via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Many functions defined in our headers are declared 'static inline' which
> is a vestige from when GCC's implementation language was C.  But in C++
> the inline keyword is more than just a compiler hint, and is sufficient
> to give the function the intended semantics.  In fact declaring a
> (namespace-scope) function both static and inline is a pessimization
> since static effectively disables the intended definition merging
> behavior that inline provides, and is also a source of (harmless) ODR
> violations when a static inline function gets called from a non-static
> inline one (such as tree_operand_length being called from
> tree_operand_check).
>
> This patch mechanically fixes the vast majority of occurrences of this
> anti-pattern throughout the compiler's headers via the command line
>
>   echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'
>
> Besides fixing the ODR violations, this speeds up stage1 cc1plus by
> about 2% and reduces the size of its text segment by 1.5MB.
>
> Bootstrapped and regtested on x86_64-pc-linux-gnu, would this be OK to
> push now or wait for stage1?

Speeding up and reducing the size of cc1plus improves on continued
regression in this area.  So I'd vote +1 to do this now, let's see what others
think.

Richard.

> gcc/ChangeLog:
>
>         * addresses.h: Mechanically drop 'static' from 'static inline'
>         functions via s/^static inline/inline/g.
>         * asan.h: Likewise.
>         * attribs.h: Likewise.
>         * basic-block.h: Likewise.
>         * bitmap.h: Likewise.
>         * cfghooks.h: Likewise.
>         * cfgloop.h: Likewise.
>         * cgraph.h: Likewise.
>         * cselib.h: Likewise.
>         * data-streamer.h: Likewise.
>         * debug.h: Likewise.
>         * df.h: Likewise.
>         * diagnostic.h: Likewise.
>         * dominance.h: Likewise.
>         * dumpfile.h: Likewise.
>         * emit-rtl.h: Likewise.
>         * except.h: Likewise.
>         * expmed.h: Likewise.
>         * expr.h: Likewise.
>         * fixed-value.h: Likewise.
>         * gengtype.h: Likewise.
>         * gimple-expr.h: Likewise.
>         * gimple-iterator.h: Likewise.
>         * gimple-predict.h: Likewise.
>         * gimple-range-fold.h: Likewise.
>         * gimple-ssa.h: Likewise.
>         * gimple.h: Likewise.
>         * graphite.h: Likewise.
>         * hard-reg-set.h: Likewise.
>         * hash-map.h: Likewise.
>         * hash-set.h: Likewise.
>         * hash-table.h: Likewise.
>         * hwint.h: Likewise.
>         * input.h: Likewise.
>         * insn-addr.h: Likewise.
>         * internal-fn.h: Likewise.
>         * ipa-fnsummary.h: Likewise.
>         * ipa-icf-gimple.h: Likewise.
>         * ipa-inline.h: Likewise.
>         * ipa-modref.h: Likewise.
>         * ipa-prop.h: Likewise.
>         * ira-int.h: Likewise.
>         * ira.h: Likewise.
>         * lra-int.h: Likewise.
>         * lra.h: Likewise.
>         * lto-streamer.h: Likewise.
>         * memmodel.h: Likewise.
>         * omp-general.h: Likewise.
>         * optabs-query.h: Likewise.
>         * optabs.h: Likewise.
>         * plugin.h: Likewise.
>         * pretty-print.h: Likewise.
>         * range.h: Likewise.
>         * read-md.h: Likewise.
>         * recog.h: Likewise.
>         * regs.h: Likewise.
>         * rtl-iter.h: Likewise.
>         * rtl.h: Likewise.
>         * sbitmap.h: Likewise.
>         * sched-int.h: Likewise.
>         * sel-sched-ir.h: Likewise.
>         * sese.h: Likewise.
>         * sparseset.h: Likewise.
>         * ssa-iterators.h: Likewise.
>         * system.h: Likewise.
>         * target-globals.h: Likewise.
>         * target.h: Likewise.
>         * timevar.h: Likewise.
>         * tree-chrec.h: Likewise.
>         * tree-data-ref.h: Likewise.
>         * tree-iterator.h: Likewise.
>         * tree-outof-ssa.h: Likewise.
>         * tree-phinodes.h: Likewise.
>         * tree-scalar-evolution.h: Likewise.
>         * tree-sra.h: Likewise.
>         * tree-ssa-alias.h: Likewise.
>         * tree-ssa-live.h: Likewise.
>         * tree-ssa-loop-manip.h: Likewise.
>         * tree-ssa-loop.h: Likewise.
>         * tree-ssa-operands.h: Likewise.
>         * tree-ssa-propagate.h: Likewise.
>         * tree-ssa-sccvn.h: Likewise.
>         * tree-ssa.h: Likewise.
>         * tree-ssanames.h: Likewise.
>         * tree-streamer.h: Likewise.
>         * tree-switch-conversion.h: Likewise.
>         * tree-vectorizer.h: Likewise.
>         * tree.h: Likewise.
>         * wide-int.h: Likewise.
>
> gcc/c-family/ChangeLog:
>
>         * c-common.h: Mechanically drop static from static inline
>         functions via s/^static inline/inline/g.
>
> gcc/c/ChangeLog:
>
>         * c-parser.h: Mechanically drop static from static inline
>         functions via s/^static inline/inline/g.
>
> gcc/cp/ChangeLog:
>
>         * cp-tree.h: Mechanically drop static from static inline
>         functions via s/^static inline/inline/g.
>
> gcc/fortran/ChangeLog:
>
>         * gfortran.h: Mechanically drop static from static inline
>         functions via s/^static inline/inline/g.
>
> gcc/jit/ChangeLog:
>
>         * jit-dejagnu.h: Mechanically drop static from static inline
>         functions via s/^static inline/inline/g.
>         * jit-recording.h: Likewise.
>
> gcc/objc/ChangeLog:
>
>         * objc-act.h: Mechanically drop static from static inline
>         functions via s/^static inline/inline/g.
>         * objc-map.h: Likewise.
> ---
>  gcc/addresses.h              |    6 +-
>  gcc/asan.h                   |   14 +-
>  gcc/attribs.h                |   16 +-
>  gcc/basic-block.h            |   54 +-
>  gcc/bitmap.h                 |   20 +-
>  gcc/c-family/c-common.h      |    2 +-
>  gcc/c/c-parser.h             |    6 +-
>  gcc/cfghooks.h               |    2 +-
>  gcc/cfgloop.h                |   36 +-
>  gcc/cgraph.h                 |    6 +-
>  gcc/cp/cp-tree.h             |    2 +-
>  gcc/cselib.h                 |    4 +-
>  gcc/data-streamer.h          |   30 +-
>  gcc/debug.h                  |    2 +-
>  gcc/df.h                     |   26 +-
>  gcc/diagnostic.h             |   12 +-
>  gcc/dominance.h              |    2 +-
>  gcc/dumpfile.h               |   16 +-
>  gcc/emit-rtl.h               |   14 +-
>  gcc/except.h                 |    2 +-
>  gcc/expmed.h                 |  102 ++--
>  gcc/expr.h                   |   14 +-
>  gcc/fixed-value.h            |    2 +-
>  gcc/fortran/gfortran.h       |    4 +-
>  gcc/gengtype.h               |   12 +-
>  gcc/gimple-expr.h            |   18 +-
>  gcc/gimple-iterator.h        |   48 +-
>  gcc/gimple-predict.h         |   10 +-
>  gcc/gimple-range-fold.h      |    6 +-
>  gcc/gimple-ssa.h             |   14 +-
>  gcc/gimple.h                 | 1026 +++++++++++++++++-----------------
>  gcc/graphite.h               |   24 +-
>  gcc/hard-reg-set.h           |   18 +-
>  gcc/hash-map.h               |    8 +-
>  gcc/hash-set.h               |    6 +-
>  gcc/hash-table.h             |    6 +-
>  gcc/hwint.h                  |   26 +-
>  gcc/input.h                  |   12 +-
>  gcc/insn-addr.h              |    2 +-
>  gcc/internal-fn.h            |    6 +-
>  gcc/ipa-fnsummary.h          |    2 +-
>  gcc/ipa-icf-gimple.h         |    6 +-
>  gcc/ipa-inline.h             |   10 +-
>  gcc/ipa-modref.h             |    2 +-
>  gcc/ipa-prop.h               |   70 +--
>  gcc/ira-int.h                |   50 +-
>  gcc/ira.h                    |    2 +-
>  gcc/jit/jit-dejagnu.h        |   16 +-
>  gcc/jit/jit-recording.h      |    2 +-
>  gcc/lra-int.h                |   14 +-
>  gcc/lra.h                    |    2 +-
>  gcc/lto-streamer.h           |   54 +-
>  gcc/memmodel.h               |   18 +-
>  gcc/objc/objc-act.h          |    6 +-
>  gcc/objc/objc-map.h          |   12 +-
>  gcc/omp-general.h            |    2 +-
>  gcc/optabs-query.h           |    8 +-
>  gcc/optabs.h                 |   14 +-
>  gcc/plugin.h                 |    2 +-
>  gcc/pretty-print.h           |   10 +-
>  gcc/range.h                  |    6 +-
>  gcc/read-md.h                |    4 +-
>  gcc/recog.h                  |    8 +-
>  gcc/regs.h                   |   22 +-
>  gcc/rtl-iter.h               |    2 +-
>  gcc/rtl.h                    |   34 +-
>  gcc/sbitmap.h                |   16 +-
>  gcc/sched-int.h              |    8 +-
>  gcc/sel-sched-ir.h           |   48 +-
>  gcc/sese.h                   |   30 +-
>  gcc/sparseset.h              |   22 +-
>  gcc/ssa-iterators.h          |   86 +--
>  gcc/system.h                 |    6 +-
>  gcc/target-globals.h         |    2 +-
>  gcc/target.h                 |    6 +-
>  gcc/timevar.h                |    4 +-
>  gcc/tree-chrec.h             |   22 +-
>  gcc/tree-data-ref.h          |   24 +-
>  gcc/tree-iterator.h          |   16 +-
>  gcc/tree-outof-ssa.h         |    4 +-
>  gcc/tree-phinodes.h          |    4 +-
>  gcc/tree-scalar-evolution.h  |    6 +-
>  gcc/tree-sra.h               |    2 +-
>  gcc/tree-ssa-alias.h         |    2 +-
>  gcc/tree-ssa-live.h          |   24 +-
>  gcc/tree-ssa-loop-manip.h    |    2 +-
>  gcc/tree-ssa-loop.h          |    2 +-
>  gcc/tree-ssa-operands.h      |    4 +-
>  gcc/tree-ssa-propagate.h     |    4 +-
>  gcc/tree-ssa-sccvn.h         |   10 +-
>  gcc/tree-ssa.h               |   12 +-
>  gcc/tree-ssanames.h          |   10 +-
>  gcc/tree-streamer.h          |    8 +-
>  gcc/tree-switch-conversion.h |    2 +-
>  gcc/tree-vectorizer.h        |   64 +--
>  gcc/tree.h                   |   88 +--
>  gcc/wide-int.h               |    2 +-
>  97 files changed, 1277 insertions(+), 1277 deletions(-)
>
> diff --git a/gcc/addresses.h b/gcc/addresses.h
> index 05a2401730d..3519c241c6d 100644
> --- a/gcc/addresses.h
> +++ b/gcc/addresses.h
> @@ -24,7 +24,7 @@ along with GCC; see the file COPYING3.  If not see
>  #ifndef GCC_ADDRESSES_H
>  #define GCC_ADDRESSES_H
>
> -static inline enum reg_class
> +inline enum reg_class
>  base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
>                 addr_space_t as ATTRIBUTE_UNUSED,
>                 enum rtx_code outer_code ATTRIBUTE_UNUSED,
> @@ -51,7 +51,7 @@ base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
>     REGNO_OK_FOR_BASE_P.
>     Arguments as for the REGNO_MODE_CODE_OK_FOR_BASE_P macro.  */
>
> -static inline bool
> +inline bool
>  ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
>                  machine_mode mode ATTRIBUTE_UNUSED,
>                  addr_space_t as ATTRIBUTE_UNUSED,
> @@ -77,7 +77,7 @@ ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
>  /* Wrapper around ok_for_base_p_1, for use after register allocation is
>     complete.  Arguments as for the called function.  */
>
> -static inline bool
> +inline bool
>  regno_ok_for_base_p (unsigned regno, machine_mode mode, addr_space_t as,
>                      enum rtx_code outer_code, enum rtx_code index_code)
>  {
> diff --git a/gcc/asan.h b/gcc/asan.h
> index 902e93b848a..f047bbc1040 100644
> --- a/gcc/asan.h
> +++ b/gcc/asan.h
> @@ -139,7 +139,7 @@ extern bool asan_mark_p (gimple *stmt, enum asan_mark_flags flag);
>  /* Return the size of padding needed to insert after a protected
>     decl of SIZE.  */
>
> -static inline unsigned int
> +inline unsigned int
>  asan_red_zone_size (unsigned int size)
>  {
>    unsigned int c = size & (ASAN_RED_ZONE_SIZE - 1);
> @@ -149,7 +149,7 @@ asan_red_zone_size (unsigned int size)
>  /* Return how much a stack variable occupis on a stack
>     including a space for red zone.  */
>
> -static inline unsigned HOST_WIDE_INT
> +inline unsigned HOST_WIDE_INT
>  asan_var_and_redzone_size (unsigned HOST_WIDE_INT size)
>  {
>    if (size <= 4)
> @@ -181,7 +181,7 @@ extern hash_set<tree> *asan_handled_variables;
>  /* Return TRUE if builtin with given FCODE will be intercepted by
>     libasan.  */
>
> -static inline bool
> +inline bool
>  asan_intercepted_p (enum built_in_function fcode)
>  {
>    if (hwasan_sanitize_p ())
> @@ -212,7 +212,7 @@ asan_intercepted_p (enum built_in_function fcode)
>
>  /* Return TRUE if we should instrument for use-after-scope sanity checking.  */
>
> -static inline bool
> +inline bool
>  asan_sanitize_use_after_scope (void)
>  {
>    return (flag_sanitize_address_use_after_scope
> @@ -221,7 +221,7 @@ asan_sanitize_use_after_scope (void)
>
>  /* Return true if DECL should be guarded on the stack.  */
>
> -static inline bool
> +inline bool
>  asan_protect_stack_decl (tree decl)
>  {
>    return DECL_P (decl)
> @@ -232,7 +232,7 @@ asan_protect_stack_decl (tree decl)
>  /* Return true when flag_sanitize & FLAG is non-zero.  If FN is non-null,
>     remove all flags mentioned in "no_sanitize" of DECL_ATTRIBUTES.  */
>
> -static inline bool
> +inline bool
>  sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
>  {
>    unsigned int result_flags = flag_sanitize & flag;
> @@ -251,7 +251,7 @@ sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
>
>  /* Return true when coverage sanitization should happend for FN function.  */
>
> -static inline bool
> +inline bool
>  sanitize_coverage_p (const_tree fn = current_function_decl)
>  {
>    return (flag_sanitize_coverage
> diff --git a/gcc/attribs.h b/gcc/attribs.h
> index 140e70b64e0..84a43658a70 100644
> --- a/gcc/attribs.h
> +++ b/gcc/attribs.h
> @@ -148,7 +148,7 @@ canonicalize_attr_name (const char *&s, T &l)
>  /* For a given IDENTIFIER_NODE, strip leading and trailing '_' characters
>     so that we have a canonical form of attribute names.  */
>
> -static inline tree
> +inline tree
>  canonicalize_attr_name (tree attr_name)
>  {
>    size_t l = IDENTIFIER_LENGTH (attr_name);
> @@ -163,7 +163,7 @@ canonicalize_attr_name (tree attr_name)
>  /* Compare attribute identifiers ATTR1 and ATTR2 with length ATTR1_LEN and
>     ATTR2_LEN.  */
>
> -static inline bool
> +inline bool
>  cmp_attribs (const char *attr1, size_t attr1_len,
>              const char *attr2, size_t attr2_len)
>  {
> @@ -172,7 +172,7 @@ cmp_attribs (const char *attr1, size_t attr1_len,
>
>  /* Compare attribute identifiers ATTR1 and ATTR2.  */
>
> -static inline bool
> +inline bool
>  cmp_attribs (const char *attr1, const char *attr2)
>  {
>    return cmp_attribs (attr1, strlen (attr1), attr2, strlen (attr2));
> @@ -181,7 +181,7 @@ cmp_attribs (const char *attr1, const char *attr2)
>  /* Given an identifier node IDENT and a string ATTR_NAME, return true
>     if the identifier node is a valid attribute name for the string.  */
>
> -static inline bool
> +inline bool
>  is_attribute_p (const char *attr_name, const_tree ident)
>  {
>    return cmp_attribs (attr_name, strlen (attr_name),
> @@ -193,7 +193,7 @@ is_attribute_p (const char *attr_name, const_tree ident)
>     for standard attribute (NULL get_attribute_namespace) or "gnu"
>     namespace.  */
>
> -static inline bool
> +inline bool
>  is_attribute_namespace_p (const char *attr_ns, const_tree attr)
>  {
>    tree ident = get_attribute_namespace (attr);
> @@ -212,7 +212,7 @@ is_attribute_namespace_p (const char *attr_ns, const_tree attr)
>     occurrences are wanted.  ATTR_NAME must be in the form 'text' (not
>     '__text__').  */
>
> -static inline tree
> +inline tree
>  lookup_attribute (const char *attr_name, tree list)
>  {
>    if (CHECKING_P && attr_name[0] != '_')
> @@ -236,7 +236,7 @@ lookup_attribute (const char *attr_name, tree list)
>  /* Similar to lookup_attribute, but also match the attribute namespace.
>     ATTR_NS "" stands for either standard attribute or "gnu" namespace.  */
>
> -static inline tree
> +inline tree
>  lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
>  {
>    if (CHECKING_P && attr_name[0] != '_')
> @@ -269,7 +269,7 @@ lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
>     starts with ATTR_NAME.  ATTR_NAME must be in the form 'text' (not
>     '__text__').  */
>
> -static inline tree
> +inline tree
>  lookup_attribute_by_prefix (const char *attr_name, tree list)
>  {
>    gcc_checking_assert (attr_name[0] != '_');
> diff --git a/gcc/basic-block.h b/gcc/basic-block.h
> index 7c06a7db45d..29191e56720 100644
> --- a/gcc/basic-block.h
> +++ b/gcc/basic-block.h
> @@ -309,7 +309,7 @@ enum cfg_bb_flags
>
>  /* Returns true if BB has precisely one successor.  */
>
> -static inline bool
> +inline bool
>  single_succ_p (const_basic_block bb)
>  {
>    return EDGE_COUNT (bb->succs) == 1;
> @@ -317,7 +317,7 @@ single_succ_p (const_basic_block bb)
>
>  /* Returns true if BB has precisely one predecessor.  */
>
> -static inline bool
> +inline bool
>  single_pred_p (const_basic_block bb)
>  {
>    return EDGE_COUNT (bb->preds) == 1;
> @@ -326,7 +326,7 @@ single_pred_p (const_basic_block bb)
>  /* Returns the single successor edge of basic block BB.  Aborts if
>     BB does not have exactly one successor.  */
>
> -static inline edge
> +inline edge
>  single_succ_edge (const_basic_block bb)
>  {
>    gcc_checking_assert (single_succ_p (bb));
> @@ -336,7 +336,7 @@ single_succ_edge (const_basic_block bb)
>  /* Returns the single predecessor edge of basic block BB.  Aborts
>     if BB does not have exactly one predecessor.  */
>
> -static inline edge
> +inline edge
>  single_pred_edge (const_basic_block bb)
>  {
>    gcc_checking_assert (single_pred_p (bb));
> @@ -346,7 +346,7 @@ single_pred_edge (const_basic_block bb)
>  /* Returns the single successor block of basic block BB.  Aborts
>     if BB does not have exactly one successor.  */
>
> -static inline basic_block
> +inline basic_block
>  single_succ (const_basic_block bb)
>  {
>    return single_succ_edge (bb)->dest;
> @@ -355,7 +355,7 @@ single_succ (const_basic_block bb)
>  /* Returns the single predecessor block of basic block BB.  Aborts
>     if BB does not have exactly one predecessor.*/
>
> -static inline basic_block
> +inline basic_block
>  single_pred (const_basic_block bb)
>  {
>    return single_pred_edge (bb)->src;
> @@ -368,7 +368,7 @@ struct edge_iterator {
>    vec<edge, va_gc> **container;
>  };
>
> -static inline vec<edge, va_gc> *
> +inline vec<edge, va_gc> *
>  ei_container (edge_iterator i)
>  {
>    gcc_checking_assert (i.container);
> @@ -379,7 +379,7 @@ ei_container (edge_iterator i)
>  #define ei_last(iter) ei_last_1 (&(iter))
>
>  /* Return an iterator pointing to the start of an edge vector.  */
> -static inline edge_iterator
> +inline edge_iterator
>  ei_start_1 (vec<edge, va_gc> **ev)
>  {
>    edge_iterator i;
> @@ -392,7 +392,7 @@ ei_start_1 (vec<edge, va_gc> **ev)
>
>  /* Return an iterator pointing to the last element of an edge
>     vector.  */
> -static inline edge_iterator
> +inline edge_iterator
>  ei_last_1 (vec<edge, va_gc> **ev)
>  {
>    edge_iterator i;
> @@ -404,7 +404,7 @@ ei_last_1 (vec<edge, va_gc> **ev)
>  }
>
>  /* Is the iterator `i' at the end of the sequence?  */
> -static inline bool
> +inline bool
>  ei_end_p (edge_iterator i)
>  {
>    return (i.index == EDGE_COUNT (ei_container (i)));
> @@ -412,14 +412,14 @@ ei_end_p (edge_iterator i)
>
>  /* Is the iterator `i' at one position before the end of the
>     sequence?  */
> -static inline bool
> +inline bool
>  ei_one_before_end_p (edge_iterator i)
>  {
>    return (i.index + 1 == EDGE_COUNT (ei_container (i)));
>  }
>
>  /* Advance the iterator to the next element.  */
> -static inline void
> +inline void
>  ei_next (edge_iterator *i)
>  {
>    gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i)));
> @@ -427,7 +427,7 @@ ei_next (edge_iterator *i)
>  }
>
>  /* Move the iterator to the previous element.  */
> -static inline void
> +inline void
>  ei_prev (edge_iterator *i)
>  {
>    gcc_checking_assert (i->index > 0);
> @@ -435,7 +435,7 @@ ei_prev (edge_iterator *i)
>  }
>
>  /* Return the edge pointed to by the iterator `i'.  */
> -static inline edge
> +inline edge
>  ei_edge (edge_iterator i)
>  {
>    return EDGE_I (ei_container (i), i.index);
> @@ -444,7 +444,7 @@ ei_edge (edge_iterator i)
>  /* Return an edge pointed to by the iterator.  Do it safely so that
>     NULL is returned when the iterator is pointing at the end of the
>     sequence.  */
> -static inline edge
> +inline edge
>  ei_safe_edge (edge_iterator i)
>  {
>    return !ei_end_p (i) ? ei_edge (i) : NULL;
> @@ -454,7 +454,7 @@ ei_safe_edge (edge_iterator i)
>     *Edge P is set to the next edge if we are to continue to iterate
>     and NULL otherwise.  */
>
> -static inline bool
> +inline bool
>  ei_cond (edge_iterator ei, edge *p)
>  {
>    if (!ei_end_p (ei))
> @@ -505,14 +505,14 @@ ei_cond (edge_iterator ei, edge *p)
>
>  /* Return true if BB is in a transaction.  */
>
> -static inline bool
> +inline bool
>  bb_in_transaction (basic_block bb)
>  {
>    return bb->flags & BB_IN_TRANSACTION;
>  }
>
>  /* Return true when one of the predecessor edges of BB is marked with EDGE_EH.  */
> -static inline bool
> +inline bool
>  bb_has_eh_pred (basic_block bb)
>  {
>    edge e;
> @@ -527,7 +527,7 @@ bb_has_eh_pred (basic_block bb)
>  }
>
>  /* Return true when one of the predecessor edges of BB is marked with EDGE_ABNORMAL.  */
> -static inline bool
> +inline bool
>  bb_has_abnormal_pred (basic_block bb)
>  {
>    edge e;
> @@ -542,7 +542,7 @@ bb_has_abnormal_pred (basic_block bb)
>  }
>
>  /* Return the fallthru edge in EDGES if it exists, NULL otherwise.  */
> -static inline edge
> +inline edge
>  find_fallthru_edge (vec<edge, va_gc> *edges)
>  {
>    edge e;
> @@ -557,7 +557,7 @@ find_fallthru_edge (vec<edge, va_gc> *edges)
>
>  /* Check tha probability is sane.  */
>
> -static inline void
> +inline void
>  check_probability (int prob)
>  {
>    gcc_checking_assert (prob >= 0 && prob <= REG_BR_PROB_BASE);
> @@ -566,7 +566,7 @@ check_probability (int prob)
>  /* Given PROB1 and PROB2, return PROB1*PROB2/REG_BR_PROB_BASE.
>     Used to combine BB probabilities.  */
>
> -static inline int
> +inline int
>  combine_probabilities (int prob1, int prob2)
>  {
>    check_probability (prob1);
> @@ -578,7 +578,7 @@ combine_probabilities (int prob1, int prob2)
>     interface when potentially scaling up, so that SCALE is not
>     constrained to be < REG_BR_PROB_BASE.  */
>
> -static inline gcov_type
> +inline gcov_type
>  apply_scale (gcov_type freq, gcov_type scale)
>  {
>    return RDIV (freq * scale, REG_BR_PROB_BASE);
> @@ -586,7 +586,7 @@ apply_scale (gcov_type freq, gcov_type scale)
>
>  /* Apply probability PROB on frequency or count FREQ.  */
>
> -static inline gcov_type
> +inline gcov_type
>  apply_probability (gcov_type freq, int prob)
>  {
>    check_probability (prob);
> @@ -595,7 +595,7 @@ apply_probability (gcov_type freq, int prob)
>
>  /* Return inverse probability for PROB.  */
>
> -static inline int
> +inline int
>  inverse_probability (int prob1)
>  {
>    check_probability (prob1);
> @@ -604,7 +604,7 @@ inverse_probability (int prob1)
>
>  /* Return true if BB has at least one abnormal outgoing edge.  */
>
> -static inline bool
> +inline bool
>  has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
>  {
>    edge e;
> @@ -620,7 +620,7 @@ has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
>  /* Return true when one of the predecessor edges of BB is marked with
>     EDGE_ABNORMAL_CALL or EDGE_EH.  */
>
> -static inline bool
> +inline bool
>  has_abnormal_call_or_eh_pred_edge_p (basic_block bb)
>  {
>    edge e;
> diff --git a/gcc/bitmap.h b/gcc/bitmap.h
> index a439f933867..43337d2e9d9 100644
> --- a/gcc/bitmap.h
> +++ b/gcc/bitmap.h
> @@ -461,7 +461,7 @@ extern void dump_bitmap_statistics (void);
>  /* Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
>     to allocate from, NULL for GC'd bitmap.  */
>
> -static inline void
> +inline void
>  bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
>  {
>    head->first = head->current = NULL;
> @@ -476,7 +476,7 @@ bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
>  /* Release a bitmap (but not its head).  This is suitable for pairing with
>     bitmap_initialize.  */
>
> -static inline void
> +inline void
>  bitmap_release (bitmap head)
>  {
>    bitmap_clear (head);
> @@ -532,7 +532,7 @@ struct bitmap_iterator
>  /* Initialize a single bitmap iterator.  START_BIT is the first bit to
>     iterate from.  */
>
> -static inline void
> +inline void
>  bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
>                    unsigned start_bit, unsigned *bit_no)
>  {
> @@ -576,7 +576,7 @@ bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
>  /* Initialize an iterator to iterate over the intersection of two
>     bitmaps.  START_BIT is the bit to commence from.  */
>
> -static inline void
> +inline void
>  bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
>                    unsigned start_bit, unsigned *bit_no)
>  {
> @@ -645,7 +645,7 @@ bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
>
>  /* Initialize an iterator to iterate over the bits in MAP1 & ~MAP2.  */
>
> -static inline void
> +inline void
>  bmp_iter_and_compl_init (bitmap_iterator *bi,
>                          const_bitmap map1, const_bitmap map2,
>                          unsigned start_bit, unsigned *bit_no)
> @@ -696,7 +696,7 @@ bmp_iter_and_compl_init (bitmap_iterator *bi,
>  /* Advance to the next bit in BI.  We don't advance to the next
>     nonzero bit yet.  */
>
> -static inline void
> +inline void
>  bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
>  {
>    bi->bits >>= 1;
> @@ -705,7 +705,7 @@ bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
>
>  /* Advance to first set bit in BI.  */
>
> -static inline void
> +inline void
>  bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
>  {
>  #if (GCC_VERSION >= 3004)
> @@ -728,7 +728,7 @@ bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
>     already advanced past the just iterated bit.  Return true if there
>     is a bit to iterate.  */
>
> -static inline bool
> +inline bool
>  bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
>  {
>    /* If our current word is nonzero, it contains the bit we want.  */
> @@ -774,7 +774,7 @@ bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
>     bitmaps.  We will have already advanced past the just iterated bit.
>     Return true if there is a bit to iterate.  */
>
> -static inline bool
> +inline bool
>  bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
>  {
>    /* If our current word is nonzero, it contains the bit we want.  */
> @@ -843,7 +843,7 @@ bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
>     complemented bitmaps.  We will have already advanced past the just
>     iterated bit.  */
>
> -static inline bool
> +inline bool
>  bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
>  {
>    /* If our current word is nonzero, it contains the bit we want.  */
> diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
> index bb6271d4a83..259c4a32d30 100644
> --- a/gcc/c-family/c-common.h
> +++ b/gcc/c-family/c-common.h
> @@ -1326,7 +1326,7 @@ extern const struct c_omp_directive *c_omp_categorize_directive (const char *,
>                                                                  const char *);
>
>  /* Return next tree in the chain for chain_next walking of tree nodes.  */
> -static inline tree
> +inline tree
>  c_tree_chain_next (tree t)
>  {
>    /* TREE_CHAIN of a type is TYPE_STUB_DECL, which is different
> diff --git a/gcc/c/c-parser.h b/gcc/c/c-parser.h
> index 56924c0d83e..545f0f4d9eb 100644
> --- a/gcc/c/c-parser.h
> +++ b/gcc/c/c-parser.h
> @@ -161,7 +161,7 @@ extern bool old_style_parameter_scope (void);
>  /* Return true if the next token from PARSER has the indicated
>     TYPE.  */
>
> -static inline bool
> +inline bool
>  c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
>  {
>    return c_parser_peek_token (parser)->type == type;
> @@ -170,7 +170,7 @@ c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
>  /* Return true if the next token from PARSER does not have the
>     indicated TYPE.  */
>
> -static inline bool
> +inline bool
>  c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
>  {
>    return !c_parser_next_token_is (parser, type);
> @@ -179,7 +179,7 @@ c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
>  /* Return true if the next token from PARSER is the indicated
>     KEYWORD.  */
>
> -static inline bool
> +inline bool
>  c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword)
>  {
>    return c_parser_peek_token (parser)->keyword == keyword;
> diff --git a/gcc/cfghooks.h b/gcc/cfghooks.h
> index aebd080cf8b..7c87712c8d7 100644
> --- a/gcc/cfghooks.h
> +++ b/gcc/cfghooks.h
> @@ -206,7 +206,7 @@ extern void verify_flow_info (void);
>  /* Check control flow invariants, if internal consistency checks are
>     enabled.  */
>
> -static inline void
> +inline void
>  checking_verify_flow_info (void)
>  {
>    /* TODO: Add a separate option for -fchecking=cfg.  */
> diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
> index e98ad06f9b5..e7ac2b5f3db 100644
> --- a/gcc/cfgloop.h
> +++ b/gcc/cfgloop.h
> @@ -280,21 +280,21 @@ public:
>  #define LOOP_C_FINITE          (1 << 1)
>
>  /* Set C to the LOOP constraint.  */
> -static inline void
> +inline void
>  loop_constraint_set (class loop *loop, unsigned c)
>  {
>    loop->constraints |= c;
>  }
>
>  /* Clear C from the LOOP constraint.  */
> -static inline void
> +inline void
>  loop_constraint_clear (class loop *loop, unsigned c)
>  {
>    loop->constraints &= ~c;
>  }
>
>  /* Check if C is set in the LOOP constraint.  */
> -static inline bool
> +inline bool
>  loop_constraint_set_p (class loop *loop, unsigned c)
>  {
>    return (loop->constraints & c) == c;
> @@ -508,7 +508,7 @@ extern void iv_analysis_done (void);
>  extern class niter_desc *get_simple_loop_desc (class loop *loop);
>  extern void free_simple_loop_desc (class loop *loop);
>
> -static inline class niter_desc *
> +inline class niter_desc *
>  simple_loop_desc (class loop *loop)
>  {
>    return loop->simple_loop_desc;
> @@ -518,7 +518,7 @@ simple_loop_desc (class loop *loop)
>
>  /* Returns the loop with index NUM from FNs loop tree.  */
>
> -static inline class loop *
> +inline class loop *
>  get_loop (struct function *fn, unsigned num)
>  {
>    return (*loops_for_fn (fn)->larray)[num];
> @@ -526,7 +526,7 @@ get_loop (struct function *fn, unsigned num)
>
>  /* Returns the number of superloops of LOOP.  */
>
> -static inline unsigned
> +inline unsigned
>  loop_depth (const class loop *loop)
>  {
>    return vec_safe_length (loop->superloops);
> @@ -535,7 +535,7 @@ loop_depth (const class loop *loop)
>  /* Returns the immediate superloop of LOOP, or NULL if LOOP is the outermost
>     loop.  */
>
> -static inline class loop *
> +inline class loop *
>  loop_outer (const class loop *loop)
>  {
>    unsigned n = vec_safe_length (loop->superloops);
> @@ -548,7 +548,7 @@ loop_outer (const class loop *loop)
>
>  /* Returns true if LOOP has at least one exit edge.  */
>
> -static inline bool
> +inline bool
>  loop_has_exit_edges (const class loop *loop)
>  {
>    return loop->exits->next->e != NULL;
> @@ -569,7 +569,7 @@ get_loops (struct function *fn)
>  /* Returns the number of loops in FN (including the removed
>     ones and the fake loop that forms the root of the loop tree).  */
>
> -static inline unsigned
> +inline unsigned
>  number_of_loops (struct function *fn)
>  {
>    struct loops *loops = loops_for_fn (fn);
> @@ -582,13 +582,13 @@ number_of_loops (struct function *fn)
>  /* Returns true if state of the loops satisfies all properties
>     described by FLAGS.  */
>
> -static inline bool
> +inline bool
>  loops_state_satisfies_p (function *fn, unsigned flags)
>  {
>    return (loops_for_fn (fn)->state & flags) == flags;
>  }
>
> -static inline bool
> +inline bool
>  loops_state_satisfies_p (unsigned flags)
>  {
>    return loops_state_satisfies_p (cfun, flags);
> @@ -596,13 +596,13 @@ loops_state_satisfies_p (unsigned flags)
>
>  /* Sets FLAGS to the loops state.  */
>
> -static inline void
> +inline void
>  loops_state_set (function *fn, unsigned flags)
>  {
>    loops_for_fn (fn)->state |= flags;
>  }
>
> -static inline void
> +inline void
>  loops_state_set (unsigned flags)
>  {
>    loops_state_set (cfun, flags);
> @@ -610,13 +610,13 @@ loops_state_set (unsigned flags)
>
>  /* Clears FLAGS from the loops state.  */
>
> -static inline void
> +inline void
>  loops_state_clear (function *fn, unsigned flags)
>  {
>    loops_for_fn (fn)->state &= ~flags;
>  }
>
> -static inline void
> +inline void
>  loops_state_clear (unsigned flags)
>  {
>    if (!current_loops)
> @@ -627,7 +627,7 @@ loops_state_clear (unsigned flags)
>  /* Check loop structure invariants, if internal consistency checks are
>     enabled.  */
>
> -static inline void
> +inline void
>  checking_verify_loop_structure (void)
>  {
>    /* VERIFY_LOOP_STRUCTURE essentially asserts that no loops need fixups.
> @@ -897,7 +897,7 @@ extern void move_loop_invariants (void);
>  extern auto_vec<basic_block> get_loop_hot_path (const class loop *loop);
>
>  /* Returns the outermost loop of the loop nest that contains LOOP.*/
> -static inline class loop *
> +inline class loop *
>  loop_outermost (class loop *loop)
>  {
>    unsigned n = vec_safe_length (loop->superloops);
> @@ -919,7 +919,7 @@ extern int bb_loop_depth (const_basic_block);
>
>  /* Converts VAL to widest_int.  */
>
> -static inline widest_int
> +inline widest_int
>  gcov_type_to_wide_int (gcov_type val)
>  {
>    HOST_WIDE_INT a[2];
> diff --git a/gcc/cgraph.h b/gcc/cgraph.h
> index 5d3ced1b5d5..b5fc739f1b0 100644
> --- a/gcc/cgraph.h
> +++ b/gcc/cgraph.h
> @@ -2650,7 +2650,7 @@ symtab_node::real_symbol_p (void)
>  /* Return true if DECL should have entry in symbol table if used.
>     Those are functions and static & external variables.  */
>
> -static inline bool
> +inline bool
>  decl_in_symtab_p (const_tree decl)
>  {
>    return (TREE_CODE (decl) == FUNCTION_DECL
> @@ -3323,7 +3323,7 @@ cgraph_edge::frequency ()
>
>
>  /* Return true if the TM_CLONE bit is set for a given FNDECL.  */
> -static inline bool
> +inline bool
>  decl_is_tm_clone (const_tree fndecl)
>  {
>    cgraph_node *n = cgraph_node::get (fndecl);
> @@ -3539,7 +3539,7 @@ ipa_polymorphic_call_context::useless_p () const
>     the name documents the intent.  We require that no GC can occur
>     within the fprintf call.  */
>
> -static inline const char *
> +inline const char *
>  xstrdup_for_dump (const char *transient_str)
>  {
>    return ggc_strdup (transient_str);
> diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
> index 9f188724cf2..54997a1adf3 100644
> --- a/gcc/cp/cp-tree.h
> +++ b/gcc/cp/cp-tree.h
> @@ -4238,7 +4238,7 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
>  /* We have an expression tree T that represents a call, either CALL_EXPR
>     or AGGR_INIT_EXPR.  Return a reference to the Nth argument.  */
>
> -static inline tree&
> +inline tree&
>  get_nth_callarg (tree t, int n)
>  {
>    switch (TREE_CODE (t))
> diff --git a/gcc/cselib.h b/gcc/cselib.h
> index 12e54a43d21..e2fa8e8c2c1 100644
> --- a/gcc/cselib.h
> +++ b/gcc/cselib.h
> @@ -113,7 +113,7 @@ extern void dump_cselib_table (FILE *);
>  /* Return the canonical value for VAL, following the equivalence chain
>     towards the earliest (== lowest uid) equivalent value.  */
>
> -static inline cselib_val *
> +inline cselib_val *
>  canonical_cselib_val (cselib_val *val)
>  {
>    cselib_val *canon;
> @@ -131,7 +131,7 @@ canonical_cselib_val (cselib_val *val)
>  /* Return nonzero if we can prove that X and Y contain the same value, taking
>     our gathered information into account.  */
>
> -static inline int
> +inline int
>  rtx_equal_for_cselib_p (rtx x, rtx y)
>  {
>    if (x == y)
> diff --git a/gcc/data-streamer.h b/gcc/data-streamer.h
> index c91c5ab75e8..d8c7e21dad9 100644
> --- a/gcc/data-streamer.h
> +++ b/gcc/data-streamer.h
> @@ -91,7 +91,7 @@ wide_int streamer_read_wide_int (class lto_input_block *);
>  widest_int streamer_read_widest_int (class lto_input_block *);
>
>  /* Returns a new bit-packing context for bit-packing into S.  */
> -static inline struct bitpack_d
> +inline struct bitpack_d
>  bitpack_create (struct lto_output_stream *s)
>  {
>    struct bitpack_d bp;
> @@ -102,7 +102,7 @@ bitpack_create (struct lto_output_stream *s)
>  }
>
>  /* Pack the NBITS bit sized value VAL into the bit-packing context BP.  */
> -static inline void
> +inline void
>  bp_pack_value (struct bitpack_d *bp, bitpack_word_t val, unsigned nbits)
>  {
>    bitpack_word_t word = bp->word;
> @@ -132,7 +132,7 @@ bp_pack_value (struct bitpack_d *bp, bitpack_word_t val, unsigned nbits)
>
>  /* Pack VAL into the bit-packing context BP, using NBITS for each
>     coefficient.  */
> -static inline void
> +inline void
>  bp_pack_poly_value (struct bitpack_d *bp,
>                     const poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t> &val,
>                     unsigned nbits)
> @@ -142,7 +142,7 @@ bp_pack_poly_value (struct bitpack_d *bp,
>  }
>
>  /* Finishes bit-packing of BP.  */
> -static inline void
> +inline void
>  streamer_write_bitpack (struct bitpack_d *bp)
>  {
>    streamer_write_uhwi_stream ((struct lto_output_stream *) bp->stream,
> @@ -152,7 +152,7 @@ streamer_write_bitpack (struct bitpack_d *bp)
>  }
>
>  /* Returns a new bit-packing context for bit-unpacking from IB.  */
> -static inline struct bitpack_d
> +inline struct bitpack_d
>  streamer_read_bitpack (class lto_input_block *ib)
>  {
>    struct bitpack_d bp;
> @@ -163,7 +163,7 @@ streamer_read_bitpack (class lto_input_block *ib)
>  }
>
>  /* Unpacks NBITS bits from the bit-packing context BP and returns them.  */
> -static inline bitpack_word_t
> +inline bitpack_word_t
>  bp_unpack_value (struct bitpack_d *bp, unsigned nbits)
>  {
>    bitpack_word_t mask, val;
> @@ -191,7 +191,7 @@ bp_unpack_value (struct bitpack_d *bp, unsigned nbits)
>
>  /* Unpacks a polynomial value from the bit-packing context BP in which each
>     coefficient has NBITS bits.  */
> -static inline poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t>
> +inline poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t>
>  bp_unpack_poly_value (struct bitpack_d *bp, unsigned nbits)
>  {
>    poly_int_pod<NUM_POLY_INT_COEFFS, bitpack_word_t> x;
> @@ -203,7 +203,7 @@ bp_unpack_poly_value (struct bitpack_d *bp, unsigned nbits)
>
>  /* Write a character to the output block.  */
>
> -static inline void
> +inline void
>  streamer_write_char_stream (struct lto_output_stream *obs, char c)
>  {
>    /* No space left.  */
> @@ -221,7 +221,7 @@ streamer_write_char_stream (struct lto_output_stream *obs, char c)
>
>  /* Read byte from the input block.  */
>
> -static inline unsigned char
> +inline unsigned char
>  streamer_read_uchar (class lto_input_block *ib)
>  {
>    if (ib->p >= ib->len)
> @@ -233,7 +233,7 @@ streamer_read_uchar (class lto_input_block *ib)
>     to be compile time constant.
>     Be host independent, limit range to 31bits.  */
>
> -static inline void
> +inline void
>  streamer_write_hwi_in_range (struct lto_output_stream *obs,
>                                   HOST_WIDE_INT min,
>                                   HOST_WIDE_INT max,
> @@ -251,7 +251,7 @@ streamer_write_hwi_in_range (struct lto_output_stream *obs,
>  /* Input VAL into OBS and verify it is in range MIN...MAX that is supposed
>     to be compile time constant.  PURPOSE is used for error reporting.  */
>
> -static inline HOST_WIDE_INT
> +inline HOST_WIDE_INT
>  streamer_read_hwi_in_range (class lto_input_block *ib,
>                                  const char *purpose,
>                                  HOST_WIDE_INT min,
> @@ -272,7 +272,7 @@ streamer_read_hwi_in_range (class lto_input_block *ib,
>     to be compile time constant.
>     Be host independent, limit range to 31bits.  */
>
> -static inline void
> +inline void
>  bp_pack_int_in_range (struct bitpack_d *bp,
>                       HOST_WIDE_INT min,
>                       HOST_WIDE_INT max,
> @@ -291,7 +291,7 @@ bp_pack_int_in_range (struct bitpack_d *bp,
>  /* Input VAL into BP and verify it is in range MIN...MAX that is supposed
>     to be compile time constant.  PURPOSE is used for error reporting.  */
>
> -static inline HOST_WIDE_INT
> +inline HOST_WIDE_INT
>  bp_unpack_int_in_range (struct bitpack_d *bp,
>                         const char *purpose,
>                         HOST_WIDE_INT min,
> @@ -332,7 +332,7 @@ bp_unpack_int_in_range (struct bitpack_d *bp,
>
>  /* Output the start of a record with TAG to output block OB.  */
>
> -static inline void
> +inline void
>  streamer_write_record_start (struct output_block *ob, enum LTO_tags tag)
>  {
>    streamer_write_enum (ob->main_stream, LTO_tags, LTO_NUM_TAGS, tag);
> @@ -340,7 +340,7 @@ streamer_write_record_start (struct output_block *ob, enum LTO_tags tag)
>
>  /* Return the next tag in the input block IB.  */
>
> -static inline enum LTO_tags
> +inline enum LTO_tags
>  streamer_read_record_start (class lto_input_block *ib)
>  {
>    return streamer_read_enum (ib, LTO_tags, LTO_NUM_TAGS);
> diff --git a/gcc/debug.h b/gcc/debug.h
> index 799d5e316a2..05512bce48c 100644
> --- a/gcc/debug.h
> +++ b/gcc/debug.h
> @@ -270,7 +270,7 @@ extern decl_to_instance_map_t *decl_to_instance_map;
>  /* Allocate decl_to_instance_map with COUNT slots to begin wtih, if it
>   * hasn't been allocated yet.  */
>
> -static inline decl_to_instance_map_t *
> +inline decl_to_instance_map_t *
>  maybe_create_decl_to_instance_map (int count = 13)
>  {
>    if (!decl_to_instance_map)
> diff --git a/gcc/df.h b/gcc/df.h
> index b2d1300f6d4..aec2223591a 100644
> --- a/gcc/df.h
> +++ b/gcc/df.h
> @@ -1097,7 +1097,7 @@ extern void df_scan_verify (void);
>     Public functions access functions for the dataflow problems.
>  ----------------------------------------------------------------------------*/
>
> -static inline struct df_scan_bb_info *
> +inline struct df_scan_bb_info *
>  df_scan_get_bb_info (unsigned int index)
>  {
>    if (index < df_scan->block_info_size)
> @@ -1106,7 +1106,7 @@ df_scan_get_bb_info (unsigned int index)
>      return NULL;
>  }
>
> -static inline class df_rd_bb_info *
> +inline class df_rd_bb_info *
>  df_rd_get_bb_info (unsigned int index)
>  {
>    if (index < df_rd->block_info_size)
> @@ -1115,7 +1115,7 @@ df_rd_get_bb_info (unsigned int index)
>      return NULL;
>  }
>
> -static inline class df_lr_bb_info *
> +inline class df_lr_bb_info *
>  df_lr_get_bb_info (unsigned int index)
>  {
>    if (index < df_lr->block_info_size)
> @@ -1124,7 +1124,7 @@ df_lr_get_bb_info (unsigned int index)
>      return NULL;
>  }
>
> -static inline class df_md_bb_info *
> +inline class df_md_bb_info *
>  df_md_get_bb_info (unsigned int index)
>  {
>    if (index < df_md->block_info_size)
> @@ -1133,7 +1133,7 @@ df_md_get_bb_info (unsigned int index)
>      return NULL;
>  }
>
> -static inline class df_live_bb_info *
> +inline class df_live_bb_info *
>  df_live_get_bb_info (unsigned int index)
>  {
>    if (index < df_live->block_info_size)
> @@ -1142,7 +1142,7 @@ df_live_get_bb_info (unsigned int index)
>      return NULL;
>  }
>
> -static inline class df_word_lr_bb_info *
> +inline class df_word_lr_bb_info *
>  df_word_lr_get_bb_info (unsigned int index)
>  {
>    if (index < df_word_lr->block_info_size)
> @@ -1151,7 +1151,7 @@ df_word_lr_get_bb_info (unsigned int index)
>      return NULL;
>  }
>
> -static inline class df_mir_bb_info *
> +inline class df_mir_bb_info *
>  df_mir_get_bb_info (unsigned int index)
>  {
>    if (index < df_mir->block_info_size)
> @@ -1165,7 +1165,7 @@ df_mir_get_bb_info (unsigned int index)
>     choose different dataflow problems depending on the optimization
>     level.  */
>
> -static inline bitmap
> +inline bitmap
>  df_get_live_out (basic_block bb)
>  {
>    gcc_checking_assert (df_lr);
> @@ -1181,7 +1181,7 @@ df_get_live_out (basic_block bb)
>     choose different dataflow problems depending on the optimization
>     level.  */
>
> -static inline bitmap
> +inline bitmap
>  df_get_live_in (basic_block bb)
>  {
>    gcc_checking_assert (df_lr);
> @@ -1195,7 +1195,7 @@ df_get_live_in (basic_block bb)
>  /* Get basic block info.  */
>  /* Get the artificial defs for a basic block.  */
>
> -static inline df_ref
> +inline df_ref
>  df_get_artificial_defs (unsigned int bb_index)
>  {
>    return df_scan_get_bb_info (bb_index)->artificial_defs;
> @@ -1204,7 +1204,7 @@ df_get_artificial_defs (unsigned int bb_index)
>
>  /* Get the artificial uses for a basic block.  */
>
> -static inline df_ref
> +inline df_ref
>  df_get_artificial_uses (unsigned int bb_index)
>  {
>    return df_scan_get_bb_info (bb_index)->artificial_uses;
> @@ -1213,7 +1213,7 @@ df_get_artificial_uses (unsigned int bb_index)
>  /* If INSN defines exactly one register, return the associated reference,
>     otherwise return null.  */
>
> -static inline df_ref
> +inline df_ref
>  df_single_def (const df_insn_info *info)
>  {
>    df_ref defs = DF_INSN_INFO_DEFS (info);
> @@ -1223,7 +1223,7 @@ df_single_def (const df_insn_info *info)
>  /* If INSN uses exactly one register, return the associated reference,
>     otherwise return null.  */
>
> -static inline df_ref
> +inline df_ref
>  df_single_use (const df_insn_info *info)
>  {
>    df_ref uses = DF_INSN_INFO_USES (info);
> diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
> index e20f6edfc81..e7390e49554 100644
> --- a/gcc/diagnostic.h
> +++ b/gcc/diagnostic.h
> @@ -416,7 +416,7 @@ struct diagnostic_context
>    diagnostic_client_data_hooks *m_client_data_hooks;
>  };
>
> -static inline void
> +inline void
>  diagnostic_inhibit_notes (diagnostic_context * context)
>  {
>    context->inhibit_notes_p = true;
> @@ -474,7 +474,7 @@ extern diagnostic_context *global_dc;
>  /* Override the option index to be used for reporting a
>     diagnostic.  */
>
> -static inline void
> +inline void
>  diagnostic_override_option_index (diagnostic_info *info, int optidx)
>  {
>    info->option_index = optidx;
> @@ -546,7 +546,7 @@ int get_terminal_width (void);
>  /* Return the location associated to this diagnostic. Parameter WHICH
>     specifies which location. By default, expand the first one.  */
>
> -static inline location_t
> +inline location_t
>  diagnostic_location (const diagnostic_info * diagnostic, int which = 0)
>  {
>    return diagnostic->message.get_location (which);
> @@ -554,7 +554,7 @@ diagnostic_location (const diagnostic_info * diagnostic, int which = 0)
>
>  /* Return the number of locations to be printed in DIAGNOSTIC.  */
>
> -static inline unsigned int
> +inline unsigned int
>  diagnostic_num_locations (const diagnostic_info * diagnostic)
>  {
>    return diagnostic->message.m_richloc->get_num_locations ();
> @@ -564,7 +564,7 @@ diagnostic_num_locations (const diagnostic_info * diagnostic)
>     consistency.  Parameter WHICH specifies which location. By default,
>     expand the first one.  */
>
> -static inline expanded_location
> +inline expanded_location
>  diagnostic_expand_location (const diagnostic_info * diagnostic, int which = 0)
>  {
>    return diagnostic->richloc->get_expanded_location (which);
> @@ -579,7 +579,7 @@ const int CARET_LINE_MARGIN = 10;
>     caret line.  This is used to build a prefix and also to determine
>     whether to print one or two caret lines.  */
>
> -static inline bool
> +inline bool
>  diagnostic_same_line (const diagnostic_context *context,
>                        expanded_location s1, expanded_location s2)
>  {
> diff --git a/gcc/dominance.h b/gcc/dominance.h
> index 3c5a345f478..ddac0f58050 100644
> --- a/gcc/dominance.h
> +++ b/gcc/dominance.h
> @@ -69,7 +69,7 @@ extern void verify_dominators (enum cdi_direction);
>  /* Verify invariants of computed dominance information, if internal consistency
>     checks are enabled.  */
>
> -static inline void
> +inline void
>  checking_verify_dominators (cdi_direction dir)
>  {
>    if (flag_checking)
> diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
> index 5b97c5ca8b5..7d5eca899dc 100644
> --- a/gcc/dumpfile.h
> +++ b/gcc/dumpfile.h
> @@ -208,27 +208,27 @@ enum dump_flag : uint32_t
>
>  typedef enum dump_flag dump_flags_t;
>
> -static inline dump_flags_t
> +inline dump_flags_t
>  operator| (dump_flags_t lhs, dump_flags_t rhs)
>  {
>    return (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
>                         | (std::underlying_type<dump_flags_t>::type)rhs);
>  }
>
> -static inline dump_flags_t
> +inline dump_flags_t
>  operator& (dump_flags_t lhs, dump_flags_t rhs)
>  {
>    return (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
>                         & (std::underlying_type<dump_flags_t>::type)rhs);
>  }
>
> -static inline dump_flags_t
> +inline dump_flags_t
>  operator~ (dump_flags_t flags)
>  {
>    return (dump_flags_t)~((std::underlying_type<dump_flags_t>::type)flags);
>  }
>
> -static inline dump_flags_t &
> +inline dump_flags_t &
>  operator|= (dump_flags_t &lhs, dump_flags_t rhs)
>  {
>    lhs = (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
> @@ -236,7 +236,7 @@ operator|= (dump_flags_t &lhs, dump_flags_t rhs)
>    return lhs;
>  }
>
> -static inline dump_flags_t &
> +inline dump_flags_t &
>  operator&= (dump_flags_t &lhs, dump_flags_t rhs)
>  {
>    lhs = (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
> @@ -276,14 +276,14 @@ enum optgroup_flag
>
>  typedef enum optgroup_flag optgroup_flags_t;
>
> -static inline optgroup_flags_t
> +inline optgroup_flags_t
>  operator| (optgroup_flags_t lhs, optgroup_flags_t rhs)
>  {
>    return (optgroup_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
>                             | (std::underlying_type<dump_flags_t>::type)rhs);
>  }
>
> -static inline optgroup_flags_t &
> +inline optgroup_flags_t &
>  operator|= (optgroup_flags_t &lhs, optgroup_flags_t rhs)
>  {
>    lhs = (optgroup_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
> @@ -528,7 +528,7 @@ extern bool dumps_are_enabled;
>  extern void set_dump_file (FILE *new_dump_file);
>
>  /* Return true if any of the dumps is enabled, false otherwise. */
> -static inline bool
> +inline bool
>  dump_enabled_p (void)
>  {
>    return dumps_are_enabled;
> diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
> index 483e0bb96ee..c472c736cb6 100644
> --- a/gcc/emit-rtl.h
> +++ b/gcc/emit-rtl.h
> @@ -400,7 +400,7 @@ extern bool need_atomic_barrier_p (enum memmodel, bool);
>
>  /* Return the current sequence.  */
>
> -static inline struct sequence_stack *
> +inline struct sequence_stack *
>  get_current_sequence (void)
>  {
>    return &crtl->emit.seq;
> @@ -408,7 +408,7 @@ get_current_sequence (void)
>
>  /* Return the outermost sequence.  */
>
> -static inline struct sequence_stack *
> +inline struct sequence_stack *
>  get_topmost_sequence (void)
>  {
>    struct sequence_stack *seq, *top;
> @@ -424,7 +424,7 @@ get_topmost_sequence (void)
>
>  /* Return the first insn of the current sequence or current function.  */
>
> -static inline rtx_insn *
> +inline rtx_insn *
>  get_insns (void)
>  {
>    return get_current_sequence ()->first;
> @@ -432,7 +432,7 @@ get_insns (void)
>
>  /* Specify a new insn as the first in the chain.  */
>
> -static inline void
> +inline void
>  set_first_insn (rtx_insn *insn)
>  {
>    gcc_checking_assert (!insn || !PREV_INSN (insn));
> @@ -441,7 +441,7 @@ set_first_insn (rtx_insn *insn)
>
>  /* Return the last insn emitted in current sequence or current function.  */
>
> -static inline rtx_insn *
> +inline rtx_insn *
>  get_last_insn (void)
>  {
>    return get_current_sequence ()->last;
> @@ -449,7 +449,7 @@ get_last_insn (void)
>
>  /* Specify a new insn as the last in the chain.  */
>
> -static inline void
> +inline void
>  set_last_insn (rtx_insn *insn)
>  {
>    gcc_checking_assert (!insn || !NEXT_INSN (insn));
> @@ -458,7 +458,7 @@ set_last_insn (rtx_insn *insn)
>
>  /* Return a number larger than any instruction's uid in this function.  */
>
> -static inline int
> +inline int
>  get_max_uid (void)
>  {
>    return crtl->emit.x_cur_insn_uid;
> diff --git a/gcc/except.h b/gcc/except.h
> index 2b5c9feb705..5ecdbc0d1dc 100644
> --- a/gcc/except.h
> +++ b/gcc/except.h
> @@ -302,7 +302,7 @@ function_needs_eh_personality (struct function *);
>
>  /* Pre-order iteration within the eh_region tree.  */
>
> -static inline eh_region
> +inline eh_region
>  ehr_next (eh_region r, eh_region start)
>  {
>    if (r->inner)
> diff --git a/gcc/expmed.h b/gcc/expmed.h
> index 0419e2dac85..c1aee00c616 100644
> --- a/gcc/expmed.h
> +++ b/gcc/expmed.h
> @@ -191,7 +191,7 @@ extern struct target_expmed *this_target_expmed;
>
>  /* Return a pointer to the alg_hash_entry at IDX.  */
>
> -static inline struct alg_hash_entry *
> +inline struct alg_hash_entry *
>  alg_hash_entry_ptr (int idx)
>  {
>    return &this_target_expmed->x_alg_hash[idx];
> @@ -199,7 +199,7 @@ alg_hash_entry_ptr (int idx)
>
>  /* Return true if the x_alg_hash field might have been used.  */
>
> -static inline bool
> +inline bool
>  alg_hash_used_p (void)
>  {
>    return this_target_expmed->x_alg_hash_used_p;
> @@ -207,7 +207,7 @@ alg_hash_used_p (void)
>
>  /* Set whether the x_alg_hash field might have been used.  */
>
> -static inline void
> +inline void
>  set_alg_hash_used_p (bool usedp)
>  {
>    this_target_expmed->x_alg_hash_used_p = usedp;
> @@ -215,7 +215,7 @@ set_alg_hash_used_p (bool usedp)
>
>  /* Compute an index into the cost arrays by mode class.  */
>
> -static inline int
> +inline int
>  expmed_mode_index (machine_mode mode)
>  {
>    switch (GET_MODE_CLASS (mode))
> @@ -244,7 +244,7 @@ expmed_mode_index (machine_mode mode)
>     a particular operation performed in MODE is cheap when optimizing
>     for SPEED.  */
>
> -static inline bool *
> +inline bool *
>  expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
>                      machine_mode mode)
>  {
> @@ -255,7 +255,7 @@ expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
>  /* Return a pointer to a cost contained in COSTS when a particular
>     operation is performed in MODE when optimizing for SPEED.  */
>
> -static inline int *
> +inline int *
>  expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
>                     machine_mode mode)
>  {
> @@ -265,7 +265,7 @@ expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
>
>  /* Subroutine of {set_,}sdiv_pow2_cheap.  Not to be used otherwise.  */
>
> -static inline bool *
> +inline bool *
>  sdiv_pow2_cheap_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cheap_ptr (&this_target_expmed->x_sdiv_pow2_cheap,
> @@ -275,7 +275,7 @@ sdiv_pow2_cheap_ptr (bool speed, machine_mode mode)
>  /* Set whether a signed division by a power of 2 is cheap in MODE
>     when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_sdiv_pow2_cheap (bool speed, machine_mode mode, bool cheap_p)
>  {
>    *sdiv_pow2_cheap_ptr (speed, mode) = cheap_p;
> @@ -284,7 +284,7 @@ set_sdiv_pow2_cheap (bool speed, machine_mode mode, bool cheap_p)
>  /* Return whether a signed division by a power of 2 is cheap in MODE
>     when optimizing for SPEED.  */
>
> -static inline bool
> +inline bool
>  sdiv_pow2_cheap (bool speed, machine_mode mode)
>  {
>    return *sdiv_pow2_cheap_ptr (speed, mode);
> @@ -292,7 +292,7 @@ sdiv_pow2_cheap (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}smod_pow2_cheap.  Not to be used otherwise.  */
>
> -static inline bool *
> +inline bool *
>  smod_pow2_cheap_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cheap_ptr (&this_target_expmed->x_smod_pow2_cheap,
> @@ -302,7 +302,7 @@ smod_pow2_cheap_ptr (bool speed, machine_mode mode)
>  /* Set whether a signed modulo by a power of 2 is CHEAP in MODE when
>     optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_smod_pow2_cheap (bool speed, machine_mode mode, bool cheap)
>  {
>    *smod_pow2_cheap_ptr (speed, mode) = cheap;
> @@ -311,7 +311,7 @@ set_smod_pow2_cheap (bool speed, machine_mode mode, bool cheap)
>  /* Return whether a signed modulo by a power of 2 is cheap in MODE
>     when optimizing for SPEED.  */
>
> -static inline bool
> +inline bool
>  smod_pow2_cheap (bool speed, machine_mode mode)
>  {
>    return *smod_pow2_cheap_ptr (speed, mode);
> @@ -319,7 +319,7 @@ smod_pow2_cheap (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}zero_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  zero_cost_ptr (bool speed)
>  {
>    return &this_target_expmed->x_zero_cost[speed];
> @@ -327,7 +327,7 @@ zero_cost_ptr (bool speed)
>
>  /* Set the COST of loading zero when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_zero_cost (bool speed, int cost)
>  {
>    *zero_cost_ptr (speed) = cost;
> @@ -335,7 +335,7 @@ set_zero_cost (bool speed, int cost)
>
>  /* Return the COST of loading zero when optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  zero_cost (bool speed)
>  {
>    return *zero_cost_ptr (speed);
> @@ -343,7 +343,7 @@ zero_cost (bool speed)
>
>  /* Subroutine of {set_,}add_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  add_cost_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_add_cost, speed, mode);
> @@ -351,7 +351,7 @@ add_cost_ptr (bool speed, machine_mode mode)
>
>  /* Set the COST of computing an add in MODE when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_add_cost (bool speed, machine_mode mode, int cost)
>  {
>    *add_cost_ptr (speed, mode) = cost;
> @@ -359,7 +359,7 @@ set_add_cost (bool speed, machine_mode mode, int cost)
>
>  /* Return the cost of computing an add in MODE when optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  add_cost (bool speed, machine_mode mode)
>  {
>    return *add_cost_ptr (speed, mode);
> @@ -367,7 +367,7 @@ add_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}neg_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  neg_cost_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_neg_cost, speed, mode);
> @@ -375,7 +375,7 @@ neg_cost_ptr (bool speed, machine_mode mode)
>
>  /* Set the COST of computing a negation in MODE when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_neg_cost (bool speed, machine_mode mode, int cost)
>  {
>    *neg_cost_ptr (speed, mode) = cost;
> @@ -384,7 +384,7 @@ set_neg_cost (bool speed, machine_mode mode, int cost)
>  /* Return the cost of computing a negation in MODE when optimizing for
>     SPEED.  */
>
> -static inline int
> +inline int
>  neg_cost (bool speed, machine_mode mode)
>  {
>    return *neg_cost_ptr (speed, mode);
> @@ -392,7 +392,7 @@ neg_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}shift_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  shift_cost_ptr (bool speed, machine_mode mode, int bits)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_shift_cost[bits],
> @@ -401,7 +401,7 @@ shift_cost_ptr (bool speed, machine_mode mode, int bits)
>
>  /* Set the COST of doing a shift in MODE by BITS when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_shift_cost (bool speed, machine_mode mode, int bits, int cost)
>  {
>    *shift_cost_ptr (speed, mode, bits) = cost;
> @@ -410,7 +410,7 @@ set_shift_cost (bool speed, machine_mode mode, int bits, int cost)
>  /* Return the cost of doing a shift in MODE by BITS when optimizing for
>     SPEED.  */
>
> -static inline int
> +inline int
>  shift_cost (bool speed, machine_mode mode, int bits)
>  {
>    return *shift_cost_ptr (speed, mode, bits);
> @@ -418,7 +418,7 @@ shift_cost (bool speed, machine_mode mode, int bits)
>
>  /* Subroutine of {set_,}shiftadd_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  shiftadd_cost_ptr (bool speed, machine_mode mode, int bits)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_shiftadd_cost[bits],
> @@ -428,7 +428,7 @@ shiftadd_cost_ptr (bool speed, machine_mode mode, int bits)
>  /* Set the COST of doing a shift in MODE by BITS followed by an add when
>     optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_shiftadd_cost (bool speed, machine_mode mode, int bits, int cost)
>  {
>    *shiftadd_cost_ptr (speed, mode, bits) = cost;
> @@ -437,7 +437,7 @@ set_shiftadd_cost (bool speed, machine_mode mode, int bits, int cost)
>  /* Return the cost of doing a shift in MODE by BITS followed by an add
>     when optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  shiftadd_cost (bool speed, machine_mode mode, int bits)
>  {
>    return *shiftadd_cost_ptr (speed, mode, bits);
> @@ -445,7 +445,7 @@ shiftadd_cost (bool speed, machine_mode mode, int bits)
>
>  /* Subroutine of {set_,}shiftsub0_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  shiftsub0_cost_ptr (bool speed, machine_mode mode, int bits)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub0_cost[bits],
> @@ -455,7 +455,7 @@ shiftsub0_cost_ptr (bool speed, machine_mode mode, int bits)
>  /* Set the COST of doing a shift in MODE by BITS and then subtracting a
>     value when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_shiftsub0_cost (bool speed, machine_mode mode, int bits, int cost)
>  {
>    *shiftsub0_cost_ptr (speed, mode, bits) = cost;
> @@ -464,7 +464,7 @@ set_shiftsub0_cost (bool speed, machine_mode mode, int bits, int cost)
>  /* Return the cost of doing a shift in MODE by BITS and then subtracting
>     a value when optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  shiftsub0_cost (bool speed, machine_mode mode, int bits)
>  {
>    return *shiftsub0_cost_ptr (speed, mode, bits);
> @@ -472,7 +472,7 @@ shiftsub0_cost (bool speed, machine_mode mode, int bits)
>
>  /* Subroutine of {set_,}shiftsub1_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  shiftsub1_cost_ptr (bool speed, machine_mode mode, int bits)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub1_cost[bits],
> @@ -482,7 +482,7 @@ shiftsub1_cost_ptr (bool speed, machine_mode mode, int bits)
>  /* Set the COST of subtracting a shift in MODE by BITS from a value when
>     optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_shiftsub1_cost (bool speed, machine_mode mode, int bits, int cost)
>  {
>    *shiftsub1_cost_ptr (speed, mode, bits) = cost;
> @@ -491,7 +491,7 @@ set_shiftsub1_cost (bool speed, machine_mode mode, int bits, int cost)
>  /* Return the cost of subtracting a shift in MODE by BITS from a value
>     when optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  shiftsub1_cost (bool speed, machine_mode mode, int bits)
>  {
>    return *shiftsub1_cost_ptr (speed, mode, bits);
> @@ -499,7 +499,7 @@ shiftsub1_cost (bool speed, machine_mode mode, int bits)
>
>  /* Subroutine of {set_,}mul_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  mul_cost_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_mul_cost, speed, mode);
> @@ -508,7 +508,7 @@ mul_cost_ptr (bool speed, machine_mode mode)
>  /* Set the COST of doing a multiplication in MODE when optimizing for
>     SPEED.  */
>
> -static inline void
> +inline void
>  set_mul_cost (bool speed, machine_mode mode, int cost)
>  {
>    *mul_cost_ptr (speed, mode) = cost;
> @@ -517,7 +517,7 @@ set_mul_cost (bool speed, machine_mode mode, int cost)
>  /* Return the cost of doing a multiplication in MODE when optimizing
>     for SPEED.  */
>
> -static inline int
> +inline int
>  mul_cost (bool speed, machine_mode mode)
>  {
>    return *mul_cost_ptr (speed, mode);
> @@ -525,7 +525,7 @@ mul_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}sdiv_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  sdiv_cost_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_sdiv_cost, speed, mode);
> @@ -534,7 +534,7 @@ sdiv_cost_ptr (bool speed, machine_mode mode)
>  /* Set the COST of doing a signed division in MODE when optimizing
>     for SPEED.  */
>
> -static inline void
> +inline void
>  set_sdiv_cost (bool speed, machine_mode mode, int cost)
>  {
>    *sdiv_cost_ptr (speed, mode) = cost;
> @@ -543,7 +543,7 @@ set_sdiv_cost (bool speed, machine_mode mode, int cost)
>  /* Return the cost of doing a signed division in MODE when optimizing
>     for SPEED.  */
>
> -static inline int
> +inline int
>  sdiv_cost (bool speed, machine_mode mode)
>  {
>    return *sdiv_cost_ptr (speed, mode);
> @@ -551,7 +551,7 @@ sdiv_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}udiv_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  udiv_cost_ptr (bool speed, machine_mode mode)
>  {
>    return expmed_op_cost_ptr (&this_target_expmed->x_udiv_cost, speed, mode);
> @@ -560,7 +560,7 @@ udiv_cost_ptr (bool speed, machine_mode mode)
>  /* Set the COST of doing an unsigned division in MODE when optimizing
>     for SPEED.  */
>
> -static inline void
> +inline void
>  set_udiv_cost (bool speed, machine_mode mode, int cost)
>  {
>    *udiv_cost_ptr (speed, mode) = cost;
> @@ -569,7 +569,7 @@ set_udiv_cost (bool speed, machine_mode mode, int cost)
>  /* Return the cost of doing an unsigned division in MODE when
>     optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  udiv_cost (bool speed, machine_mode mode)
>  {
>    return *udiv_cost_ptr (speed, mode);
> @@ -577,7 +577,7 @@ udiv_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}mul_widen_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  mul_widen_cost_ptr (bool speed, machine_mode mode)
>  {
>    gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
> @@ -588,7 +588,7 @@ mul_widen_cost_ptr (bool speed, machine_mode mode)
>  /* Set the COST for computing a widening multiplication in MODE when
>     optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_mul_widen_cost (bool speed, machine_mode mode, int cost)
>  {
>    *mul_widen_cost_ptr (speed, mode) = cost;
> @@ -597,7 +597,7 @@ set_mul_widen_cost (bool speed, machine_mode mode, int cost)
>  /* Return the cost for computing a widening multiplication in MODE when
>     optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  mul_widen_cost (bool speed, machine_mode mode)
>  {
>    return *mul_widen_cost_ptr (speed, mode);
> @@ -605,7 +605,7 @@ mul_widen_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}mul_highpart_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  mul_highpart_cost_ptr (bool speed, machine_mode mode)
>  {
>    gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
> @@ -618,7 +618,7 @@ mul_highpart_cost_ptr (bool speed, machine_mode mode)
>  /* Set the COST for computing the high part of a multiplication in MODE
>     when optimizing for SPEED.  */
>
> -static inline void
> +inline void
>  set_mul_highpart_cost (bool speed, machine_mode mode, int cost)
>  {
>    *mul_highpart_cost_ptr (speed, mode) = cost;
> @@ -627,7 +627,7 @@ set_mul_highpart_cost (bool speed, machine_mode mode, int cost)
>  /* Return the cost for computing the high part of a multiplication in MODE
>     when optimizing for SPEED.  */
>
> -static inline int
> +inline int
>  mul_highpart_cost (bool speed, machine_mode mode)
>  {
>    return *mul_highpart_cost_ptr (speed, mode);
> @@ -635,7 +635,7 @@ mul_highpart_cost (bool speed, machine_mode mode)
>
>  /* Subroutine of {set_,}convert_cost.  Not to be used otherwise.  */
>
> -static inline int *
> +inline int *
>  convert_cost_ptr (machine_mode to_mode, machine_mode from_mode,
>                   bool speed)
>  {
> @@ -651,7 +651,7 @@ convert_cost_ptr (machine_mode to_mode, machine_mode from_mode,
>  /* Set the COST for converting from FROM_MODE to TO_MODE when optimizing
>     for SPEED.  */
>
> -static inline void
> +inline void
>  set_convert_cost (machine_mode to_mode, machine_mode from_mode,
>                   bool speed, int cost)
>  {
> @@ -661,7 +661,7 @@ set_convert_cost (machine_mode to_mode, machine_mode from_mode,
>  /* Return the cost for converting from FROM_MODE to TO_MODE when optimizing
>     for SPEED.  */
>
> -static inline int
> +inline int
>  convert_cost (machine_mode to_mode, machine_mode from_mode,
>               bool speed)
>  {
> diff --git a/gcc/expr.h b/gcc/expr.h
> index e3ba9eb5370..0c059ed9023 100644
> --- a/gcc/expr.h
> +++ b/gcc/expr.h
> @@ -84,19 +84,19 @@ extern rtx convert_wider_int_to_float (machine_mode mode, machine_mode imode,
>  extern rtx emit_block_op_via_libcall (enum built_in_function, rtx, rtx, rtx,
>                                       bool);
>
> -static inline rtx
> +inline rtx
>  emit_block_copy_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
>  {
>    return emit_block_op_via_libcall (BUILT_IN_MEMCPY, dst, src, size, tailcall);
>  }
>
> -static inline rtx
> +inline rtx
>  emit_block_move_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
>  {
>    return emit_block_op_via_libcall (BUILT_IN_MEMMOVE, dst, src, size, tailcall);
>  }
>
> -static inline rtx
> +inline rtx
>  emit_block_comp_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
>  {
>    return emit_block_op_via_libcall (BUILT_IN_MEMCMP, dst, src, size, tailcall);
> @@ -178,14 +178,14 @@ extern void clobber_reg_mode (rtx *, rtx, machine_mode);
>  extern rtx copy_blkmode_to_reg (machine_mode, tree);
>
>  /* Mark REG as holding a parameter for the next CALL_INSN.  */
> -static inline void
> +inline void
>  use_reg (rtx *fusage, rtx reg)
>  {
>    use_reg_mode (fusage, reg, VOIDmode);
>  }
>
>  /* Mark REG as clobbered by the call with FUSAGE as CALL_INSN_FUNCTION_USAGE.  */
> -static inline void
> +inline void
>  clobber_reg (rtx *fusage, rtx reg)
>  {
>    clobber_reg_mode (fusage, reg, VOIDmode);
> @@ -303,14 +303,14 @@ extern rtx expand_expr_real_2 (sepops, rtx, machine_mode,
>  /* Generate code for computing expression EXP.
>     An rtx for the computed value is returned.  The value is never null.
>     In the case of a void EXP, const0_rtx is returned.  */
> -static inline rtx
> +inline rtx
>  expand_expr (tree exp, rtx target, machine_mode mode,
>              enum expand_modifier modifier)
>  {
>    return expand_expr_real (exp, target, mode, modifier, NULL, false);
>  }
>
> -static inline rtx
> +inline rtx
>  expand_normal (tree exp)
>  {
>    return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL, false);
> diff --git a/gcc/fixed-value.h b/gcc/fixed-value.h
> index f16e41a32fa..8d1002ac6f0 100644
> --- a/gcc/fixed-value.h
> +++ b/gcc/fixed-value.h
> @@ -51,7 +51,7 @@ extern FIXED_VALUE_TYPE fixed_from_double_int (double_int, scalar_mode);
>
>  /* Return a CONST_FIXED from a bit payload and machine mode MODE.
>     The bits in PAYLOAD are sign-extended/zero-extended according to MODE.  */
> -static inline rtx
> +inline rtx
>  const_fixed_from_double_int (double_int payload,
>                              scalar_mode mode)
>  {
> diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
> index 9884a55882b..2fd15004534 100644
> --- a/gcc/fortran/gfortran.h
> +++ b/gcc/fortran/gfortran.h
> @@ -3273,7 +3273,7 @@ void gfc_done_2 (void);
>  int get_c_kind (const char *, CInteropKind_t *);
>
>  const char *gfc_closest_fuzzy_match (const char *, char **);
> -static inline void
> +inline void
>  vec_push (char **&optr, size_t &osz, const char *elt)
>  {
>    /* {auto,}vec.safe_push () replacement.  Don't ask..  */
> @@ -3549,7 +3549,7 @@ void gfc_intrinsic_done_1 (void);
>
>  char gfc_type_letter (bt, bool logical_equals_int = false);
>  int gfc_type_abi_kind (bt, int);
> -static inline int
> +inline int
>  gfc_type_abi_kind (gfc_typespec *ts)
>  {
>    return gfc_type_abi_kind (ts->type, ts->kind);
> diff --git a/gcc/gengtype.h b/gcc/gengtype.h
> index 03264feb623..4e5df544fbf 100644
> --- a/gcc/gengtype.h
> +++ b/gcc/gengtype.h
> @@ -77,7 +77,7 @@ input_file* input_file_by_name (const char* name);
>  const char *get_file_srcdir_relative_path (const input_file *inpf);
>
>  /* Get the name of an input file.  */
> -static inline const char*
> +inline const char*
>  get_input_file_name (const input_file *inpf)
>  {
>    if (inpf)
> @@ -94,7 +94,7 @@ get_input_file_name (const input_file *inpf)
>     some GC roots may be missed, which is a much harder-to-debug problem.
>    */
>
> -static inline lang_bitmap
> +inline lang_bitmap
>  get_lang_bitmap (const input_file* inpf)
>  {
>    if (inpf == NULL)
> @@ -104,7 +104,7 @@ get_lang_bitmap (const input_file* inpf)
>
>  /* Set the bitmap returned by get_lang_bitmap.  The only legitimate
>     callers of this function are read_input_list & read_state_*.  */
> -static inline void
> +inline void
>  set_lang_bitmap (input_file* inpf, lang_bitmap n)
>  {
>    gcc_assert (inpf);
> @@ -346,7 +346,7 @@ extern struct type callback_type;
>
>  /* Test if a type is a union or a structure, perhaps a language
>     specific one.  */
> -static inline bool
> +inline bool
>  union_or_struct_p (enum typekind kind)
>  {
>    return (kind == TYPE_UNION
> @@ -355,14 +355,14 @@ union_or_struct_p (enum typekind kind)
>           || kind == TYPE_USER_STRUCT);
>  }
>
> -static inline bool
> +inline bool
>  union_or_struct_p (const_type_p x)
>  {
>    return union_or_struct_p (x->kind);
>  }
>
>  /* Give the file location of a type, if any. */
> -static inline struct fileloc*
> +inline struct fileloc*
>  type_fileloc (type_p t)
>  {
>    if (!t)
> diff --git a/gcc/gimple-expr.h b/gcc/gimple-expr.h
> index 42a16764be9..e89f7e20fc8 100644
> --- a/gcc/gimple-expr.h
> +++ b/gcc/gimple-expr.h
> @@ -60,7 +60,7 @@ extern tree canonicalize_cond_expr_cond (tree);
>  /* Return true if a conversion from either type of TYPE1 and TYPE2
>     to the other is not required.  Otherwise return false.  */
>
> -static inline bool
> +inline bool
>  types_compatible_p (tree type1, tree type2)
>  {
>    return (type1 == type2
> @@ -70,7 +70,7 @@ types_compatible_p (tree type1, tree type2)
>
>  /* Return true if TYPE is a suitable type for a scalar register variable.  */
>
> -static inline bool
> +inline bool
>  is_gimple_reg_type (tree type)
>  {
>    return !AGGREGATE_TYPE_P (type);
> @@ -78,7 +78,7 @@ is_gimple_reg_type (tree type)
>
>  /* Return true if T is a variable.  */
>
> -static inline bool
> +inline bool
>  is_gimple_variable (tree t)
>  {
>    return (TREE_CODE (t) == VAR_DECL
> @@ -89,7 +89,7 @@ is_gimple_variable (tree t)
>
>  /*  Return true if T is a GIMPLE identifier (something with an address).  */
>
> -static inline bool
> +inline bool
>  is_gimple_id (tree t)
>  {
>    return (is_gimple_variable (t)
> @@ -102,7 +102,7 @@ is_gimple_id (tree t)
>
>  /* Return true if OP, an SSA name or a DECL is a virtual operand.  */
>
> -static inline bool
> +inline bool
>  virtual_operand_p (tree op)
>  {
>    if (TREE_CODE (op) == SSA_NAME)
> @@ -116,7 +116,7 @@ virtual_operand_p (tree op)
>
>  /*  Return true if T is something whose address can be taken.  */
>
> -static inline bool
> +inline bool
>  is_gimple_addressable (tree t)
>  {
>    return (is_gimple_id (t) || handled_component_p (t)
> @@ -126,7 +126,7 @@ is_gimple_addressable (tree t)
>
>  /* Return true if T is a valid gimple constant.  */
>
> -static inline bool
> +inline bool
>  is_gimple_constant (const_tree t)
>  {
>    switch (TREE_CODE (t))
> @@ -148,7 +148,7 @@ is_gimple_constant (const_tree t)
>  /* A wrapper around extract_ops_from_tree with 3 ops, for callers which
>     expect to see only a maximum of two operands.  */
>
> -static inline void
> +inline void
>  extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
>                        tree *op1)
>  {
> @@ -160,7 +160,7 @@ extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
>  /* Given a valid GIMPLE_CALL function address return the FUNCTION_DECL
>     associated with the callee if known.  Otherwise return NULL_TREE.  */
>
> -static inline tree
> +inline tree
>  gimple_call_addr_fndecl (const_tree fn)
>  {
>    if (fn && TREE_CODE (fn) == ADDR_EXPR)
> diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h
> index 8857a7e94bc..38352aa95af 100644
> --- a/gcc/gimple-iterator.h
> +++ b/gcc/gimple-iterator.h
> @@ -95,7 +95,7 @@ extern void update_modified_stmts (gimple_seq);
>
>  /* Return a new iterator pointing to GIMPLE_SEQ's first statement.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_start (gimple_seq &seq)
>  {
>    gimple_stmt_iterator i;
> @@ -107,7 +107,7 @@ gsi_start (gimple_seq &seq)
>    return i;
>  }
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_none (void)
>  {
>    gimple_stmt_iterator i;
> @@ -119,7 +119,7 @@ gsi_none (void)
>
>  /* Return a new iterator pointing to the first statement in basic block BB.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_start_bb (basic_block bb)
>  {
>    gimple_stmt_iterator i;
> @@ -137,7 +137,7 @@ gimple_stmt_iterator gsi_start_edge (edge e);
>
>  /* Return a new iterator initially pointing to GIMPLE_SEQ's last statement.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_last (gimple_seq &seq)
>  {
>    gimple_stmt_iterator i;
> @@ -151,7 +151,7 @@ gsi_last (gimple_seq &seq)
>
>  /* Return a new iterator pointing to the last statement in basic block BB.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_last_bb (basic_block bb)
>  {
>    gimple_stmt_iterator i;
> @@ -167,7 +167,7 @@ gsi_last_bb (basic_block bb)
>
>  /* Return true if I is at the end of its sequence.  */
>
> -static inline bool
> +inline bool
>  gsi_end_p (gimple_stmt_iterator i)
>  {
>    return i.ptr == NULL;
> @@ -175,7 +175,7 @@ gsi_end_p (gimple_stmt_iterator i)
>
>  /* Return true if I is one statement before the end of its sequence.  */
>
> -static inline bool
> +inline bool
>  gsi_one_before_end_p (gimple_stmt_iterator i)
>  {
>    return i.ptr != NULL && i.ptr->next == NULL;
> @@ -183,7 +183,7 @@ gsi_one_before_end_p (gimple_stmt_iterator i)
>
>  /* Advance the iterator to the next gimple statement.  */
>
> -static inline void
> +inline void
>  gsi_next (gimple_stmt_iterator *i)
>  {
>    i->ptr = i->ptr->next;
> @@ -191,7 +191,7 @@ gsi_next (gimple_stmt_iterator *i)
>
>  /* Advance the iterator to the previous gimple statement.  */
>
> -static inline void
> +inline void
>  gsi_prev (gimple_stmt_iterator *i)
>  {
>    gimple *prev = i->ptr->prev;
> @@ -203,7 +203,7 @@ gsi_prev (gimple_stmt_iterator *i)
>
>  /* Return the current stmt.  */
>
> -static inline gimple *
> +inline gimple *
>  gsi_stmt (gimple_stmt_iterator i)
>  {
>    return i.ptr;
> @@ -212,7 +212,7 @@ gsi_stmt (gimple_stmt_iterator i)
>  /* Return a block statement iterator that points to the first
>     non-label statement in block BB.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_after_labels (basic_block bb)
>  {
>    gimple_stmt_iterator gsi = gsi_start_bb (bb);
> @@ -231,7 +231,7 @@ gsi_after_labels (basic_block bb)
>  /* Return a statement iterator that points to the first
>     non-label statement in sequence SEQ.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_after_labels (gimple_seq &seq)
>  {
>    gimple_stmt_iterator gsi = gsi_start (seq);
> @@ -249,7 +249,7 @@ gsi_after_labels (gimple_seq &seq)
>
>  /* Advance the iterator to the next non-debug gimple statement.  */
>
> -static inline void
> +inline void
>  gsi_next_nondebug (gimple_stmt_iterator *i)
>  {
>    do
> @@ -261,7 +261,7 @@ gsi_next_nondebug (gimple_stmt_iterator *i)
>
>  /* Advance the iterator to the previous non-debug gimple statement.  */
>
> -static inline void
> +inline void
>  gsi_prev_nondebug (gimple_stmt_iterator *i)
>  {
>    do
> @@ -274,7 +274,7 @@ gsi_prev_nondebug (gimple_stmt_iterator *i)
>  /* Return a new iterator pointing to the first non-debug statement in
>     SEQ.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_start_nondebug (gimple_seq seq)
>  {
>    gimple_stmt_iterator gsi = gsi_start (seq);
> @@ -287,7 +287,7 @@ gsi_start_nondebug (gimple_seq seq)
>  /* Return a new iterator pointing to the first non-debug statement in
>     basic block BB.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_start_nondebug_bb (basic_block bb)
>  {
>    gimple_stmt_iterator i = gsi_start_bb (bb);
> @@ -301,7 +301,7 @@ gsi_start_nondebug_bb (basic_block bb)
>  /* Return a new iterator pointing to the first non-debug non-label statement in
>     basic block BB.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_start_nondebug_after_labels_bb (basic_block bb)
>  {
>    gimple_stmt_iterator i = gsi_after_labels (bb);
> @@ -315,7 +315,7 @@ gsi_start_nondebug_after_labels_bb (basic_block bb)
>  /* Return a new iterator pointing to the last non-debug statement in
>     basic block BB.  */
>
> -static inline gimple_stmt_iterator
> +inline gimple_stmt_iterator
>  gsi_last_nondebug_bb (basic_block bb)
>  {
>    gimple_stmt_iterator i = gsi_last_bb (bb);
> @@ -329,7 +329,7 @@ gsi_last_nondebug_bb (basic_block bb)
>  /* Return true if I is followed only by debug statements in its
>     sequence.  */
>
> -static inline bool
> +inline bool
>  gsi_one_nondebug_before_end_p (gimple_stmt_iterator i)
>  {
>    if (gsi_one_before_end_p (i))
> @@ -343,7 +343,7 @@ gsi_one_nondebug_before_end_p (gimple_stmt_iterator i)
>  /* Advance I statement iterator to the next non-virtual GIMPLE_PHI
>     statement.  */
>
> -static inline void
> +inline void
>  gsi_next_nonvirtual_phi (gphi_iterator *i)
>  {
>    do
> @@ -356,7 +356,7 @@ gsi_next_nonvirtual_phi (gphi_iterator *i)
>  /* Return a new iterator pointing to the first non-virtual phi statement in
>     basic block BB.  */
>
> -static inline gphi_iterator
> +inline gphi_iterator
>  gsi_start_nonvirtual_phis (basic_block bb)
>  {
>    gphi_iterator i = gsi_start_phis (bb);
> @@ -369,7 +369,7 @@ gsi_start_nonvirtual_phis (basic_block bb)
>
>  /* Return the basic block associated with this iterator.  */
>
> -static inline basic_block
> +inline basic_block
>  gsi_bb (gimple_stmt_iterator i)
>  {
>    return i.bb;
> @@ -377,7 +377,7 @@ gsi_bb (gimple_stmt_iterator i)
>
>  /* Return the sequence associated with this iterator.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gsi_seq (gimple_stmt_iterator i)
>  {
>    return *i.seq;
> @@ -385,7 +385,7 @@ gsi_seq (gimple_stmt_iterator i)
>
>  /* Determine whether SEQ is a nondebug singleton.  */
>
> -static inline bool
> +inline bool
>  gimple_seq_nondebug_singleton_p (gimple_seq seq)
>  {
>    gimple_stmt_iterator gsi;
> diff --git a/gcc/gimple-predict.h b/gcc/gimple-predict.h
> index c557b76f17b..6c085a93ea7 100644
> --- a/gcc/gimple-predict.h
> +++ b/gcc/gimple-predict.h
> @@ -25,7 +25,7 @@ along with GCC; see the file COPYING3.  If not see
>
>  /* Return the predictor of GIMPLE_PREDICT statement GS.  */
>
> -static inline enum br_predictor
> +inline enum br_predictor
>  gimple_predict_predictor (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_PREDICT);
> @@ -35,7 +35,7 @@ gimple_predict_predictor (const gimple *gs)
>
>  /* Set the predictor of GIMPLE_PREDICT statement GS to PREDICT.  */
>
> -static inline void
> +inline void
>  gimple_predict_set_predictor (gimple *gs, enum br_predictor predictor)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_PREDICT);
> @@ -46,7 +46,7 @@ gimple_predict_set_predictor (gimple *gs, enum br_predictor predictor)
>
>  /* Return the outcome of GIMPLE_PREDICT statement GS.  */
>
> -static inline enum prediction
> +inline enum prediction
>  gimple_predict_outcome (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_PREDICT);
> @@ -56,7 +56,7 @@ gimple_predict_outcome (const gimple *gs)
>
>  /* Set the outcome of GIMPLE_PREDICT statement GS to OUTCOME.  */
>
> -static inline void
> +inline void
>  gimple_predict_set_outcome (gimple *gs, enum prediction outcome)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_PREDICT);
> @@ -82,7 +82,7 @@ gimple_build_predict (enum br_predictor predictor, enum prediction outcome)
>
>  /* Return true if GS is a GIMPLE_PREDICT statement.  */
>
> -static inline bool
> +inline bool
>  is_gimple_predict (const gimple *gs)
>  {
>    return gimple_code (gs) == GIMPLE_PREDICT;
> diff --git a/gcc/gimple-range-fold.h b/gcc/gimple-range-fold.h
> index b7098c22b7b..10b5c18b858 100644
> --- a/gcc/gimple-range-fold.h
> +++ b/gcc/gimple-range-fold.h
> @@ -44,7 +44,7 @@ bool fold_range (vrange &r, gimple *s, unsigned num_elements, vrange **vector);
>  // Return the type of range which statement S calculates.  If the type is
>  // unsupported or no type can be determined, return NULL_TREE.
>
> -static inline tree
> +inline tree
>  gimple_range_type (const gimple *s)
>  {
>    tree lhs = gimple_get_lhs (s);
> @@ -73,7 +73,7 @@ gimple_range_type (const gimple *s)
>
>  // Return EXP if it is an SSA_NAME with a type supported by gimple ranges.
>
> -static inline tree
> +inline tree
>  gimple_range_ssa_p (tree exp)
>  {
>    if (exp && TREE_CODE (exp) == SSA_NAME &&
> @@ -86,7 +86,7 @@ gimple_range_ssa_p (tree exp)
>
>  // Return true if TYPE1 and TYPE2 are compatible range types.
>
> -static inline bool
> +inline bool
>  range_compatible_p (tree type1, tree type2)
>  {
>    // types_compatible_p requires conversion in both directions to be useless.
> diff --git a/gcc/gimple-ssa.h b/gcc/gimple-ssa.h
> index 98d5bc6d47d..604af8b96b7 100644
> --- a/gcc/gimple-ssa.h
> +++ b/gcc/gimple-ssa.h
> @@ -119,14 +119,14 @@ struct GTY(()) gimple_df {
>     gimple_in_ssa_p is queried by gimplifier in various early stages before SSA
>     infrastructure is initialized.  Check for presence of the datastructures
>     at first place.  */
> -static inline bool
> +inline bool
>  gimple_in_ssa_p (const struct function *fun)
>  {
>    return fun && fun->gimple_df && fun->gimple_df->in_ssa_p;
>  }
>
>  /* Artificial variable used for the virtual operand FUD chain.  */
> -static inline tree
> +inline tree
>  gimple_vop (const struct function *fun)
>  {
>    gcc_checking_assert (fun && fun->gimple_df);
> @@ -135,7 +135,7 @@ gimple_vop (const struct function *fun)
>
>  /* Return the set of VUSE operand for statement G.  */
>
> -static inline use_operand_p
> +inline use_operand_p
>  gimple_vuse_op (const gimple *g)
>  {
>    struct use_optype_d *ops;
> @@ -152,7 +152,7 @@ gimple_vuse_op (const gimple *g)
>
>  /* Return the set of VDEF operand for statement G.  */
>
> -static inline def_operand_p
> +inline def_operand_p
>  gimple_vdef_op (gimple *g)
>  {
>    gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -166,7 +166,7 @@ gimple_vdef_op (gimple *g)
>
>  /* Mark statement S as modified, and update it.  */
>
> -static inline void
> +inline void
>  update_stmt (gimple *s)
>  {
>    if (gimple_has_ops (s))
> @@ -178,7 +178,7 @@ update_stmt (gimple *s)
>
>  /* Update statement S if it has been optimized.  */
>
> -static inline void
> +inline void
>  update_stmt_if_modified (gimple *s)
>  {
>    if (gimple_modified_p (s))
> @@ -187,7 +187,7 @@ update_stmt_if_modified (gimple *s)
>
>  /* Mark statement S as modified, and update it.  */
>
> -static inline void
> +inline void
>  update_stmt_fn (struct function *fn, gimple *s)
>  {
>    if (gimple_has_ops (s))
> diff --git a/gcc/gimple.h b/gcc/gimple.h
> index ddb9a4c0f5f..081d18e425a 100644
> --- a/gcc/gimple.h
> +++ b/gcc/gimple.h
> @@ -57,7 +57,7 @@ extern void gimple_check_failed (const gimple *, const char *, int,        \
>                            (CODE), ERROR_MARK);                         \
>    } while (0)
>  template <typename T>
> -static inline T
> +inline T
>  GIMPLE_CHECK2(const gimple *gs,
>  #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
>               const char *file = __builtin_FILE (),
> @@ -76,7 +76,7 @@ GIMPLE_CHECK2(const gimple *gs,
>    return ret;
>  }
>  template <typename T>
> -static inline T
> +inline T
>  GIMPLE_CHECK2(gimple *gs,
>  #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
>               const char *file = __builtin_FILE (),
> @@ -98,13 +98,13 @@ GIMPLE_CHECK2(gimple *gs,
>  #define gcc_gimple_checking_assert(EXPR) ((void)(0 && (EXPR)))
>  #define GIMPLE_CHECK(GS, CODE)                 (void)0
>  template <typename T>
> -static inline T
> +inline T
>  GIMPLE_CHECK2(gimple *gs)
>  {
>    return as_a <T> (gs);
>  }
>  template <typename T>
> -static inline T
> +inline T
>  GIMPLE_CHECK2(const gimple *gs)
>  {
>    return as_a <T> (gs);
> @@ -1701,21 +1701,21 @@ typedef struct gimple_temp_hash_elt
>  } elt_t;
>
>  /* Get the number of the next statement uid to be allocated.  */
> -static inline unsigned int
> +inline unsigned int
>  gimple_stmt_max_uid (struct function *fn)
>  {
>    return fn->last_stmt_uid;
>  }
>
>  /* Set the number of the next statement uid to be allocated.  */
> -static inline void
> +inline void
>  set_gimple_stmt_max_uid (struct function *fn, unsigned int maxid)
>  {
>    fn->last_stmt_uid = maxid;
>  }
>
>  /* Set the number of the next statement uid to be allocated.  */
> -static inline unsigned int
> +inline unsigned int
>  inc_gimple_stmt_max_uid (struct function *fn)
>  {
>    return fn->last_stmt_uid++;
> @@ -1723,7 +1723,7 @@ inc_gimple_stmt_max_uid (struct function *fn)
>
>  /* Return the first node in GIMPLE sequence S.  */
>
> -static inline gimple_seq_node
> +inline gimple_seq_node
>  gimple_seq_first (gimple_seq s)
>  {
>    return s;
> @@ -1732,7 +1732,7 @@ gimple_seq_first (gimple_seq s)
>
>  /* Return the first statement in GIMPLE sequence S.  */
>
> -static inline gimple *
> +inline gimple *
>  gimple_seq_first_stmt (gimple_seq s)
>  {
>    gimple_seq_node n = gimple_seq_first (s);
> @@ -1742,7 +1742,7 @@ gimple_seq_first_stmt (gimple_seq s)
>  /* Return the first statement in GIMPLE sequence S as a gbind *,
>     verifying that it has code GIMPLE_BIND in a checked build.  */
>
> -static inline gbind *
> +inline gbind *
>  gimple_seq_first_stmt_as_a_bind (gimple_seq s)
>  {
>    gimple_seq_node n = gimple_seq_first (s);
> @@ -1752,7 +1752,7 @@ gimple_seq_first_stmt_as_a_bind (gimple_seq s)
>
>  /* Return the last node in GIMPLE sequence S.  */
>
> -static inline gimple_seq_node
> +inline gimple_seq_node
>  gimple_seq_last (gimple_seq s)
>  {
>    return s ? s->prev : NULL;
> @@ -1761,7 +1761,7 @@ gimple_seq_last (gimple_seq s)
>
>  /* Return the last statement in GIMPLE sequence S.  */
>
> -static inline gimple *
> +inline gimple *
>  gimple_seq_last_stmt (gimple_seq s)
>  {
>    gimple_seq_node n = gimple_seq_last (s);
> @@ -1771,7 +1771,7 @@ gimple_seq_last_stmt (gimple_seq s)
>
>  /* Set the last node in GIMPLE sequence *PS to LAST.  */
>
> -static inline void
> +inline void
>  gimple_seq_set_last (gimple_seq *ps, gimple_seq_node last)
>  {
>    (*ps)->prev = last;
> @@ -1780,7 +1780,7 @@ gimple_seq_set_last (gimple_seq *ps, gimple_seq_node last)
>
>  /* Set the first node in GIMPLE sequence *PS to FIRST.  */
>
> -static inline void
> +inline void
>  gimple_seq_set_first (gimple_seq *ps, gimple_seq_node first)
>  {
>    *ps = first;
> @@ -1789,7 +1789,7 @@ gimple_seq_set_first (gimple_seq *ps, gimple_seq_node first)
>
>  /* Return true if GIMPLE sequence S is empty.  */
>
> -static inline bool
> +inline bool
>  gimple_seq_empty_p (gimple_seq s)
>  {
>    return s == NULL;
> @@ -1797,7 +1797,7 @@ gimple_seq_empty_p (gimple_seq s)
>
>  /* Allocate a new sequence and initialize its first element with STMT.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_seq_alloc_with_stmt (gimple *stmt)
>  {
>    gimple_seq seq = NULL;
> @@ -1808,13 +1808,13 @@ gimple_seq_alloc_with_stmt (gimple *stmt)
>
>  /* Returns the sequence of statements in BB.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  bb_seq (const_basic_block bb)
>  {
>    return (!(bb->flags & BB_RTL)) ? bb->il.gimple.seq : NULL;
>  }
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  bb_seq_addr (basic_block bb)
>  {
>    return (!(bb->flags & BB_RTL)) ? &bb->il.gimple.seq : NULL;
> @@ -1822,7 +1822,7 @@ bb_seq_addr (basic_block bb)
>
>  /* Sets the sequence of statements in BB to SEQ.  */
>
> -static inline void
> +inline void
>  set_bb_seq (basic_block bb, gimple_seq seq)
>  {
>    gcc_checking_assert (!(bb->flags & BB_RTL));
> @@ -1832,7 +1832,7 @@ set_bb_seq (basic_block bb, gimple_seq seq)
>
>  /* Return the code for GIMPLE statement G.  */
>
> -static inline enum gimple_code
> +inline enum gimple_code
>  gimple_code (const gimple *g)
>  {
>    return g->code;
> @@ -1841,7 +1841,7 @@ gimple_code (const gimple *g)
>
>  /* Return the GSS code used by a GIMPLE code.  */
>
> -static inline enum gimple_statement_structure_enum
> +inline enum gimple_statement_structure_enum
>  gss_for_code (enum gimple_code code)
>  {
>    gcc_gimple_checking_assert ((unsigned int)code < LAST_AND_UNUSED_GIMPLE_CODE);
> @@ -1851,7 +1851,7 @@ gss_for_code (enum gimple_code code)
>
>  /* Return which GSS code is used by GS.  */
>
> -static inline enum gimple_statement_structure_enum
> +inline enum gimple_statement_structure_enum
>  gimple_statement_structure (gimple *gs)
>  {
>    return gss_for_code (gimple_code (gs));
> @@ -1861,7 +1861,7 @@ gimple_statement_structure (gimple *gs)
>  /* Return true if statement G has sub-statements.  This is only true for
>     High GIMPLE statements.  */
>
> -static inline bool
> +inline bool
>  gimple_has_substatements (gimple *g)
>  {
>    switch (gimple_code (g))
> @@ -1898,7 +1898,7 @@ gimple_has_substatements (gimple *g)
>
>  /* Return the basic block holding statement G.  */
>
> -static inline basic_block
> +inline basic_block
>  gimple_bb (const gimple *g)
>  {
>    return g->bb;
> @@ -1907,18 +1907,18 @@ gimple_bb (const gimple *g)
>
>  /* Return the lexical scope block holding statement G.  */
>
> -static inline tree
> +inline tree
>  gimple_block (const gimple *g)
>  {
>    return LOCATION_BLOCK (g->location);
>  }
>
>  /* Forward declare.  */
> -static inline void gimple_set_location (gimple *, location_t);
> +inline void gimple_set_location (gimple *, location_t);
>
>  /* Set BLOCK to be the lexical scope block holding statement G.  */
>
> -static inline void
> +inline void
>  gimple_set_block (gimple *g, tree block)
>  {
>    gimple_set_location (g, set_block (g->location, block));
> @@ -1926,7 +1926,7 @@ gimple_set_block (gimple *g, tree block)
>
>  /* Return location information for statement G.  */
>
> -static inline location_t
> +inline location_t
>  gimple_location (const gimple *g)
>  {
>    return g->location;
> @@ -1935,7 +1935,7 @@ gimple_location (const gimple *g)
>  /* Return location information for statement G if g is not NULL.
>     Otherwise, UNKNOWN_LOCATION is returned.  */
>
> -static inline location_t
> +inline location_t
>  gimple_location_safe (const gimple *g)
>  {
>    return g ? gimple_location (g) : UNKNOWN_LOCATION;
> @@ -1943,7 +1943,7 @@ gimple_location_safe (const gimple *g)
>
>  /* Set location information for statement G.  */
>
> -static inline void
> +inline void
>  gimple_set_location (gimple *g, location_t location)
>  {
>    /* Copy the no-warning data to the statement location.  */
> @@ -1954,7 +1954,7 @@ gimple_set_location (gimple *g, location_t location)
>
>  /* Return address of the location information for statement G.  */
>
> -static inline location_t *
> +inline location_t *
>  gimple_location_ptr (gimple *g)
>  {
>    return &g->location;
> @@ -1963,7 +1963,7 @@ gimple_location_ptr (gimple *g)
>
>  /* Return true if G contains location information.  */
>
> -static inline bool
> +inline bool
>  gimple_has_location (const gimple *g)
>  {
>    return LOCATION_LOCUS (gimple_location (g)) != UNKNOWN_LOCATION;
> @@ -1972,7 +1972,7 @@ gimple_has_location (const gimple *g)
>
>  /* Return non-artificial location information for statement G.  */
>
> -static inline location_t
> +inline location_t
>  gimple_nonartificial_location (const gimple *g)
>  {
>    location_t *ploc = NULL;
> @@ -1986,7 +1986,7 @@ gimple_nonartificial_location (const gimple *g)
>
>  /* Return the file name of the location of STMT.  */
>
> -static inline const char *
> +inline const char *
>  gimple_filename (const gimple *stmt)
>  {
>    return LOCATION_FILE (gimple_location (stmt));
> @@ -1995,7 +1995,7 @@ gimple_filename (const gimple *stmt)
>
>  /* Return the line number of the location of STMT.  */
>
> -static inline int
> +inline int
>  gimple_lineno (const gimple *stmt)
>  {
>    return LOCATION_LINE (gimple_location (stmt));
> @@ -2004,7 +2004,7 @@ gimple_lineno (const gimple *stmt)
>
>  /* Determine whether SEQ is a singleton. */
>
> -static inline bool
> +inline bool
>  gimple_seq_singleton_p (gimple_seq seq)
>  {
>    return ((gimple_seq_first (seq) != NULL)
> @@ -2013,7 +2013,7 @@ gimple_seq_singleton_p (gimple_seq seq)
>
>  /* Return true if no warnings should be emitted for statement STMT.  */
>
> -static inline bool
> +inline bool
>  gimple_no_warning_p (const gimple *stmt)
>  {
>    return stmt->no_warning;
> @@ -2021,7 +2021,7 @@ gimple_no_warning_p (const gimple *stmt)
>
>  /* Set the no_warning flag of STMT to NO_WARNING.  */
>
> -static inline void
> +inline void
>  gimple_set_no_warning (gimple *stmt, bool no_warning)
>  {
>    stmt->no_warning = (unsigned) no_warning;
> @@ -2039,7 +2039,7 @@ gimple_set_no_warning (gimple *stmt, bool no_warning)
>     struct gimple.
>   */
>
> -static inline void
> +inline void
>  gimple_set_visited (gimple *stmt, bool visited_p)
>  {
>    stmt->visited = (unsigned) visited_p;
> @@ -2057,7 +2057,7 @@ gimple_set_visited (gimple *stmt, bool visited_p)
>     statement by reading the comments of the 'visited' data member of
>     struct gimple.  */
>
> -static inline bool
> +inline bool
>  gimple_visited_p (gimple *stmt)
>  {
>    return stmt->visited;
> @@ -2074,7 +2074,7 @@ gimple_visited_p (gimple *stmt)
>     You can learn more about the PLF property by reading the comment of
>     the 'plf' data member of struct gimple_statement_structure.  */
>
> -static inline void
> +inline void
>  gimple_set_plf (gimple *stmt, enum plf_mask plf, bool val_p)
>  {
>    if (val_p)
> @@ -2094,7 +2094,7 @@ gimple_set_plf (gimple *stmt, enum plf_mask plf, bool val_p)
>     You can learn more about the plf property by reading the comment of
>     the 'plf' data member of struct gimple_statement_structure.  */
>
> -static inline unsigned int
> +inline unsigned int
>  gimple_plf (gimple *stmt, enum plf_mask plf)
>  {
>    return stmt->plf & ((unsigned int) plf);
> @@ -2108,7 +2108,7 @@ gimple_plf (gimple *stmt, enum plf_mask plf)
>     contains any useful value when the pass starts and thus can set it
>     to any value it sees fit.  */
>
> -static inline void
> +inline void
>  gimple_set_uid (gimple *g, unsigned uid)
>  {
>    g->uid = uid;
> @@ -2122,7 +2122,7 @@ gimple_set_uid (gimple *g, unsigned uid)
>     contains any useful value when the pass starts and thus can set it
>     to any value it sees fit.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_uid (const gimple *g)
>  {
>    return g->uid;
> @@ -2131,7 +2131,7 @@ gimple_uid (const gimple *g)
>
>  /* Make statement G a singleton sequence.  */
>
> -static inline void
> +inline void
>  gimple_init_singleton (gimple *g)
>  {
>    g->next = NULL;
> @@ -2141,7 +2141,7 @@ gimple_init_singleton (gimple *g)
>
>  /* Return true if GIMPLE statement G has register or memory operands.  */
>
> -static inline bool
> +inline bool
>  gimple_has_ops (const gimple *g)
>  {
>    return gimple_code (g) >= GIMPLE_COND && gimple_code (g) <= GIMPLE_RETURN;
> @@ -2165,7 +2165,7 @@ is_a_helper <gimple_statement_with_ops *>::test (gimple *gs)
>
>  /* Return true if GIMPLE statement G has memory operands.  */
>
> -static inline bool
> +inline bool
>  gimple_has_mem_ops (const gimple *g)
>  {
>    return gimple_code (g) >= GIMPLE_ASSIGN && gimple_code (g) <= GIMPLE_RETURN;
> @@ -2189,7 +2189,7 @@ is_a_helper <gimple_statement_with_memory_ops *>::test (gimple *gs)
>
>  /* Return the set of USE operands for statement G.  */
>
> -static inline struct use_optype_d *
> +inline struct use_optype_d *
>  gimple_use_ops (const gimple *g)
>  {
>    const gimple_statement_with_ops *ops_stmt =
> @@ -2202,7 +2202,7 @@ gimple_use_ops (const gimple *g)
>
>  /* Set USE to be the set of USE operands for statement G.  */
>
> -static inline void
> +inline void
>  gimple_set_use_ops (gimple *g, struct use_optype_d *use)
>  {
>    gimple_statement_with_ops *ops_stmt =
> @@ -2213,7 +2213,7 @@ gimple_set_use_ops (gimple *g, struct use_optype_d *use)
>
>  /* Return the single VUSE operand of the statement G.  */
>
> -static inline tree
> +inline tree
>  gimple_vuse (const gimple *g)
>  {
>    const gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -2225,7 +2225,7 @@ gimple_vuse (const gimple *g)
>
>  /* Return the single VDEF operand of the statement G.  */
>
> -static inline tree
> +inline tree
>  gimple_vdef (const gimple *g)
>  {
>    const gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -2237,7 +2237,7 @@ gimple_vdef (const gimple *g)
>
>  /* Return the single VUSE operand of the statement G.  */
>
> -static inline tree *
> +inline tree *
>  gimple_vuse_ptr (gimple *g)
>  {
>    gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -2249,7 +2249,7 @@ gimple_vuse_ptr (gimple *g)
>
>  /* Return the single VDEF operand of the statement G.  */
>
> -static inline tree *
> +inline tree *
>  gimple_vdef_ptr (gimple *g)
>  {
>    gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -2261,7 +2261,7 @@ gimple_vdef_ptr (gimple *g)
>
>  /* Set the single VUSE operand of the statement G.  */
>
> -static inline void
> +inline void
>  gimple_set_vuse (gimple *g, tree vuse)
>  {
>    gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -2271,7 +2271,7 @@ gimple_set_vuse (gimple *g, tree vuse)
>
>  /* Set the single VDEF operand of the statement G.  */
>
> -static inline void
> +inline void
>  gimple_set_vdef (gimple *g, tree vdef)
>  {
>    gimple_statement_with_memory_ops *mem_ops_stmt =
> @@ -2283,7 +2283,7 @@ gimple_set_vdef (gimple *g, tree vdef)
>  /* Return true if statement G has operands and the modified field has
>     been set.  */
>
> -static inline bool
> +inline bool
>  gimple_modified_p (const gimple *g)
>  {
>    return (gimple_has_ops (g)) ? (bool) g->modified : false;
> @@ -2293,7 +2293,7 @@ gimple_modified_p (const gimple *g)
>  /* Set the MODIFIED flag to MODIFIEDP, iff the gimple statement G has
>     a MODIFIED field.  */
>
> -static inline void
> +inline void
>  gimple_set_modified (gimple *s, bool modifiedp)
>  {
>    if (gimple_has_ops (s))
> @@ -2303,7 +2303,7 @@ gimple_set_modified (gimple *s, bool modifiedp)
>
>  /* Return true if statement STMT contains volatile operands.  */
>
> -static inline bool
> +inline bool
>  gimple_has_volatile_ops (const gimple *stmt)
>  {
>    if (gimple_has_mem_ops (stmt))
> @@ -2315,7 +2315,7 @@ gimple_has_volatile_ops (const gimple *stmt)
>
>  /* Set the HAS_VOLATILE_OPS flag to VOLATILEP.  */
>
> -static inline void
> +inline void
>  gimple_set_has_volatile_ops (gimple *stmt, bool volatilep)
>  {
>    if (gimple_has_mem_ops (stmt))
> @@ -2324,7 +2324,7 @@ gimple_set_has_volatile_ops (gimple *stmt, bool volatilep)
>
>  /* Return true if STMT is in a transaction.  */
>
> -static inline bool
> +inline bool
>  gimple_in_transaction (const gimple *stmt)
>  {
>    return bb_in_transaction (gimple_bb (stmt));
> @@ -2332,7 +2332,7 @@ gimple_in_transaction (const gimple *stmt)
>
>  /* Return true if statement STMT may access memory.  */
>
> -static inline bool
> +inline bool
>  gimple_references_memory_p (gimple *stmt)
>  {
>    return gimple_has_mem_ops (stmt) && gimple_vuse (stmt);
> @@ -2341,7 +2341,7 @@ gimple_references_memory_p (gimple *stmt)
>
>  /* Return the subcode for OMP statement S.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_omp_subcode (const gimple *s)
>  {
>    gcc_gimple_checking_assert (gimple_code (s) >= GIMPLE_OMP_ATOMIC_LOAD
> @@ -2351,7 +2351,7 @@ gimple_omp_subcode (const gimple *s)
>
>  /* Set the subcode for OMP statement S to SUBCODE.  */
>
> -static inline void
> +inline void
>  gimple_omp_set_subcode (gimple *s, unsigned int subcode)
>  {
>    /* We only have 16 bits for the subcode.  Assert that we are not
> @@ -2362,7 +2362,7 @@ gimple_omp_set_subcode (gimple *s, unsigned int subcode)
>
>  /* Set the nowait flag on OMP_RETURN statement S.  */
>
> -static inline void
> +inline void
>  gimple_omp_return_set_nowait (gimple *s)
>  {
>    GIMPLE_CHECK (s, GIMPLE_OMP_RETURN);
> @@ -2373,7 +2373,7 @@ gimple_omp_return_set_nowait (gimple *s)
>  /* Return true if OMP return statement G has the GF_OMP_RETURN_NOWAIT
>     flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_return_nowait_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_RETURN);
> @@ -2383,7 +2383,7 @@ gimple_omp_return_nowait_p (const gimple *g)
>
>  /* Set the LHS of OMP return.  */
>
> -static inline void
> +inline void
>  gimple_omp_return_set_lhs (gimple *g, tree lhs)
>  {
>    gimple_statement_omp_return *omp_return_stmt =
> @@ -2394,7 +2394,7 @@ gimple_omp_return_set_lhs (gimple *g, tree lhs)
>
>  /* Get the LHS of OMP return.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_return_lhs (const gimple *g)
>  {
>    const gimple_statement_omp_return *omp_return_stmt =
> @@ -2405,7 +2405,7 @@ gimple_omp_return_lhs (const gimple *g)
>
>  /* Return a pointer to the LHS of OMP return.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_return_lhs_ptr (gimple *g)
>  {
>    gimple_statement_omp_return *omp_return_stmt =
> @@ -2417,7 +2417,7 @@ gimple_omp_return_lhs_ptr (gimple *g)
>  /* Return true if OMP section statement G has the GF_OMP_SECTION_LAST
>     flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_section_last_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
> @@ -2427,7 +2427,7 @@ gimple_omp_section_last_p (const gimple *g)
>
>  /* Set the GF_OMP_SECTION_LAST flag on G.  */
>
> -static inline void
> +inline void
>  gimple_omp_section_set_last (gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
> @@ -2438,7 +2438,7 @@ gimple_omp_section_set_last (gimple *g)
>  /* Return true if OMP ordered construct is stand-alone
>     (G has the GF_OMP_ORDERED_STANDALONE flag set).  */
>
> -static inline bool
> +inline bool
>  gimple_omp_ordered_standalone_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_ORDERED);
> @@ -2448,7 +2448,7 @@ gimple_omp_ordered_standalone_p (const gimple *g)
>
>  /* Set the GF_OMP_ORDERED_STANDALONE flag on G.  */
>
> -static inline void
> +inline void
>  gimple_omp_ordered_standalone (gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_ORDERED);
> @@ -2459,7 +2459,7 @@ gimple_omp_ordered_standalone (gimple *g)
>  /* Return true if OMP parallel statement G has the
>     GF_OMP_PARALLEL_COMBINED flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_parallel_combined_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
> @@ -2470,7 +2470,7 @@ gimple_omp_parallel_combined_p (const gimple *g)
>  /* Set the GF_OMP_PARALLEL_COMBINED field in G depending on the boolean
>     value of COMBINED_P.  */
>
> -static inline void
> +inline void
>  gimple_omp_parallel_set_combined_p (gimple *g, bool combined_p)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
> @@ -2484,7 +2484,7 @@ gimple_omp_parallel_set_combined_p (gimple *g, bool combined_p)
>  /* Return true if OMP atomic load/store statement G has the
>     GF_OMP_ATOMIC_NEED_VALUE flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_atomic_need_value_p (const gimple *g)
>  {
>    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
> @@ -2495,7 +2495,7 @@ gimple_omp_atomic_need_value_p (const gimple *g)
>
>  /* Set the GF_OMP_ATOMIC_NEED_VALUE flag on G.  */
>
> -static inline void
> +inline void
>  gimple_omp_atomic_set_need_value (gimple *g)
>  {
>    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
> @@ -2507,7 +2507,7 @@ gimple_omp_atomic_set_need_value (gimple *g)
>  /* Return true if OMP atomic load/store statement G has the
>     GF_OMP_ATOMIC_WEAK flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_atomic_weak_p (const gimple *g)
>  {
>    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
> @@ -2518,7 +2518,7 @@ gimple_omp_atomic_weak_p (const gimple *g)
>
>  /* Set the GF_OMP_ATOMIC_WEAK flag on G.  */
>
> -static inline void
> +inline void
>  gimple_omp_atomic_set_weak (gimple *g)
>  {
>    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
> @@ -2529,7 +2529,7 @@ gimple_omp_atomic_set_weak (gimple *g)
>
>  /* Return the memory order of the OMP atomic load/store statement G.  */
>
> -static inline enum omp_memory_order
> +inline enum omp_memory_order
>  gimple_omp_atomic_memory_order (const gimple *g)
>  {
>    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
> @@ -2541,7 +2541,7 @@ gimple_omp_atomic_memory_order (const gimple *g)
>
>  /* Set the memory order on G.  */
>
> -static inline void
> +inline void
>  gimple_omp_atomic_set_memory_order (gimple *g, enum omp_memory_order mo)
>  {
>    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
> @@ -2553,7 +2553,7 @@ gimple_omp_atomic_set_memory_order (gimple *g, enum omp_memory_order mo)
>
>  /* Return the number of operands for statement GS.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_num_ops (const gimple *gs)
>  {
>    return gs->num_ops;
> @@ -2562,7 +2562,7 @@ gimple_num_ops (const gimple *gs)
>
>  /* Set the number of operands for statement GS.  */
>
> -static inline void
> +inline void
>  gimple_set_num_ops (gimple *gs, unsigned num_ops)
>  {
>    gs->num_ops = num_ops;
> @@ -2571,7 +2571,7 @@ gimple_set_num_ops (gimple *gs, unsigned num_ops)
>
>  /* Return the array of operands for statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_ops (gimple *gs)
>  {
>    size_t off;
> @@ -2588,7 +2588,7 @@ gimple_ops (gimple *gs)
>
>  /* Return operand I for statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_op (const gimple *gs, unsigned i)
>  {
>    if (gimple_has_ops (gs))
> @@ -2602,7 +2602,7 @@ gimple_op (const gimple *gs, unsigned i)
>
>  /* Return a pointer to operand I for statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_op_ptr (gimple *gs, unsigned i)
>  {
>    if (gimple_has_ops (gs))
> @@ -2616,7 +2616,7 @@ gimple_op_ptr (gimple *gs, unsigned i)
>
>  /* Set operand I of statement GS to OP.  */
>
> -static inline void
> +inline void
>  gimple_set_op (gimple *gs, unsigned i, tree op)
>  {
>    gcc_gimple_checking_assert (gimple_has_ops (gs) && i < gimple_num_ops (gs));
> @@ -2630,7 +2630,7 @@ gimple_set_op (gimple *gs, unsigned i, tree op)
>
>  /* Return true if GS is a GIMPLE_ASSIGN.  */
>
> -static inline bool
> +inline bool
>  is_gimple_assign (const gimple *gs)
>  {
>    return gimple_code (gs) == GIMPLE_ASSIGN;
> @@ -2639,7 +2639,7 @@ is_gimple_assign (const gimple *gs)
>  /* Determine if expression CODE is one of the valid expressions that can
>     be used on the RHS of GIMPLE assignments.  */
>
> -static inline enum gimple_rhs_class
> +inline enum gimple_rhs_class
>  get_gimple_rhs_class (enum tree_code code)
>  {
>    return (enum gimple_rhs_class) gimple_rhs_class_table[(int) code];
> @@ -2647,13 +2647,13 @@ get_gimple_rhs_class (enum tree_code code)
>
>  /* Return the LHS of assignment statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_assign_lhs (const gassign *gs)
>  {
>    return gs->op[0];
>  }
>
> -static inline tree
> +inline tree
>  gimple_assign_lhs (const gimple *gs)
>  {
>    const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
> @@ -2663,13 +2663,13 @@ gimple_assign_lhs (const gimple *gs)
>
>  /* Return a pointer to the LHS of assignment statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_assign_lhs_ptr (gassign *gs)
>  {
>    return &gs->op[0];
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_assign_lhs_ptr (gimple *gs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2679,7 +2679,7 @@ gimple_assign_lhs_ptr (gimple *gs)
>
>  /* Set LHS to be the LHS operand of assignment statement GS.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_lhs (gassign *gs, tree lhs)
>  {
>    gs->op[0] = lhs;
> @@ -2688,7 +2688,7 @@ gimple_assign_set_lhs (gassign *gs, tree lhs)
>      SSA_NAME_DEF_STMT (lhs) = gs;
>  }
>
> -static inline void
> +inline void
>  gimple_assign_set_lhs (gimple *gs, tree lhs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2698,13 +2698,13 @@ gimple_assign_set_lhs (gimple *gs, tree lhs)
>
>  /* Return the first operand on the RHS of assignment statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_assign_rhs1 (const gassign *gs)
>  {
>    return gs->op[1];
>  }
>
> -static inline tree
> +inline tree
>  gimple_assign_rhs1 (const gimple *gs)
>  {
>    const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
> @@ -2715,13 +2715,13 @@ gimple_assign_rhs1 (const gimple *gs)
>  /* Return a pointer to the first operand on the RHS of assignment
>     statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_assign_rhs1_ptr (gassign *gs)
>  {
>    return &gs->op[1];
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_assign_rhs1_ptr (gimple *gs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2730,13 +2730,13 @@ gimple_assign_rhs1_ptr (gimple *gs)
>
>  /* Set RHS to be the first operand on the RHS of assignment statement GS.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs1 (gassign *gs, tree rhs)
>  {
>    gs->op[1] = rhs;
>  }
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs1 (gimple *gs, tree rhs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2747,7 +2747,7 @@ gimple_assign_set_rhs1 (gimple *gs, tree rhs)
>  /* Return the second operand on the RHS of assignment statement GS.
>     If GS does not have two operands, NULL is returned instead.  */
>
> -static inline tree
> +inline tree
>  gimple_assign_rhs2 (const gassign *gs)
>  {
>    if (gimple_num_ops (gs) >= 3)
> @@ -2756,7 +2756,7 @@ gimple_assign_rhs2 (const gassign *gs)
>      return NULL_TREE;
>  }
>
> -static inline tree
> +inline tree
>  gimple_assign_rhs2 (const gimple *gs)
>  {
>    const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
> @@ -2767,14 +2767,14 @@ gimple_assign_rhs2 (const gimple *gs)
>  /* Return a pointer to the second operand on the RHS of assignment
>     statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_assign_rhs2_ptr (gassign *gs)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) >= 3);
>    return &gs->op[2];
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_assign_rhs2_ptr (gimple *gs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2784,14 +2784,14 @@ gimple_assign_rhs2_ptr (gimple *gs)
>
>  /* Set RHS to be the second operand on the RHS of assignment statement GS.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs2 (gassign *gs, tree rhs)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) >= 3);
>    gs->op[2] = rhs;
>  }
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs2 (gimple *gs, tree rhs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2801,7 +2801,7 @@ gimple_assign_set_rhs2 (gimple *gs, tree rhs)
>  /* Return the third operand on the RHS of assignment statement GS.
>     If GS does not have two operands, NULL is returned instead.  */
>
> -static inline tree
> +inline tree
>  gimple_assign_rhs3 (const gassign *gs)
>  {
>    if (gimple_num_ops (gs) >= 4)
> @@ -2810,7 +2810,7 @@ gimple_assign_rhs3 (const gassign *gs)
>      return NULL_TREE;
>  }
>
> -static inline tree
> +inline tree
>  gimple_assign_rhs3 (const gimple *gs)
>  {
>    const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
> @@ -2820,7 +2820,7 @@ gimple_assign_rhs3 (const gimple *gs)
>  /* Return a pointer to the third operand on the RHS of assignment
>     statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_assign_rhs3_ptr (gimple *gs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2831,14 +2831,14 @@ gimple_assign_rhs3_ptr (gimple *gs)
>
>  /* Set RHS to be the third operand on the RHS of assignment statement GS.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs3 (gassign *gs, tree rhs)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) >= 4);
>    gs->op[3] = rhs;
>  }
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs3 (gimple *gs, tree rhs)
>  {
>    gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
> @@ -2849,7 +2849,7 @@ gimple_assign_set_rhs3 (gimple *gs, tree rhs)
>  /* A wrapper around 3 operand gimple_assign_set_rhs_with_ops, for callers
>     which expect to see only two operands.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
>                                 tree op1, tree op2)
>  {
> @@ -2859,7 +2859,7 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
>  /* A wrapper around 3 operand gimple_assign_set_rhs_with_ops, for callers
>     which expect to see only one operands.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
>                                 tree op1)
>  {
> @@ -2868,7 +2868,7 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
>
>  /* Returns true if GS is a nontemporal move.  */
>
> -static inline bool
> +inline bool
>  gimple_assign_nontemporal_move_p (const gassign *gs)
>  {
>    return gs->nontemporal_move;
> @@ -2876,7 +2876,7 @@ gimple_assign_nontemporal_move_p (const gassign *gs)
>
>  /* Sets nontemporal move flag of GS to NONTEMPORAL.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_nontemporal_move (gimple *gs, bool nontemporal)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
> @@ -2888,7 +2888,7 @@ gimple_assign_set_nontemporal_move (gimple *gs, bool nontemporal)
>     statement GS.  In case that the RHS is a single object, returns the
>     tree code of the object.  */
>
> -static inline enum tree_code
> +inline enum tree_code
>  gimple_assign_rhs_code (const gassign *gs)
>  {
>    enum tree_code code = (enum tree_code) gs->subcode;
> @@ -2901,7 +2901,7 @@ gimple_assign_rhs_code (const gassign *gs)
>    return code;
>  }
>
> -static inline enum tree_code
> +inline enum tree_code
>  gimple_assign_rhs_code (const gimple *gs)
>  {
>    const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
> @@ -2912,7 +2912,7 @@ gimple_assign_rhs_code (const gimple *gs)
>  /* Set CODE to be the code for the expression computed on the RHS of
>     assignment S.  */
>
> -static inline void
> +inline void
>  gimple_assign_set_rhs_code (gimple *s, enum tree_code code)
>  {
>    GIMPLE_CHECK (s, GIMPLE_ASSIGN);
> @@ -2924,7 +2924,7 @@ gimple_assign_set_rhs_code (gimple *s, enum tree_code code)
>     the rhs of assignment statement GS.
>     This will never return GIMPLE_INVALID_RHS.  */
>
> -static inline enum gimple_rhs_class
> +inline enum gimple_rhs_class
>  gimple_assign_rhs_class (const gimple *gs)
>  {
>    return get_gimple_rhs_class (gimple_assign_rhs_code (gs));
> @@ -2936,7 +2936,7 @@ gimple_assign_rhs_class (const gimple *gs)
>     any RHS operand, including those that perform an operation
>     and do not have the semantics of a copy, such as COND_EXPR.  */
>
> -static inline bool
> +inline bool
>  gimple_assign_single_p (const gimple *gs)
>  {
>    return (is_gimple_assign (gs)
> @@ -2945,7 +2945,7 @@ gimple_assign_single_p (const gimple *gs)
>
>  /* Return true if GS performs a store to its lhs.  */
>
> -static inline bool
> +inline bool
>  gimple_store_p (const gimple *gs)
>  {
>    tree lhs = gimple_get_lhs (gs);
> @@ -2954,7 +2954,7 @@ gimple_store_p (const gimple *gs)
>
>  /* Return true if GS is an assignment that loads from its rhs1.  */
>
> -static inline bool
> +inline bool
>  gimple_assign_load_p (const gimple *gs)
>  {
>    tree rhs;
> @@ -2971,7 +2971,7 @@ gimple_assign_load_p (const gimple *gs)
>
>  /* Return true if S is a type-cast assignment.  */
>
> -static inline bool
> +inline bool
>  gimple_assign_cast_p (const gimple *s)
>  {
>    if (is_gimple_assign (s))
> @@ -2987,7 +2987,7 @@ gimple_assign_cast_p (const gimple *s)
>
>  /* Return true if S is a clobber statement.  */
>
> -static inline bool
> +inline bool
>  gimple_clobber_p (const gimple *s)
>  {
>    return gimple_assign_single_p (s)
> @@ -2996,7 +2996,7 @@ gimple_clobber_p (const gimple *s)
>
>  /* Return true if S is a clobber statement.  */
>
> -static inline bool
> +inline bool
>  gimple_clobber_p (const gimple *s, enum clobber_kind kind)
>  {
>    return gimple_clobber_p (s)
> @@ -3005,7 +3005,7 @@ gimple_clobber_p (const gimple *s, enum clobber_kind kind)
>
>  /* Return true if GS is a GIMPLE_CALL.  */
>
> -static inline bool
> +inline bool
>  is_gimple_call (const gimple *gs)
>  {
>    return gimple_code (gs) == GIMPLE_CALL;
> @@ -3013,13 +3013,13 @@ is_gimple_call (const gimple *gs)
>
>  /* Return the LHS of call statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_call_lhs (const gcall *gs)
>  {
>    return gs->op[0];
>  }
>
> -static inline tree
> +inline tree
>  gimple_call_lhs (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3029,13 +3029,13 @@ gimple_call_lhs (const gimple *gs)
>
>  /* Return a pointer to the LHS of call statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_call_lhs_ptr (gcall *gs)
>  {
>    return &gs->op[0];
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_call_lhs_ptr (gimple *gs)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
> @@ -3045,7 +3045,7 @@ gimple_call_lhs_ptr (gimple *gs)
>
>  /* Set LHS to be the LHS operand of call statement GS.  */
>
> -static inline void
> +inline void
>  gimple_call_set_lhs (gcall *gs, tree lhs)
>  {
>    gs->op[0] = lhs;
> @@ -3053,7 +3053,7 @@ gimple_call_set_lhs (gcall *gs, tree lhs)
>      SSA_NAME_DEF_STMT (lhs) = gs;
>  }
>
> -static inline void
> +inline void
>  gimple_call_set_lhs (gimple *gs, tree lhs)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
> @@ -3064,13 +3064,13 @@ gimple_call_set_lhs (gimple *gs, tree lhs)
>  /* Return true if call GS calls an internal-only function, as enumerated
>     by internal_fn.  */
>
> -static inline bool
> +inline bool
>  gimple_call_internal_p (const gcall *gs)
>  {
>    return (gs->subcode & GF_CALL_INTERNAL) != 0;
>  }
>
> -static inline bool
> +inline bool
>  gimple_call_internal_p (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3079,7 +3079,7 @@ gimple_call_internal_p (const gimple *gs)
>
>  /* Return true if call GS is marked as nocf_check.  */
>
> -static inline bool
> +inline bool
>  gimple_call_nocf_check_p (const gcall *gs)
>  {
>    return (gs->subcode & GF_CALL_NOCF_CHECK) != 0;
> @@ -3087,7 +3087,7 @@ gimple_call_nocf_check_p (const gcall *gs)
>
>  /* Mark statement GS as nocf_check call.  */
>
> -static inline void
> +inline void
>  gimple_call_set_nocf_check (gcall *gs, bool nocf_check)
>  {
>    if (nocf_check)
> @@ -3098,14 +3098,14 @@ gimple_call_set_nocf_check (gcall *gs, bool nocf_check)
>
>  /* Return the target of internal call GS.  */
>
> -static inline enum internal_fn
> +inline enum internal_fn
>  gimple_call_internal_fn (const gcall *gs)
>  {
>    gcc_gimple_checking_assert (gimple_call_internal_p (gs));
>    return gs->u.internal_fn;
>  }
>
> -static inline enum internal_fn
> +inline enum internal_fn
>  gimple_call_internal_fn (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3114,13 +3114,13 @@ gimple_call_internal_fn (const gimple *gs)
>
>  /* Return true, if this internal gimple call is unique.  */
>
> -static inline bool
> +inline bool
>  gimple_call_internal_unique_p (const gcall *gs)
>  {
>    return gimple_call_internal_fn (gs) == IFN_UNIQUE;
>  }
>
> -static inline bool
> +inline bool
>  gimple_call_internal_unique_p (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3129,7 +3129,7 @@ gimple_call_internal_unique_p (const gimple *gs)
>
>  /* Return true if GS is an internal function FN.  */
>
> -static inline bool
> +inline bool
>  gimple_call_internal_p (const gimple *gs, internal_fn fn)
>  {
>    return (is_gimple_call (gs)
> @@ -3140,7 +3140,7 @@ gimple_call_internal_p (const gimple *gs, internal_fn fn)
>  /* If CTRL_ALTERING_P is true, mark GIMPLE_CALL S to be a stmt
>     that could alter control flow.  */
>
> -static inline void
> +inline void
>  gimple_call_set_ctrl_altering (gcall *s, bool ctrl_altering_p)
>  {
>    if (ctrl_altering_p)
> @@ -3149,7 +3149,7 @@ gimple_call_set_ctrl_altering (gcall *s, bool ctrl_altering_p)
>      s->subcode &= ~GF_CALL_CTRL_ALTERING;
>  }
>
> -static inline void
> +inline void
>  gimple_call_set_ctrl_altering (gimple *s, bool ctrl_altering_p)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (s);
> @@ -3159,13 +3159,13 @@ gimple_call_set_ctrl_altering (gimple *s, bool ctrl_altering_p)
>  /* Return true if call GS calls an func whose GF_CALL_CTRL_ALTERING
>     flag is set. Such call could not be a stmt in the middle of a bb.  */
>
> -static inline bool
> +inline bool
>  gimple_call_ctrl_altering_p (const gcall *gs)
>  {
>    return (gs->subcode & GF_CALL_CTRL_ALTERING) != 0;
>  }
>
> -static inline bool
> +inline bool
>  gimple_call_ctrl_altering_p (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3175,7 +3175,7 @@ gimple_call_ctrl_altering_p (const gimple *gs)
>
>  /* Return the function type of the function called by GS.  */
>
> -static inline tree
> +inline tree
>  gimple_call_fntype (const gcall *gs)
>  {
>    if (gimple_call_internal_p (gs))
> @@ -3183,7 +3183,7 @@ gimple_call_fntype (const gcall *gs)
>    return gs->u.fntype;
>  }
>
> -static inline tree
> +inline tree
>  gimple_call_fntype (const gimple *gs)
>  {
>    const gcall *call_stmt = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3192,7 +3192,7 @@ gimple_call_fntype (const gimple *gs)
>
>  /* Set the type of the function called by CALL_STMT to FNTYPE.  */
>
> -static inline void
> +inline void
>  gimple_call_set_fntype (gcall *call_stmt, tree fntype)
>  {
>    gcc_gimple_checking_assert (!gimple_call_internal_p (call_stmt));
> @@ -3203,13 +3203,13 @@ gimple_call_set_fntype (gcall *call_stmt, tree fntype)
>  /* Return the tree node representing the function called by call
>     statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_call_fn (const gcall *gs)
>  {
>    return gs->op[1];
>  }
>
> -static inline tree
> +inline tree
>  gimple_call_fn (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3219,13 +3219,13 @@ gimple_call_fn (const gimple *gs)
>  /* Return a pointer to the tree node representing the function called by call
>     statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_call_fn_ptr (gcall *gs)
>  {
>    return &gs->op[1];
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_call_fn_ptr (gimple *gs)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
> @@ -3235,7 +3235,7 @@ gimple_call_fn_ptr (gimple *gs)
>
>  /* Set FN to be the function called by call statement GS.  */
>
> -static inline void
> +inline void
>  gimple_call_set_fn (gcall *gs, tree fn)
>  {
>    gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
> @@ -3245,7 +3245,7 @@ gimple_call_set_fn (gcall *gs, tree fn)
>
>  /* Set FNDECL to be the function called by call statement GS.  */
>
> -static inline void
> +inline void
>  gimple_call_set_fndecl (gcall *gs, tree decl)
>  {
>    gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
> @@ -3253,7 +3253,7 @@ gimple_call_set_fndecl (gcall *gs, tree decl)
>                           build_pointer_type (TREE_TYPE (decl)), decl);
>  }
>
> -static inline void
> +inline void
>  gimple_call_set_fndecl (gimple *gs, tree decl)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
> @@ -3263,7 +3263,7 @@ gimple_call_set_fndecl (gimple *gs, tree decl)
>
>  /* Set internal function FN to be the function called by call statement CALL_STMT.  */
>
> -static inline void
> +inline void
>  gimple_call_set_internal_fn (gcall *call_stmt, enum internal_fn fn)
>  {
>    gcc_gimple_checking_assert (gimple_call_internal_p (call_stmt));
> @@ -3275,13 +3275,13 @@ gimple_call_set_internal_fn (gcall *call_stmt, enum internal_fn fn)
>     Otherwise return NULL.  This function is analogous to
>     get_callee_fndecl in tree land.  */
>
> -static inline tree
> +inline tree
>  gimple_call_fndecl (const gcall *gs)
>  {
>    return gimple_call_addr_fndecl (gimple_call_fn (gs));
>  }
>
> -static inline tree
> +inline tree
>  gimple_call_fndecl (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3291,7 +3291,7 @@ gimple_call_fndecl (const gimple *gs)
>
>  /* Return the type returned by call statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_call_return_type (const gcall *gs)
>  {
>    tree type = gimple_call_fntype (gs);
> @@ -3307,13 +3307,13 @@ gimple_call_return_type (const gcall *gs)
>
>  /* Return the static chain for call statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_call_chain (const gcall *gs)
>  {
>    return gs->op[2];
>  }
>
> -static inline tree
> +inline tree
>  gimple_call_chain (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3323,7 +3323,7 @@ gimple_call_chain (const gimple *gs)
>
>  /* Return a pointer to the static chain for call statement CALL_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_call_chain_ptr (gcall *call_stmt)
>  {
>    return &call_stmt->op[2];
> @@ -3331,7 +3331,7 @@ gimple_call_chain_ptr (gcall *call_stmt)
>
>  /* Set CHAIN to be the static chain for call statement CALL_STMT.  */
>
> -static inline void
> +inline void
>  gimple_call_set_chain (gcall *call_stmt, tree chain)
>  {
>    call_stmt->op[2] = chain;
> @@ -3340,13 +3340,13 @@ gimple_call_set_chain (gcall *call_stmt, tree chain)
>
>  /* Return the number of arguments used by call statement GS.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_call_num_args (const gcall *gs)
>  {
>    return gimple_num_ops (gs) - 3;
>  }
>
> -static inline unsigned
> +inline unsigned
>  gimple_call_num_args (const gimple *gs)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3356,14 +3356,14 @@ gimple_call_num_args (const gimple *gs)
>
>  /* Return the argument at position INDEX for call statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_call_arg (const gcall *gs, unsigned index)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
>    return gs->op[index + 3];
>  }
>
> -static inline tree
> +inline tree
>  gimple_call_arg (const gimple *gs, unsigned index)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
> @@ -3374,14 +3374,14 @@ gimple_call_arg (const gimple *gs, unsigned index)
>  /* Return a pointer to the argument at position INDEX for call
>     statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_call_arg_ptr (gcall *gs, unsigned index)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
>    return &gs->op[index + 3];
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_call_arg_ptr (gimple *gs, unsigned index)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
> @@ -3391,14 +3391,14 @@ gimple_call_arg_ptr (gimple *gs, unsigned index)
>
>  /* Set ARG to be the argument at position INDEX for call statement GS.  */
>
> -static inline void
> +inline void
>  gimple_call_set_arg (gcall *gs, unsigned index, tree arg)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
>    gs->op[index + 3] = arg;
>  }
>
> -static inline void
> +inline void
>  gimple_call_set_arg (gimple *gs, unsigned index, tree arg)
>  {
>    gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
> @@ -3410,7 +3410,7 @@ gimple_call_set_arg (gimple *gs, unsigned index, tree arg)
>     (i.e., a call just before the exit of a function).  These calls are
>     candidate for tail call optimization.  */
>
> -static inline void
> +inline void
>  gimple_call_set_tail (gcall *s, bool tail_p)
>  {
>    if (tail_p)
> @@ -3422,7 +3422,7 @@ gimple_call_set_tail (gcall *s, bool tail_p)
>
>  /* Return true if GIMPLE_CALL S is marked as a tail call.  */
>
> -static inline bool
> +inline bool
>  gimple_call_tail_p (const gcall *s)
>  {
>    return (s->subcode & GF_CALL_TAILCALL) != 0;
> @@ -3430,7 +3430,7 @@ gimple_call_tail_p (const gcall *s)
>
>  /* Mark (or clear) call statement S as requiring tail call optimization.  */
>
> -static inline void
> +inline void
>  gimple_call_set_must_tail (gcall *s, bool must_tail_p)
>  {
>    if (must_tail_p)
> @@ -3442,7 +3442,7 @@ gimple_call_set_must_tail (gcall *s, bool must_tail_p)
>  /* Return true if call statement has been marked as requiring
>     tail call optimization.  */
>
> -static inline bool
> +inline bool
>  gimple_call_must_tail_p (const gcall *s)
>  {
>    return (s->subcode & GF_CALL_MUST_TAIL_CALL) != 0;
> @@ -3452,7 +3452,7 @@ gimple_call_must_tail_p (const gcall *s)
>     slot optimization.  This transformation uses the target of the call
>     expansion as the return slot for calls that return in memory.  */
>
> -static inline void
> +inline void
>  gimple_call_set_return_slot_opt (gcall *s, bool return_slot_opt_p)
>  {
>    if (return_slot_opt_p)
> @@ -3464,7 +3464,7 @@ gimple_call_set_return_slot_opt (gcall *s, bool return_slot_opt_p)
>
>  /* Return true if S is marked for return slot optimization.  */
>
> -static inline bool
> +inline bool
>  gimple_call_return_slot_opt_p (const gcall *s)
>  {
>    return (s->subcode & GF_CALL_RETURN_SLOT_OPT) != 0;
> @@ -3474,7 +3474,7 @@ gimple_call_return_slot_opt_p (const gcall *s)
>  /* If FROM_THUNK_P is true, mark GIMPLE_CALL S as being the jump from a
>     thunk to the thunked-to function.  */
>
> -static inline void
> +inline void
>  gimple_call_set_from_thunk (gcall *s, bool from_thunk_p)
>  {
>    if (from_thunk_p)
> @@ -3486,7 +3486,7 @@ gimple_call_set_from_thunk (gcall *s, bool from_thunk_p)
>
>  /* Return true if GIMPLE_CALL S is a jump from a thunk.  */
>
> -static inline bool
> +inline bool
>  gimple_call_from_thunk_p (gcall *s)
>  {
>    return (s->subcode & GF_CALL_FROM_THUNK) != 0;
> @@ -3496,7 +3496,7 @@ gimple_call_from_thunk_p (gcall *s)
>  /* If FROM_NEW_OR_DELETE_P is true, mark GIMPLE_CALL S as being a call
>     to operator new or delete created from a new or delete expression.  */
>
> -static inline void
> +inline void
>  gimple_call_set_from_new_or_delete (gcall *s, bool from_new_or_delete_p)
>  {
>    if (from_new_or_delete_p)
> @@ -3509,7 +3509,7 @@ gimple_call_set_from_new_or_delete (gcall *s, bool from_new_or_delete_p)
>  /* Return true if GIMPLE_CALL S is a call to operator new or delete from
>     from a new or delete expression.  */
>
> -static inline bool
> +inline bool
>  gimple_call_from_new_or_delete (const gcall *s)
>  {
>    return (s->subcode & GF_CALL_FROM_NEW_OR_DELETE) != 0;
> @@ -3519,7 +3519,7 @@ gimple_call_from_new_or_delete (const gcall *s)
>  /* If PASS_ARG_PACK_P is true, GIMPLE_CALL S is a stdarg call that needs the
>     argument pack in its argument list.  */
>
> -static inline void
> +inline void
>  gimple_call_set_va_arg_pack (gcall *s, bool pass_arg_pack_p)
>  {
>    if (pass_arg_pack_p)
> @@ -3532,7 +3532,7 @@ gimple_call_set_va_arg_pack (gcall *s, bool pass_arg_pack_p)
>  /* Return true if GIMPLE_CALL S is a stdarg call that needs the
>     argument pack in its argument list.  */
>
> -static inline bool
> +inline bool
>  gimple_call_va_arg_pack_p (const gcall *s)
>  {
>    return (s->subcode & GF_CALL_VA_ARG_PACK) != 0;
> @@ -3541,13 +3541,13 @@ gimple_call_va_arg_pack_p (const gcall *s)
>
>  /* Return true if S is a noreturn call.  */
>
> -static inline bool
> +inline bool
>  gimple_call_noreturn_p (const gcall *s)
>  {
>    return (gimple_call_flags (s) & ECF_NORETURN) != 0;
>  }
>
> -static inline bool
> +inline bool
>  gimple_call_noreturn_p (const gimple *s)
>  {
>    const gcall *gc = GIMPLE_CHECK2<const gcall *> (s);
> @@ -3558,7 +3558,7 @@ gimple_call_noreturn_p (const gimple *s)
>  /* If NOTHROW_P is true, GIMPLE_CALL S is a call that is known to not throw
>     even if the called function can throw in other cases.  */
>
> -static inline void
> +inline void
>  gimple_call_set_nothrow (gcall *s, bool nothrow_p)
>  {
>    if (nothrow_p)
> @@ -3569,7 +3569,7 @@ gimple_call_set_nothrow (gcall *s, bool nothrow_p)
>
>  /* Return true if S is a nothrow call.  */
>
> -static inline bool
> +inline bool
>  gimple_call_nothrow_p (gcall *s)
>  {
>    return (gimple_call_flags (s) & ECF_NOTHROW) != 0;
> @@ -3580,7 +3580,7 @@ gimple_call_nothrow_p (gcall *s)
>     stack_save/stack_restore calls and hence can't lead to unbounded
>     stack growth even when they occur in loops.  */
>
> -static inline void
> +inline void
>  gimple_call_set_alloca_for_var (gcall *s, bool for_var)
>  {
>    if (for_var)
> @@ -3591,13 +3591,13 @@ gimple_call_set_alloca_for_var (gcall *s, bool for_var)
>
>  /* Return true of S is a call to builtin_alloca emitted for VLA objects.  */
>
> -static inline bool
> +inline bool
>  gimple_call_alloca_for_var_p (gcall *s)
>  {
>    return (s->subcode & GF_CALL_ALLOCA_FOR_VAR) != 0;
>  }
>
> -static inline bool
> +inline bool
>  gimple_call_alloca_for_var_p (gimple *s)
>  {
>    const gcall *gc = GIMPLE_CHECK2<gcall *> (s);
> @@ -3607,7 +3607,7 @@ gimple_call_alloca_for_var_p (gimple *s)
>  /* If BY_DESCRIPTOR_P is true, GIMPLE_CALL S is an indirect call for which
>     pointers to nested function are descriptors instead of trampolines.  */
>
> -static inline void
> +inline void
>  gimple_call_set_by_descriptor (gcall  *s, bool by_descriptor_p)
>  {
>    if (by_descriptor_p)
> @@ -3618,7 +3618,7 @@ gimple_call_set_by_descriptor (gcall  *s, bool by_descriptor_p)
>
>  /* Return true if S is a by-descriptor call.  */
>
> -static inline bool
> +inline bool
>  gimple_call_by_descriptor_p (gcall *s)
>  {
>    return (s->subcode & GF_CALL_BY_DESCRIPTOR) != 0;
> @@ -3626,7 +3626,7 @@ gimple_call_by_descriptor_p (gcall *s)
>
>  /* Copy all the GF_CALL_* flags from ORIG_CALL to DEST_CALL.  */
>
> -static inline void
> +inline void
>  gimple_call_copy_flags (gcall *dest_call, gcall *orig_call)
>  {
>    dest_call->subcode = orig_call->subcode;
> @@ -3636,7 +3636,7 @@ gimple_call_copy_flags (gcall *dest_call, gcall *orig_call)
>  /* Return a pointer to the points-to solution for the set of call-used
>     variables of the call CALL_STMT.  */
>
> -static inline struct pt_solution *
> +inline struct pt_solution *
>  gimple_call_use_set (gcall *call_stmt)
>  {
>    return &call_stmt->call_used;
> @@ -3644,7 +3644,7 @@ gimple_call_use_set (gcall *call_stmt)
>
>  /* As above, but const.  */
>
> -static inline const pt_solution *
> +inline const pt_solution *
>  gimple_call_use_set (const gcall *call_stmt)
>  {
>    return &call_stmt->call_used;
> @@ -3653,7 +3653,7 @@ gimple_call_use_set (const gcall *call_stmt)
>  /* Return a pointer to the points-to solution for the set of call-used
>     variables of the call CALL_STMT.  */
>
> -static inline struct pt_solution *
> +inline struct pt_solution *
>  gimple_call_clobber_set (gcall *call_stmt)
>  {
>    return &call_stmt->call_clobbered;
> @@ -3661,7 +3661,7 @@ gimple_call_clobber_set (gcall *call_stmt)
>
>  /* As above, but const.  */
>
> -static inline const pt_solution *
> +inline const pt_solution *
>  gimple_call_clobber_set (const gcall *call_stmt)
>  {
>    return &call_stmt->call_clobbered;
> @@ -3671,7 +3671,7 @@ gimple_call_clobber_set (const gcall *call_stmt)
>  /* Returns true if this is a GIMPLE_ASSIGN or a GIMPLE_CALL with a
>     non-NULL lhs.  */
>
> -static inline bool
> +inline bool
>  gimple_has_lhs (const gimple *stmt)
>  {
>    if (is_gimple_assign (stmt))
> @@ -3684,13 +3684,13 @@ gimple_has_lhs (const gimple *stmt)
>
>  /* Return the code of the predicate computed by conditional statement GS.  */
>
> -static inline enum tree_code
> +inline enum tree_code
>  gimple_cond_code (const gcond *gs)
>  {
>    return (enum tree_code) gs->subcode;
>  }
>
> -static inline enum tree_code
> +inline enum tree_code
>  gimple_cond_code (const gimple *gs)
>  {
>    const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
> @@ -3700,7 +3700,7 @@ gimple_cond_code (const gimple *gs)
>
>  /* Set CODE to be the predicate code for the conditional statement GS.  */
>
> -static inline void
> +inline void
>  gimple_cond_set_code (gcond *gs, enum tree_code code)
>  {
>    gs->subcode = code;
> @@ -3709,13 +3709,13 @@ gimple_cond_set_code (gcond *gs, enum tree_code code)
>
>  /* Return the LHS of the predicate computed by conditional statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_cond_lhs (const gcond *gs)
>  {
>    return gs->op[0];
>  }
>
> -static inline tree
> +inline tree
>  gimple_cond_lhs (const gimple *gs)
>  {
>    const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
> @@ -3725,7 +3725,7 @@ gimple_cond_lhs (const gimple *gs)
>  /* Return the pointer to the LHS of the predicate computed by conditional
>     statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_cond_lhs_ptr (gcond *gs)
>  {
>    return &gs->op[0];
> @@ -3734,7 +3734,7 @@ gimple_cond_lhs_ptr (gcond *gs)
>  /* Set LHS to be the LHS operand of the predicate computed by
>     conditional statement GS.  */
>
> -static inline void
> +inline void
>  gimple_cond_set_lhs (gcond *gs, tree lhs)
>  {
>    gs->op[0] = lhs;
> @@ -3743,13 +3743,13 @@ gimple_cond_set_lhs (gcond *gs, tree lhs)
>
>  /* Return the RHS operand of the predicate computed by conditional GS.  */
>
> -static inline tree
> +inline tree
>  gimple_cond_rhs (const gcond *gs)
>  {
>    return gs->op[1];
>  }
>
> -static inline tree
> +inline tree
>  gimple_cond_rhs (const gimple *gs)
>  {
>    const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
> @@ -3759,7 +3759,7 @@ gimple_cond_rhs (const gimple *gs)
>  /* Return the pointer to the RHS operand of the predicate computed by
>     conditional GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_cond_rhs_ptr (gcond *gs)
>  {
>    return &gs->op[1];
> @@ -3769,7 +3769,7 @@ gimple_cond_rhs_ptr (gcond *gs)
>  /* Set RHS to be the RHS operand of the predicate computed by
>     conditional statement GS.  */
>
> -static inline void
> +inline void
>  gimple_cond_set_rhs (gcond *gs, tree rhs)
>  {
>    gs->op[1] = rhs;
> @@ -3779,7 +3779,7 @@ gimple_cond_set_rhs (gcond *gs, tree rhs)
>  /* Return the label used by conditional statement GS when its
>     predicate evaluates to true.  */
>
> -static inline tree
> +inline tree
>  gimple_cond_true_label (const gcond *gs)
>  {
>    return gs->op[2];
> @@ -3789,7 +3789,7 @@ gimple_cond_true_label (const gcond *gs)
>  /* Set LABEL to be the label used by conditional statement GS when its
>     predicate evaluates to true.  */
>
> -static inline void
> +inline void
>  gimple_cond_set_true_label (gcond *gs, tree label)
>  {
>    gs->op[2] = label;
> @@ -3799,7 +3799,7 @@ gimple_cond_set_true_label (gcond *gs, tree label)
>  /* Set LABEL to be the label used by conditional statement GS when its
>     predicate evaluates to false.  */
>
> -static inline void
> +inline void
>  gimple_cond_set_false_label (gcond *gs, tree label)
>  {
>    gs->op[3] = label;
> @@ -3809,7 +3809,7 @@ gimple_cond_set_false_label (gcond *gs, tree label)
>  /* Return the label used by conditional statement GS when its
>     predicate evaluates to false.  */
>
> -static inline tree
> +inline tree
>  gimple_cond_false_label (const gcond *gs)
>  {
>    return gs->op[3];
> @@ -3818,7 +3818,7 @@ gimple_cond_false_label (const gcond *gs)
>
>  /* Set the conditional COND_STMT to be of the form 'if (1 == 0)'.  */
>
> -static inline void
> +inline void
>  gimple_cond_make_false (gcond *gs)
>  {
>    gimple_cond_set_lhs (gs, boolean_false_node);
> @@ -3829,7 +3829,7 @@ gimple_cond_make_false (gcond *gs)
>
>  /* Set the conditional COND_STMT to be of the form 'if (1 == 1)'.  */
>
> -static inline void
> +inline void
>  gimple_cond_make_true (gcond *gs)
>  {
>    gimple_cond_set_lhs (gs, boolean_true_node);
> @@ -3840,7 +3840,7 @@ gimple_cond_make_true (gcond *gs)
>  /* Check if conditional statemente GS is of the form 'if (1 == 1)',
>    'if (0 == 0)', 'if (1 != 0)' or 'if (0 != 1)' */
>
> -static inline bool
> +inline bool
>  gimple_cond_true_p (const gcond *gs)
>  {
>    tree lhs = gimple_cond_lhs (gs);
> @@ -3865,7 +3865,7 @@ gimple_cond_true_p (const gcond *gs)
>  /* Check if conditional statement GS is of the form 'if (1 != 1)',
>     'if (0 != 0)', 'if (1 == 0)' or 'if (0 == 1)' */
>
> -static inline bool
> +inline bool
>  gimple_cond_false_p (const gcond *gs)
>  {
>    tree lhs = gimple_cond_lhs (gs);
> @@ -3889,7 +3889,7 @@ gimple_cond_false_p (const gcond *gs)
>
>  /* Set the code, LHS and RHS of GIMPLE_COND STMT from CODE, LHS and RHS.  */
>
> -static inline void
> +inline void
>  gimple_cond_set_condition (gcond *stmt, enum tree_code code, tree lhs,
>                            tree rhs)
>  {
> @@ -3905,7 +3905,7 @@ gimple_cond_set_condition (gcond *stmt, enum tree_code code, tree lhs,
>     consistency.  This is useful when the caller needs to deal with the
>     three kinds of computation that GIMPLE supports.  */
>
> -static inline enum tree_code
> +inline enum tree_code
>  gimple_expr_code (const gimple *stmt)
>  {
>    if (const gassign *ass = dyn_cast<const gassign *> (stmt))
> @@ -3922,7 +3922,7 @@ gimple_expr_code (const gimple *stmt)
>
>  /* Return the LABEL_DECL node used by GIMPLE_LABEL statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_label_label (const glabel *gs)
>  {
>    return gs->op[0];
> @@ -3932,7 +3932,7 @@ gimple_label_label (const glabel *gs)
>  /* Set LABEL to be the LABEL_DECL node used by GIMPLE_LABEL statement
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_label_set_label (glabel *gs, tree label)
>  {
>    gs->op[0] = label;
> @@ -3941,7 +3941,7 @@ gimple_label_set_label (glabel *gs, tree label)
>
>  /* Return the destination of the unconditional jump GS.  */
>
> -static inline tree
> +inline tree
>  gimple_goto_dest (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_GOTO);
> @@ -3951,7 +3951,7 @@ gimple_goto_dest (const gimple *gs)
>
>  /* Set DEST to be the destination of the unconditonal jump GS.  */
>
> -static inline void
> +inline void
>  gimple_goto_set_dest (ggoto *gs, tree dest)
>  {
>    gs->op[0] = dest;
> @@ -3960,7 +3960,7 @@ gimple_goto_set_dest (ggoto *gs, tree dest)
>
>  /* Return the variables declared in the GIMPLE_BIND statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_bind_vars (const gbind *bind_stmt)
>  {
>    return bind_stmt->vars;
> @@ -3970,7 +3970,7 @@ gimple_bind_vars (const gbind *bind_stmt)
>  /* Set VARS to be the set of variables declared in the GIMPLE_BIND
>     statement GS.  */
>
> -static inline void
> +inline void
>  gimple_bind_set_vars (gbind *bind_stmt, tree vars)
>  {
>    bind_stmt->vars = vars;
> @@ -3980,14 +3980,14 @@ gimple_bind_set_vars (gbind *bind_stmt, tree vars)
>  /* Append VARS to the set of variables declared in the GIMPLE_BIND
>     statement GS.  */
>
> -static inline void
> +inline void
>  gimple_bind_append_vars (gbind *bind_stmt, tree vars)
>  {
>    bind_stmt->vars = chainon (bind_stmt->vars, vars);
>  }
>
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_bind_body_ptr (gbind *bind_stmt)
>  {
>    return &bind_stmt->body;
> @@ -3995,7 +3995,7 @@ gimple_bind_body_ptr (gbind *bind_stmt)
>
>  /* Return the GIMPLE sequence contained in the GIMPLE_BIND statement GS.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_bind_body (const gbind *gs)
>  {
>    return *gimple_bind_body_ptr (const_cast <gbind *> (gs));
> @@ -4005,7 +4005,7 @@ gimple_bind_body (const gbind *gs)
>  /* Set SEQ to be the GIMPLE sequence contained in the GIMPLE_BIND
>     statement GS.  */
>
> -static inline void
> +inline void
>  gimple_bind_set_body (gbind *bind_stmt, gimple_seq seq)
>  {
>    bind_stmt->body = seq;
> @@ -4014,7 +4014,7 @@ gimple_bind_set_body (gbind *bind_stmt, gimple_seq seq)
>
>  /* Append a statement to the end of a GIMPLE_BIND's body.  */
>
> -static inline void
> +inline void
>  gimple_bind_add_stmt (gbind *bind_stmt, gimple *stmt)
>  {
>    gimple_seq_add_stmt (&bind_stmt->body, stmt);
> @@ -4023,7 +4023,7 @@ gimple_bind_add_stmt (gbind *bind_stmt, gimple *stmt)
>
>  /* Append a sequence of statements to the end of a GIMPLE_BIND's body.  */
>
> -static inline void
> +inline void
>  gimple_bind_add_seq (gbind *bind_stmt, gimple_seq seq)
>  {
>    gimple_seq_add_seq (&bind_stmt->body, seq);
> @@ -4033,7 +4033,7 @@ gimple_bind_add_seq (gbind *bind_stmt, gimple_seq seq)
>  /* Return the TREE_BLOCK node associated with GIMPLE_BIND statement
>     GS.  This is analogous to the BIND_EXPR_BLOCK field in trees.  */
>
> -static inline tree
> +inline tree
>  gimple_bind_block (const gbind *bind_stmt)
>  {
>    return bind_stmt->block;
> @@ -4043,7 +4043,7 @@ gimple_bind_block (const gbind *bind_stmt)
>  /* Set BLOCK to be the TREE_BLOCK node associated with GIMPLE_BIND
>     statement GS.  */
>
> -static inline void
> +inline void
>  gimple_bind_set_block (gbind *bind_stmt, tree block)
>  {
>    gcc_gimple_checking_assert (block == NULL_TREE
> @@ -4054,7 +4054,7 @@ gimple_bind_set_block (gbind *bind_stmt, tree block)
>
>  /* Return the number of input operands for GIMPLE_ASM ASM_STMT.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_asm_ninputs (const gasm *asm_stmt)
>  {
>    return asm_stmt->ni;
> @@ -4063,7 +4063,7 @@ gimple_asm_ninputs (const gasm *asm_stmt)
>
>  /* Return the number of output operands for GIMPLE_ASM ASM_STMT.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_asm_noutputs (const gasm *asm_stmt)
>  {
>    return asm_stmt->no;
> @@ -4072,7 +4072,7 @@ gimple_asm_noutputs (const gasm *asm_stmt)
>
>  /* Return the number of clobber operands for GIMPLE_ASM ASM_STMT.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_asm_nclobbers (const gasm *asm_stmt)
>  {
>    return asm_stmt->nc;
> @@ -4080,7 +4080,7 @@ gimple_asm_nclobbers (const gasm *asm_stmt)
>
>  /* Return the number of label operands for GIMPLE_ASM ASM_STMT.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_asm_nlabels (const gasm *asm_stmt)
>  {
>    return asm_stmt->nl;
> @@ -4088,7 +4088,7 @@ gimple_asm_nlabels (const gasm *asm_stmt)
>
>  /* Return input operand INDEX of GIMPLE_ASM ASM_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_asm_input_op (const gasm *asm_stmt, unsigned index)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->ni);
> @@ -4097,7 +4097,7 @@ gimple_asm_input_op (const gasm *asm_stmt, unsigned index)
>
>  /* Set IN_OP to be input operand INDEX in GIMPLE_ASM ASM_STMT.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_input_op (gasm *asm_stmt, unsigned index, tree in_op)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->ni
> @@ -4108,7 +4108,7 @@ gimple_asm_set_input_op (gasm *asm_stmt, unsigned index, tree in_op)
>
>  /* Return output operand INDEX of GIMPLE_ASM ASM_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_asm_output_op (const gasm *asm_stmt, unsigned index)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->no);
> @@ -4117,7 +4117,7 @@ gimple_asm_output_op (const gasm *asm_stmt, unsigned index)
>
>  /* Set OUT_OP to be output operand INDEX in GIMPLE_ASM ASM_STMT.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_output_op (gasm *asm_stmt, unsigned index, tree out_op)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->no
> @@ -4128,7 +4128,7 @@ gimple_asm_set_output_op (gasm *asm_stmt, unsigned index, tree out_op)
>
>  /* Return clobber operand INDEX of GIMPLE_ASM ASM_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_asm_clobber_op (const gasm *asm_stmt, unsigned index)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->nc);
> @@ -4138,7 +4138,7 @@ gimple_asm_clobber_op (const gasm *asm_stmt, unsigned index)
>
>  /* Set CLOBBER_OP to be clobber operand INDEX in GIMPLE_ASM ASM_STMT.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_clobber_op (gasm *asm_stmt, unsigned index, tree clobber_op)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->nc
> @@ -4148,7 +4148,7 @@ gimple_asm_set_clobber_op (gasm *asm_stmt, unsigned index, tree clobber_op)
>
>  /* Return label operand INDEX of GIMPLE_ASM ASM_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_asm_label_op (const gasm *asm_stmt, unsigned index)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->nl);
> @@ -4157,7 +4157,7 @@ gimple_asm_label_op (const gasm *asm_stmt, unsigned index)
>
>  /* Set LABEL_OP to be label operand INDEX in GIMPLE_ASM ASM_STMT.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_label_op (gasm *asm_stmt, unsigned index, tree label_op)
>  {
>    gcc_gimple_checking_assert (index < asm_stmt->nl
> @@ -4168,7 +4168,7 @@ gimple_asm_set_label_op (gasm *asm_stmt, unsigned index, tree label_op)
>  /* Return the string representing the assembly instruction in
>     GIMPLE_ASM ASM_STMT.  */
>
> -static inline const char *
> +inline const char *
>  gimple_asm_string (const gasm *asm_stmt)
>  {
>    return asm_stmt->string;
> @@ -4177,7 +4177,7 @@ gimple_asm_string (const gasm *asm_stmt)
>
>  /* Return true if ASM_STMT is marked volatile.  */
>
> -static inline bool
> +inline bool
>  gimple_asm_volatile_p (const gasm *asm_stmt)
>  {
>    return (asm_stmt->subcode & GF_ASM_VOLATILE) != 0;
> @@ -4186,7 +4186,7 @@ gimple_asm_volatile_p (const gasm *asm_stmt)
>
>  /* If VOLATILE_P is true, mark asm statement ASM_STMT as volatile.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
>  {
>    if (volatile_p)
> @@ -4198,7 +4198,7 @@ gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
>
>  /* Return true if ASM_STMT is marked inline.  */
>
> -static inline bool
> +inline bool
>  gimple_asm_inline_p (const gasm *asm_stmt)
>  {
>    return (asm_stmt->subcode & GF_ASM_INLINE) != 0;
> @@ -4207,7 +4207,7 @@ gimple_asm_inline_p (const gasm *asm_stmt)
>
>  /* If INLINE_P is true, mark asm statement ASM_STMT as inline.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
>  {
>    if (inline_p)
> @@ -4219,7 +4219,7 @@ gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
>
>  /* If INPUT_P is true, mark asm ASM_STMT as an ASM_INPUT.  */
>
> -static inline void
> +inline void
>  gimple_asm_set_input (gasm *asm_stmt, bool input_p)
>  {
>    if (input_p)
> @@ -4231,7 +4231,7 @@ gimple_asm_set_input (gasm *asm_stmt, bool input_p)
>
>  /* Return true if asm ASM_STMT is an ASM_INPUT.  */
>
> -static inline bool
> +inline bool
>  gimple_asm_input_p (const gasm *asm_stmt)
>  {
>    return (asm_stmt->subcode & GF_ASM_INPUT) != 0;
> @@ -4240,7 +4240,7 @@ gimple_asm_input_p (const gasm *asm_stmt)
>
>  /* Return the types handled by GIMPLE_CATCH statement CATCH_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_catch_types (const gcatch *catch_stmt)
>  {
>    return catch_stmt->types;
> @@ -4249,7 +4249,7 @@ gimple_catch_types (const gcatch *catch_stmt)
>
>  /* Return a pointer to the types handled by GIMPLE_CATCH statement CATCH_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_catch_types_ptr (gcatch *catch_stmt)
>  {
>    return &catch_stmt->types;
> @@ -4259,7 +4259,7 @@ gimple_catch_types_ptr (gcatch *catch_stmt)
>  /* Return a pointer to the GIMPLE sequence representing the body of
>     the handler of GIMPLE_CATCH statement CATCH_STMT.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_catch_handler_ptr (gcatch *catch_stmt)
>  {
>    return &catch_stmt->handler;
> @@ -4269,7 +4269,7 @@ gimple_catch_handler_ptr (gcatch *catch_stmt)
>  /* Return the GIMPLE sequence representing the body of the handler of
>     GIMPLE_CATCH statement CATCH_STMT.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_catch_handler (const gcatch *catch_stmt)
>  {
>    return *gimple_catch_handler_ptr (const_cast <gcatch *> (catch_stmt));
> @@ -4278,7 +4278,7 @@ gimple_catch_handler (const gcatch *catch_stmt)
>
>  /* Set T to be the set of types handled by GIMPLE_CATCH CATCH_STMT.  */
>
> -static inline void
> +inline void
>  gimple_catch_set_types (gcatch *catch_stmt, tree t)
>  {
>    catch_stmt->types = t;
> @@ -4287,7 +4287,7 @@ gimple_catch_set_types (gcatch *catch_stmt, tree t)
>
>  /* Set HANDLER to be the body of GIMPLE_CATCH CATCH_STMT.  */
>
> -static inline void
> +inline void
>  gimple_catch_set_handler (gcatch *catch_stmt, gimple_seq handler)
>  {
>    catch_stmt->handler = handler;
> @@ -4296,7 +4296,7 @@ gimple_catch_set_handler (gcatch *catch_stmt, gimple_seq handler)
>
>  /* Return the types handled by GIMPLE_EH_FILTER statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_eh_filter_types (const gimple *gs)
>  {
>    const geh_filter *eh_filter_stmt = as_a <const geh_filter *> (gs);
> @@ -4307,7 +4307,7 @@ gimple_eh_filter_types (const gimple *gs)
>  /* Return a pointer to the types handled by GIMPLE_EH_FILTER statement
>     GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_eh_filter_types_ptr (gimple *gs)
>  {
>    geh_filter *eh_filter_stmt = as_a <geh_filter *> (gs);
> @@ -4318,7 +4318,7 @@ gimple_eh_filter_types_ptr (gimple *gs)
>  /* Return a pointer to the sequence of statement to execute when
>     GIMPLE_EH_FILTER statement fails.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_eh_filter_failure_ptr (gimple *gs)
>  {
>    geh_filter *eh_filter_stmt = as_a <geh_filter *> (gs);
> @@ -4329,7 +4329,7 @@ gimple_eh_filter_failure_ptr (gimple *gs)
>  /* Return the sequence of statement to execute when GIMPLE_EH_FILTER
>     statement fails.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_eh_filter_failure (const gimple *gs)
>  {
>    return *gimple_eh_filter_failure_ptr (const_cast <gimple *> (gs));
> @@ -4339,7 +4339,7 @@ gimple_eh_filter_failure (const gimple *gs)
>  /* Set TYPES to be the set of types handled by GIMPLE_EH_FILTER
>     EH_FILTER_STMT.  */
>
> -static inline void
> +inline void
>  gimple_eh_filter_set_types (geh_filter *eh_filter_stmt, tree types)
>  {
>    eh_filter_stmt->types = types;
> @@ -4349,7 +4349,7 @@ gimple_eh_filter_set_types (geh_filter *eh_filter_stmt, tree types)
>  /* Set FAILURE to be the sequence of statements to execute on failure
>     for GIMPLE_EH_FILTER EH_FILTER_STMT.  */
>
> -static inline void
> +inline void
>  gimple_eh_filter_set_failure (geh_filter *eh_filter_stmt,
>                               gimple_seq failure)
>  {
> @@ -4358,7 +4358,7 @@ gimple_eh_filter_set_failure (geh_filter *eh_filter_stmt,
>
>  /* Get the function decl to be called by the MUST_NOT_THROW region.  */
>
> -static inline tree
> +inline tree
>  gimple_eh_must_not_throw_fndecl (const geh_mnt *eh_mnt_stmt)
>  {
>    return eh_mnt_stmt->fndecl;
> @@ -4366,7 +4366,7 @@ gimple_eh_must_not_throw_fndecl (const geh_mnt *eh_mnt_stmt)
>
>  /* Set the function decl to be called by GS to DECL.  */
>
> -static inline void
> +inline void
>  gimple_eh_must_not_throw_set_fndecl (geh_mnt *eh_mnt_stmt,
>                                      tree decl)
>  {
> @@ -4375,37 +4375,37 @@ gimple_eh_must_not_throw_set_fndecl (geh_mnt *eh_mnt_stmt,
>
>  /* GIMPLE_EH_ELSE accessors.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_eh_else_n_body_ptr (geh_else *eh_else_stmt)
>  {
>    return &eh_else_stmt->n_body;
>  }
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_eh_else_n_body (const geh_else *eh_else_stmt)
>  {
>    return *gimple_eh_else_n_body_ptr (const_cast <geh_else *> (eh_else_stmt));
>  }
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_eh_else_e_body_ptr (geh_else *eh_else_stmt)
>  {
>    return &eh_else_stmt->e_body;
>  }
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_eh_else_e_body (const geh_else *eh_else_stmt)
>  {
>    return *gimple_eh_else_e_body_ptr (const_cast <geh_else *> (eh_else_stmt));
>  }
>
> -static inline void
> +inline void
>  gimple_eh_else_set_n_body (geh_else *eh_else_stmt, gimple_seq seq)
>  {
>    eh_else_stmt->n_body = seq;
>  }
>
> -static inline void
> +inline void
>  gimple_eh_else_set_e_body (geh_else *eh_else_stmt, gimple_seq seq)
>  {
>    eh_else_stmt->e_body = seq;
> @@ -4416,7 +4416,7 @@ gimple_eh_else_set_e_body (geh_else *eh_else_stmt, gimple_seq seq)
>  /* Return the kind of try block represented by GIMPLE_TRY GS.  This is
>     either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY.  */
>
> -static inline enum gimple_try_flags
> +inline enum gimple_try_flags
>  gimple_try_kind (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_TRY);
> @@ -4426,7 +4426,7 @@ gimple_try_kind (const gimple *gs)
>
>  /* Set the kind of try block represented by GIMPLE_TRY GS.  */
>
> -static inline void
> +inline void
>  gimple_try_set_kind (gtry *gs, enum gimple_try_flags kind)
>  {
>    gcc_gimple_checking_assert (kind == GIMPLE_TRY_CATCH
> @@ -4438,7 +4438,7 @@ gimple_try_set_kind (gtry *gs, enum gimple_try_flags kind)
>
>  /* Return the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
>
> -static inline bool
> +inline bool
>  gimple_try_catch_is_cleanup (const gimple *gs)
>  {
>    gcc_gimple_checking_assert (gimple_try_kind (gs) == GIMPLE_TRY_CATCH);
> @@ -4449,7 +4449,7 @@ gimple_try_catch_is_cleanup (const gimple *gs)
>  /* Return a pointer to the sequence of statements used as the
>     body for GIMPLE_TRY GS.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_try_eval_ptr (gimple *gs)
>  {
>    gtry *try_stmt = as_a <gtry *> (gs);
> @@ -4459,7 +4459,7 @@ gimple_try_eval_ptr (gimple *gs)
>
>  /* Return the sequence of statements used as the body for GIMPLE_TRY GS.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_try_eval (const gimple *gs)
>  {
>    return *gimple_try_eval_ptr (const_cast <gimple *> (gs));
> @@ -4469,7 +4469,7 @@ gimple_try_eval (const gimple *gs)
>  /* Return a pointer to the sequence of statements used as the cleanup body for
>     GIMPLE_TRY GS.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_try_cleanup_ptr (gimple *gs)
>  {
>    gtry *try_stmt = as_a <gtry *> (gs);
> @@ -4480,7 +4480,7 @@ gimple_try_cleanup_ptr (gimple *gs)
>  /* Return the sequence of statements used as the cleanup body for
>     GIMPLE_TRY GS.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_try_cleanup (const gimple *gs)
>  {
>    return *gimple_try_cleanup_ptr (const_cast <gimple *> (gs));
> @@ -4489,7 +4489,7 @@ gimple_try_cleanup (const gimple *gs)
>
>  /* Set the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
>
> -static inline void
> +inline void
>  gimple_try_set_catch_is_cleanup (gtry *g, bool catch_is_cleanup)
>  {
>    gcc_gimple_checking_assert (gimple_try_kind (g) == GIMPLE_TRY_CATCH);
> @@ -4503,7 +4503,7 @@ gimple_try_set_catch_is_cleanup (gtry *g, bool catch_is_cleanup)
>  /* Set EVAL to be the sequence of statements to use as the body for
>     GIMPLE_TRY TRY_STMT.  */
>
> -static inline void
> +inline void
>  gimple_try_set_eval (gtry *try_stmt, gimple_seq eval)
>  {
>    try_stmt->eval = eval;
> @@ -4513,7 +4513,7 @@ gimple_try_set_eval (gtry *try_stmt, gimple_seq eval)
>  /* Set CLEANUP to be the sequence of statements to use as the cleanup
>     body for GIMPLE_TRY TRY_STMT.  */
>
> -static inline void
> +inline void
>  gimple_try_set_cleanup (gtry *try_stmt, gimple_seq cleanup)
>  {
>    try_stmt->cleanup = cleanup;
> @@ -4522,7 +4522,7 @@ gimple_try_set_cleanup (gtry *try_stmt, gimple_seq cleanup)
>
>  /* Return a pointer to the cleanup sequence for cleanup statement GS.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_wce_cleanup_ptr (gimple *gs)
>  {
>    gimple_statement_wce *wce_stmt = as_a <gimple_statement_wce *> (gs);
> @@ -4532,7 +4532,7 @@ gimple_wce_cleanup_ptr (gimple *gs)
>
>  /* Return the cleanup sequence for cleanup statement GS.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_wce_cleanup (gimple *gs)
>  {
>    return *gimple_wce_cleanup_ptr (gs);
> @@ -4541,7 +4541,7 @@ gimple_wce_cleanup (gimple *gs)
>
>  /* Set CLEANUP to be the cleanup sequence for GS.  */
>
> -static inline void
> +inline void
>  gimple_wce_set_cleanup (gimple *gs, gimple_seq cleanup)
>  {
>    gimple_statement_wce *wce_stmt = as_a <gimple_statement_wce *> (gs);
> @@ -4551,7 +4551,7 @@ gimple_wce_set_cleanup (gimple *gs, gimple_seq cleanup)
>
>  /* Return the CLEANUP_EH_ONLY flag for a WCE tuple.  */
>
> -static inline bool
> +inline bool
>  gimple_wce_cleanup_eh_only (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
> @@ -4561,7 +4561,7 @@ gimple_wce_cleanup_eh_only (const gimple *gs)
>
>  /* Set the CLEANUP_EH_ONLY flag for a WCE tuple.  */
>
> -static inline void
> +inline void
>  gimple_wce_set_cleanup_eh_only (gimple *gs, bool eh_only_p)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
> @@ -4571,7 +4571,7 @@ gimple_wce_set_cleanup_eh_only (gimple *gs, bool eh_only_p)
>
>  /* Return the maximum number of arguments supported by GIMPLE_PHI GS.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_phi_capacity (const gimple *gs)
>  {
>    const gphi *phi_stmt = as_a <const gphi *> (gs);
> @@ -4583,7 +4583,7 @@ gimple_phi_capacity (const gimple *gs)
>     be exactly the number of incoming edges for the basic block holding
>     GS.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_phi_num_args (const gimple *gs)
>  {
>    const gphi *phi_stmt = as_a <const gphi *> (gs);
> @@ -4593,13 +4593,13 @@ gimple_phi_num_args (const gimple *gs)
>
>  /* Return the SSA name created by GIMPLE_PHI GS.  */
>
> -static inline tree
> +inline tree
>  gimple_phi_result (const gphi *gs)
>  {
>    return gs->result;
>  }
>
> -static inline tree
> +inline tree
>  gimple_phi_result (const gimple *gs)
>  {
>    const gphi *phi_stmt = as_a <const gphi *> (gs);
> @@ -4608,13 +4608,13 @@ gimple_phi_result (const gimple *gs)
>
>  /* Return a pointer to the SSA name created by GIMPLE_PHI GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_phi_result_ptr (gphi *gs)
>  {
>    return &gs->result;
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_phi_result_ptr (gimple *gs)
>  {
>    gphi *phi_stmt = as_a <gphi *> (gs);
> @@ -4623,7 +4623,7 @@ gimple_phi_result_ptr (gimple *gs)
>
>  /* Set RESULT to be the SSA name created by GIMPLE_PHI PHI.  */
>
> -static inline void
> +inline void
>  gimple_phi_set_result (gphi *phi, tree result)
>  {
>    phi->result = result;
> @@ -4635,21 +4635,21 @@ gimple_phi_set_result (gphi *phi, tree result)
>  /* Return the PHI argument corresponding to incoming edge INDEX for
>     GIMPLE_PHI GS.  */
>
> -static inline struct phi_arg_d *
> +inline struct phi_arg_d *
>  gimple_phi_arg (gphi *gs, unsigned index)
>  {
>    gcc_gimple_checking_assert (index < gs->nargs);
>    return &(gs->args[index]);
>  }
>
> -static inline const phi_arg_d *
> +inline const phi_arg_d *
>  gimple_phi_arg (const gphi *gs, unsigned index)
>  {
>    gcc_gimple_checking_assert (index < gs->nargs);
>    return &(gs->args[index]);
>  }
>
> -static inline struct phi_arg_d *
> +inline struct phi_arg_d *
>  gimple_phi_arg (gimple *gs, unsigned index)
>  {
>    gphi *phi_stmt = as_a <gphi *> (gs);
> @@ -4659,7 +4659,7 @@ gimple_phi_arg (gimple *gs, unsigned index)
>  /* Set PHIARG to be the argument corresponding to incoming edge INDEX
>     for GIMPLE_PHI PHI.  */
>
> -static inline void
> +inline void
>  gimple_phi_set_arg (gphi *phi, unsigned index, struct phi_arg_d * phiarg)
>  {
>    gcc_gimple_checking_assert (index < phi->nargs);
> @@ -4669,7 +4669,7 @@ gimple_phi_set_arg (gphi *phi, unsigned index, struct phi_arg_d * phiarg)
>  /* Return the PHI nodes for basic block BB, or NULL if there are no
>     PHI nodes.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  phi_nodes (const_basic_block bb)
>  {
>    gcc_checking_assert (!(bb->flags & BB_RTL));
> @@ -4678,7 +4678,7 @@ phi_nodes (const_basic_block bb)
>
>  /* Return a pointer to the PHI nodes for basic block BB.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  phi_nodes_ptr (basic_block bb)
>  {
>    gcc_checking_assert (!(bb->flags & BB_RTL));
> @@ -4687,13 +4687,13 @@ phi_nodes_ptr (basic_block bb)
>
>  /* Return the tree operand for argument I of PHI node GS.  */
>
> -static inline tree
> +inline tree
>  gimple_phi_arg_def (const gphi *gs, size_t index)
>  {
>    return gimple_phi_arg (gs, index)->def;
>  }
>
> -static inline tree
> +inline tree
>  gimple_phi_arg_def (gimple *gs, size_t index)
>  {
>    return gimple_phi_arg (gs, index)->def;
> @@ -4702,7 +4702,7 @@ gimple_phi_arg_def (gimple *gs, size_t index)
>
>  /* Return a pointer to the tree operand for argument I of phi node PHI.  */
>
> -static inline tree *
> +inline tree *
>  gimple_phi_arg_def_ptr (gphi *phi, size_t index)
>  {
>    return &gimple_phi_arg (phi, index)->def;
> @@ -4710,7 +4710,7 @@ gimple_phi_arg_def_ptr (gphi *phi, size_t index)
>
>  /* Return the edge associated with argument I of phi node PHI.  */
>
> -static inline edge
> +inline edge
>  gimple_phi_arg_edge (const gphi *phi, size_t i)
>  {
>    return EDGE_PRED (gimple_bb (phi), i);
> @@ -4718,7 +4718,7 @@ gimple_phi_arg_edge (const gphi *phi, size_t i)
>
>  /* Return the source location of gimple argument I of phi node PHI.  */
>
> -static inline location_t
> +inline location_t
>  gimple_phi_arg_location (const gphi *phi, size_t i)
>  {
>    return gimple_phi_arg (phi, i)->locus;
> @@ -4726,7 +4726,7 @@ gimple_phi_arg_location (const gphi *phi, size_t i)
>
>  /* Return the source location of the argument on edge E of phi node PHI.  */
>
> -static inline location_t
> +inline location_t
>  gimple_phi_arg_location_from_edge (gphi *phi, edge e)
>  {
>    return gimple_phi_arg (phi, e->dest_idx)->locus;
> @@ -4734,7 +4734,7 @@ gimple_phi_arg_location_from_edge (gphi *phi, edge e)
>
>  /* Set the source location of gimple argument I of phi node PHI to LOC.  */
>
> -static inline void
> +inline void
>  gimple_phi_arg_set_location (gphi *phi, size_t i, location_t loc)
>  {
>    gimple_phi_arg (phi, i)->locus = loc;
> @@ -4742,7 +4742,7 @@ gimple_phi_arg_set_location (gphi *phi, size_t i, location_t loc)
>
>  /* Return address of source location of gimple argument I of phi node PHI.  */
>
> -static inline location_t *
> +inline location_t *
>  gimple_phi_arg_location_ptr (gphi *phi, size_t i)
>  {
>    return &gimple_phi_arg (phi, i)->locus;
> @@ -4750,7 +4750,7 @@ gimple_phi_arg_location_ptr (gphi *phi, size_t i)
>
>  /* Return TRUE if argument I of phi node PHI has a location record.  */
>
> -static inline bool
> +inline bool
>  gimple_phi_arg_has_location (const gphi *phi, size_t i)
>  {
>    return gimple_phi_arg_location (phi, i) != UNKNOWN_LOCATION;
> @@ -4758,7 +4758,7 @@ gimple_phi_arg_has_location (const gphi *phi, size_t i)
>
>  /* Return the number of arguments that can be accessed by gimple_arg.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_num_args (const gimple *gs)
>  {
>    if (auto phi = dyn_cast<const gphi *> (gs))
> @@ -4773,7 +4773,7 @@ gimple_num_args (const gimple *gs)
>     If it's a call, return function argument I.
>     If it's a PHI, return the value of PHI argument I.  */
>
> -static inline tree
> +inline tree
>  gimple_arg (const gimple *gs, unsigned int i)
>  {
>    if (auto phi = dyn_cast<const gphi *> (gs))
> @@ -4785,7 +4785,7 @@ gimple_arg (const gimple *gs, unsigned int i)
>
>  /* Return a pointer to gimple_arg (GS, I).  */
>
> -static inline tree *
> +inline tree *
>  gimple_arg_ptr (gimple *gs, unsigned int i)
>  {
>    if (auto phi = dyn_cast<gphi *> (gs))
> @@ -4797,7 +4797,7 @@ gimple_arg_ptr (gimple *gs, unsigned int i)
>
>  /* Return the region number for GIMPLE_RESX RESX_STMT.  */
>
> -static inline int
> +inline int
>  gimple_resx_region (const gresx *resx_stmt)
>  {
>    return resx_stmt->region;
> @@ -4805,7 +4805,7 @@ gimple_resx_region (const gresx *resx_stmt)
>
>  /* Set REGION to be the region number for GIMPLE_RESX RESX_STMT.  */
>
> -static inline void
> +inline void
>  gimple_resx_set_region (gresx *resx_stmt, int region)
>  {
>    resx_stmt->region = region;
> @@ -4813,7 +4813,7 @@ gimple_resx_set_region (gresx *resx_stmt, int region)
>
>  /* Return the region number for GIMPLE_EH_DISPATCH EH_DISPATCH_STMT.  */
>
> -static inline int
> +inline int
>  gimple_eh_dispatch_region (const geh_dispatch *eh_dispatch_stmt)
>  {
>    return eh_dispatch_stmt->region;
> @@ -4822,7 +4822,7 @@ gimple_eh_dispatch_region (const geh_dispatch *eh_dispatch_stmt)
>  /* Set REGION to be the region number for GIMPLE_EH_DISPATCH
>     EH_DISPATCH_STMT.  */
>
> -static inline void
> +inline void
>  gimple_eh_dispatch_set_region (geh_dispatch *eh_dispatch_stmt, int region)
>  {
>    eh_dispatch_stmt->region = region;
> @@ -4830,7 +4830,7 @@ gimple_eh_dispatch_set_region (geh_dispatch *eh_dispatch_stmt, int region)
>
>  /* Return the number of labels associated with the switch statement GS.  */
>
> -static inline unsigned
> +inline unsigned
>  gimple_switch_num_labels (const gswitch *gs)
>  {
>    unsigned num_ops;
> @@ -4843,7 +4843,7 @@ gimple_switch_num_labels (const gswitch *gs)
>
>  /* Set NLABELS to be the number of labels for the switch statement GS.  */
>
> -static inline void
> +inline void
>  gimple_switch_set_num_labels (gswitch *g, unsigned nlabels)
>  {
>    GIMPLE_CHECK (g, GIMPLE_SWITCH);
> @@ -4853,7 +4853,7 @@ gimple_switch_set_num_labels (gswitch *g, unsigned nlabels)
>
>  /* Return the index variable used by the switch statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_switch_index (const gswitch *gs)
>  {
>    return gs->op[0];
> @@ -4862,7 +4862,7 @@ gimple_switch_index (const gswitch *gs)
>
>  /* Return a pointer to the index variable for the switch statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_switch_index_ptr (gswitch *gs)
>  {
>    return &gs->op[0];
> @@ -4871,7 +4871,7 @@ gimple_switch_index_ptr (gswitch *gs)
>
>  /* Set INDEX to be the index variable for switch statement GS.  */
>
> -static inline void
> +inline void
>  gimple_switch_set_index (gswitch *gs, tree index)
>  {
>    gcc_gimple_checking_assert (SSA_VAR_P (index) || CONSTANT_CLASS_P (index));
> @@ -4882,7 +4882,7 @@ gimple_switch_set_index (gswitch *gs, tree index)
>  /* Return the label numbered INDEX.  The default label is 0, followed by any
>     labels in a switch statement.  */
>
> -static inline tree
> +inline tree
>  gimple_switch_label (const gswitch *gs, unsigned index)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 1);
> @@ -4891,7 +4891,7 @@ gimple_switch_label (const gswitch *gs, unsigned index)
>
>  /* Set the label number INDEX to LABEL.  0 is always the default label.  */
>
> -static inline void
> +inline void
>  gimple_switch_set_label (gswitch *gs, unsigned index, tree label)
>  {
>    gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 1
> @@ -4902,7 +4902,7 @@ gimple_switch_set_label (gswitch *gs, unsigned index, tree label)
>
>  /* Return the default label for a switch statement.  */
>
> -static inline tree
> +inline tree
>  gimple_switch_default_label (const gswitch *gs)
>  {
>    tree label = gimple_switch_label (gs, 0);
> @@ -4912,7 +4912,7 @@ gimple_switch_default_label (const gswitch *gs)
>
>  /* Set the default label for a switch statement.  */
>
> -static inline void
> +inline void
>  gimple_switch_set_default_label (gswitch *gs, tree label)
>  {
>    gcc_checking_assert (!CASE_LOW (label) && !CASE_HIGH (label));
> @@ -4921,7 +4921,7 @@ gimple_switch_set_default_label (gswitch *gs, tree label)
>
>  /* Return true if GS is a GIMPLE_DEBUG statement.  */
>
> -static inline bool
> +inline bool
>  is_gimple_debug (const gimple *gs)
>  {
>    return gimple_code (gs) == GIMPLE_DEBUG;
> @@ -4930,7 +4930,7 @@ is_gimple_debug (const gimple *gs)
>
>  /* Return the first nondebug statement in GIMPLE sequence S.  */
>
> -static inline gimple *
> +inline gimple *
>  gimple_seq_first_nondebug_stmt (gimple_seq s)
>  {
>    gimple_seq_node n = gimple_seq_first (s);
> @@ -4942,7 +4942,7 @@ gimple_seq_first_nondebug_stmt (gimple_seq s)
>
>  /* Return the last nondebug statement in GIMPLE sequence S.  */
>
> -static inline gimple *
> +inline gimple *
>  gimple_seq_last_nondebug_stmt (gimple_seq s)
>  {
>    gimple_seq_node n;
> @@ -4957,7 +4957,7 @@ gimple_seq_last_nondebug_stmt (gimple_seq s)
>
>  /* Return true if S is a GIMPLE_DEBUG BIND statement.  */
>
> -static inline bool
> +inline bool
>  gimple_debug_bind_p (const gimple *s)
>  {
>    if (is_gimple_debug (s))
> @@ -4968,7 +4968,7 @@ gimple_debug_bind_p (const gimple *s)
>
>  /* Return the variable bound in a GIMPLE_DEBUG bind statement.  */
>
> -static inline tree
> +inline tree
>  gimple_debug_bind_get_var (const gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -4979,7 +4979,7 @@ gimple_debug_bind_get_var (const gimple *dbg)
>  /* Return the value bound to the variable in a GIMPLE_DEBUG bind
>     statement.  */
>
> -static inline tree
> +inline tree
>  gimple_debug_bind_get_value (const gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -4990,7 +4990,7 @@ gimple_debug_bind_get_value (const gimple *dbg)
>  /* Return a pointer to the value bound to the variable in a
>     GIMPLE_DEBUG bind statement.  */
>
> -static inline tree *
> +inline tree *
>  gimple_debug_bind_get_value_ptr (gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5000,7 +5000,7 @@ gimple_debug_bind_get_value_ptr (gimple *dbg)
>
>  /* Set the variable bound in a GIMPLE_DEBUG bind statement.  */
>
> -static inline void
> +inline void
>  gimple_debug_bind_set_var (gimple *dbg, tree var)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5011,7 +5011,7 @@ gimple_debug_bind_set_var (gimple *dbg, tree var)
>  /* Set the value bound to the variable in a GIMPLE_DEBUG bind
>     statement.  */
>
> -static inline void
> +inline void
>  gimple_debug_bind_set_value (gimple *dbg, tree value)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5026,7 +5026,7 @@ gimple_debug_bind_set_value (gimple *dbg, tree value)
>  /* Remove the value bound to the variable in a GIMPLE_DEBUG bind
>     statement.  */
>
> -static inline void
> +inline void
>  gimple_debug_bind_reset_value (gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5037,7 +5037,7 @@ gimple_debug_bind_reset_value (gimple *dbg)
>  /* Return true if the GIMPLE_DEBUG bind statement is bound to a
>     value.  */
>
> -static inline bool
> +inline bool
>  gimple_debug_bind_has_value_p (gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5049,7 +5049,7 @@ gimple_debug_bind_has_value_p (gimple *dbg)
>
>  /* Return true if S is a GIMPLE_DEBUG SOURCE BIND statement.  */
>
> -static inline bool
> +inline bool
>  gimple_debug_source_bind_p (const gimple *s)
>  {
>    if (is_gimple_debug (s))
> @@ -5060,7 +5060,7 @@ gimple_debug_source_bind_p (const gimple *s)
>
>  /* Return the variable bound in a GIMPLE_DEBUG source bind statement.  */
>
> -static inline tree
> +inline tree
>  gimple_debug_source_bind_get_var (const gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5071,7 +5071,7 @@ gimple_debug_source_bind_get_var (const gimple *dbg)
>  /* Return the value bound to the variable in a GIMPLE_DEBUG source bind
>     statement.  */
>
> -static inline tree
> +inline tree
>  gimple_debug_source_bind_get_value (const gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5082,7 +5082,7 @@ gimple_debug_source_bind_get_value (const gimple *dbg)
>  /* Return a pointer to the value bound to the variable in a
>     GIMPLE_DEBUG source bind statement.  */
>
> -static inline tree *
> +inline tree *
>  gimple_debug_source_bind_get_value_ptr (gimple *dbg)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5092,7 +5092,7 @@ gimple_debug_source_bind_get_value_ptr (gimple *dbg)
>
>  /* Set the variable bound in a GIMPLE_DEBUG source bind statement.  */
>
> -static inline void
> +inline void
>  gimple_debug_source_bind_set_var (gimple *dbg, tree var)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5103,7 +5103,7 @@ gimple_debug_source_bind_set_var (gimple *dbg, tree var)
>  /* Set the value bound to the variable in a GIMPLE_DEBUG source bind
>     statement.  */
>
> -static inline void
> +inline void
>  gimple_debug_source_bind_set_value (gimple *dbg, tree value)
>  {
>    GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
> @@ -5113,7 +5113,7 @@ gimple_debug_source_bind_set_value (gimple *dbg, tree value)
>
>  /* Return true if S is a GIMPLE_DEBUG BEGIN_STMT statement.  */
>
> -static inline bool
> +inline bool
>  gimple_debug_begin_stmt_p (const gimple *s)
>  {
>    if (is_gimple_debug (s))
> @@ -5124,7 +5124,7 @@ gimple_debug_begin_stmt_p (const gimple *s)
>
>  /* Return true if S is a GIMPLE_DEBUG INLINE_ENTRY statement.  */
>
> -static inline bool
> +inline bool
>  gimple_debug_inline_entry_p (const gimple *s)
>  {
>    if (is_gimple_debug (s))
> @@ -5135,7 +5135,7 @@ gimple_debug_inline_entry_p (const gimple *s)
>
>  /* Return true if S is a GIMPLE_DEBUG non-binding marker statement.  */
>
> -static inline bool
> +inline bool
>  gimple_debug_nonbind_marker_p (const gimple *s)
>  {
>    if (is_gimple_debug (s))
> @@ -5147,7 +5147,7 @@ gimple_debug_nonbind_marker_p (const gimple *s)
>
>  /* Return the line number for EXPR, or return -1 if we have no line
>     number information for it.  */
> -static inline int
> +inline int
>  get_lineno (const gimple *stmt)
>  {
>    location_t loc;
> @@ -5164,7 +5164,7 @@ get_lineno (const gimple *stmt)
>
>  /* Return a pointer to the body for the OMP statement GS.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_omp_body_ptr (gimple *gs)
>  {
>    return &static_cast <gimple_statement_omp *> (gs)->body;
> @@ -5172,7 +5172,7 @@ gimple_omp_body_ptr (gimple *gs)
>
>  /* Return the body for the OMP statement GS.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_omp_body (const gimple *gs)
>  {
>    return *gimple_omp_body_ptr (const_cast <gimple *> (gs));
> @@ -5180,7 +5180,7 @@ gimple_omp_body (const gimple *gs)
>
>  /* Set BODY to be the body for the OMP statement GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_set_body (gimple *gs, gimple_seq body)
>  {
>    static_cast <gimple_statement_omp *> (gs)->body = body;
> @@ -5189,7 +5189,7 @@ gimple_omp_set_body (gimple *gs, gimple_seq body)
>
>  /* Return the name associated with OMP_CRITICAL statement CRIT_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_critical_name (const gomp_critical *crit_stmt)
>  {
>    return crit_stmt->name;
> @@ -5199,7 +5199,7 @@ gimple_omp_critical_name (const gomp_critical *crit_stmt)
>  /* Return a pointer to the name associated with OMP critical statement
>     CRIT_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_critical_name_ptr (gomp_critical *crit_stmt)
>  {
>    return &crit_stmt->name;
> @@ -5209,7 +5209,7 @@ gimple_omp_critical_name_ptr (gomp_critical *crit_stmt)
>  /* Set NAME to be the name associated with OMP critical statement
>     CRIT_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_critical_set_name (gomp_critical *crit_stmt, tree name)
>  {
>    crit_stmt->name = name;
> @@ -5218,7 +5218,7 @@ gimple_omp_critical_set_name (gomp_critical *crit_stmt, tree name)
>
>  /* Return the clauses associated with OMP_CRITICAL statement CRIT_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_critical_clauses (const gomp_critical *crit_stmt)
>  {
>    return crit_stmt->clauses;
> @@ -5228,7 +5228,7 @@ gimple_omp_critical_clauses (const gomp_critical *crit_stmt)
>  /* Return a pointer to the clauses associated with OMP critical statement
>     CRIT_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_critical_clauses_ptr (gomp_critical *crit_stmt)
>  {
>    return &crit_stmt->clauses;
> @@ -5238,7 +5238,7 @@ gimple_omp_critical_clauses_ptr (gomp_critical *crit_stmt)
>  /* Set CLAUSES to be the clauses associated with OMP critical statement
>     CRIT_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_critical_set_clauses (gomp_critical *crit_stmt, tree clauses)
>  {
>    crit_stmt->clauses = clauses;
> @@ -5247,7 +5247,7 @@ gimple_omp_critical_set_clauses (gomp_critical *crit_stmt, tree clauses)
>
>  /* Return the clauses associated with OMP_ORDERED statement ORD_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_ordered_clauses (const gomp_ordered *ord_stmt)
>  {
>    return ord_stmt->clauses;
> @@ -5257,7 +5257,7 @@ gimple_omp_ordered_clauses (const gomp_ordered *ord_stmt)
>  /* Return a pointer to the clauses associated with OMP ordered statement
>     ORD_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_ordered_clauses_ptr (gomp_ordered *ord_stmt)
>  {
>    return &ord_stmt->clauses;
> @@ -5267,7 +5267,7 @@ gimple_omp_ordered_clauses_ptr (gomp_ordered *ord_stmt)
>  /* Set CLAUSES to be the clauses associated with OMP ordered statement
>     ORD_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_ordered_set_clauses (gomp_ordered *ord_stmt, tree clauses)
>  {
>    ord_stmt->clauses = clauses;
> @@ -5276,7 +5276,7 @@ gimple_omp_ordered_set_clauses (gomp_ordered *ord_stmt, tree clauses)
>
>  /* Return the clauses associated with OMP_SCAN statement SCAN_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_scan_clauses (const gomp_scan *scan_stmt)
>  {
>    return scan_stmt->clauses;
> @@ -5286,7 +5286,7 @@ gimple_omp_scan_clauses (const gomp_scan *scan_stmt)
>  /* Return a pointer to the clauses associated with OMP scan statement
>     ORD_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_scan_clauses_ptr (gomp_scan *scan_stmt)
>  {
>    return &scan_stmt->clauses;
> @@ -5296,7 +5296,7 @@ gimple_omp_scan_clauses_ptr (gomp_scan *scan_stmt)
>  /* Set CLAUSES to be the clauses associated with OMP scan statement
>     ORD_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_scan_set_clauses (gomp_scan *scan_stmt, tree clauses)
>  {
>    scan_stmt->clauses = clauses;
> @@ -5305,7 +5305,7 @@ gimple_omp_scan_set_clauses (gomp_scan *scan_stmt, tree clauses)
>
>  /* Return the clauses associated with OMP_TASKGROUP statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_taskgroup_clauses (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
> @@ -5317,7 +5317,7 @@ gimple_omp_taskgroup_clauses (const gimple *gs)
>  /* Return a pointer to the clauses associated with OMP taskgroup statement
>     GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_taskgroup_clauses_ptr (gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
> @@ -5328,7 +5328,7 @@ gimple_omp_taskgroup_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the clauses associated with OMP taskgroup statement
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_taskgroup_set_clauses (gimple *gs, tree clauses)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
> @@ -5339,7 +5339,7 @@ gimple_omp_taskgroup_set_clauses (gimple *gs, tree clauses)
>
>  /* Return the clauses associated with OMP_MASKED statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_masked_clauses (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
> @@ -5351,7 +5351,7 @@ gimple_omp_masked_clauses (const gimple *gs)
>  /* Return a pointer to the clauses associated with OMP masked statement
>     GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_masked_clauses_ptr (gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
> @@ -5362,7 +5362,7 @@ gimple_omp_masked_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the clauses associated with OMP masked statement
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_masked_set_clauses (gimple *gs, tree clauses)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
> @@ -5373,7 +5373,7 @@ gimple_omp_masked_set_clauses (gimple *gs, tree clauses)
>
>  /* Return the clauses associated with OMP_SCOPE statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_scope_clauses (const gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
> @@ -5385,7 +5385,7 @@ gimple_omp_scope_clauses (const gimple *gs)
>  /* Return a pointer to the clauses associated with OMP scope statement
>     GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_scope_clauses_ptr (gimple *gs)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
> @@ -5396,7 +5396,7 @@ gimple_omp_scope_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the clauses associated with OMP scope statement
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_scope_set_clauses (gimple *gs, tree clauses)
>  {
>    GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
> @@ -5407,7 +5407,7 @@ gimple_omp_scope_set_clauses (gimple *gs, tree clauses)
>
>  /* Return the kind of the OMP_FOR statemement G.  */
>
> -static inline int
> +inline int
>  gimple_omp_for_kind (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
> @@ -5417,7 +5417,7 @@ gimple_omp_for_kind (const gimple *g)
>
>  /* Set the kind of the OMP_FOR statement G.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_kind (gomp_for *g, int kind)
>  {
>    g->subcode = (g->subcode & ~GF_OMP_FOR_KIND_MASK)
> @@ -5428,7 +5428,7 @@ gimple_omp_for_set_kind (gomp_for *g, int kind)
>  /* Return true if OMP_FOR statement G has the
>     GF_OMP_FOR_COMBINED flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_for_combined_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
> @@ -5439,7 +5439,7 @@ gimple_omp_for_combined_p (const gimple *g)
>  /* Set the GF_OMP_FOR_COMBINED field in the OMP_FOR statement G depending on
>     the boolean value of COMBINED_P.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_combined_p (gomp_for *g, bool combined_p)
>  {
>    if (combined_p)
> @@ -5452,7 +5452,7 @@ gimple_omp_for_set_combined_p (gomp_for *g, bool combined_p)
>  /* Return true if the OMP_FOR statement G has the
>     GF_OMP_FOR_COMBINED_INTO flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_for_combined_into_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
> @@ -5463,7 +5463,7 @@ gimple_omp_for_combined_into_p (const gimple *g)
>  /* Set the GF_OMP_FOR_COMBINED_INTO field in the OMP_FOR statement G depending
>     on the boolean value of COMBINED_P.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_combined_into_p (gomp_for *g, bool combined_p)
>  {
>    if (combined_p)
> @@ -5475,7 +5475,7 @@ gimple_omp_for_set_combined_into_p (gomp_for *g, bool combined_p)
>
>  /* Return the clauses associated with the OMP_FOR statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_for_clauses (const gimple *gs)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5486,7 +5486,7 @@ gimple_omp_for_clauses (const gimple *gs)
>  /* Return a pointer to the clauses associated with the OMP_FOR statement
>     GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_for_clauses_ptr (gimple *gs)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5497,7 +5497,7 @@ gimple_omp_for_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the list of clauses associated with the OMP_FOR statement
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_clauses (gimple *gs, tree clauses)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5507,7 +5507,7 @@ gimple_omp_for_set_clauses (gimple *gs, tree clauses)
>
>  /* Get the collapse count of the OMP_FOR statement GS.  */
>
> -static inline size_t
> +inline size_t
>  gimple_omp_for_collapse (const gimple *gs)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5517,7 +5517,7 @@ gimple_omp_for_collapse (const gimple *gs)
>
>  /* Return the condition code associated with the OMP_FOR statement GS.  */
>
> -static inline enum tree_code
> +inline enum tree_code
>  gimple_omp_for_cond (const gimple *gs, size_t i)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5528,7 +5528,7 @@ gimple_omp_for_cond (const gimple *gs, size_t i)
>
>  /* Set COND to be the condition code for the OMP_FOR statement GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_cond (gimple *gs, size_t i, enum tree_code cond)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5540,7 +5540,7 @@ gimple_omp_for_set_cond (gimple *gs, size_t i, enum tree_code cond)
>
>  /* Return the index variable for the OMP_FOR statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_for_index (const gimple *gs, size_t i)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5551,7 +5551,7 @@ gimple_omp_for_index (const gimple *gs, size_t i)
>
>  /* Return a pointer to the index variable for the OMP_FOR statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_for_index_ptr (gimple *gs, size_t i)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5562,7 +5562,7 @@ gimple_omp_for_index_ptr (gimple *gs, size_t i)
>
>  /* Set INDEX to be the index variable for the OMP_FOR statement GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_index (gimple *gs, size_t i, tree index)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5573,7 +5573,7 @@ gimple_omp_for_set_index (gimple *gs, size_t i, tree index)
>
>  /* Return the initial value for the OMP_FOR statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_for_initial (const gimple *gs, size_t i)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5584,7 +5584,7 @@ gimple_omp_for_initial (const gimple *gs, size_t i)
>
>  /* Return a pointer to the initial value for the OMP_FOR statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_for_initial_ptr (gimple *gs, size_t i)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5595,7 +5595,7 @@ gimple_omp_for_initial_ptr (gimple *gs, size_t i)
>
>  /* Set INITIAL to be the initial value for the OMP_FOR statement GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_initial (gimple *gs, size_t i, tree initial)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5606,7 +5606,7 @@ gimple_omp_for_set_initial (gimple *gs, size_t i, tree initial)
>
>  /* Return the final value for the OMP_FOR statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_for_final (const gimple *gs, size_t i)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5617,7 +5617,7 @@ gimple_omp_for_final (const gimple *gs, size_t i)
>
>  /* Return a pointer to the final value for the OMP_FOR statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_for_final_ptr (gimple *gs, size_t i)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5628,7 +5628,7 @@ gimple_omp_for_final_ptr (gimple *gs, size_t i)
>
>  /* Set FINAL to be the final value for the OMP_FOR statement GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_final (gimple *gs, size_t i, tree final)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5639,7 +5639,7 @@ gimple_omp_for_set_final (gimple *gs, size_t i, tree final)
>
>  /* Return the increment value for the OMP_FOR statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_for_incr (const gimple *gs, size_t i)
>  {
>    const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
> @@ -5650,7 +5650,7 @@ gimple_omp_for_incr (const gimple *gs, size_t i)
>
>  /* Return a pointer to the increment value for the OMP_FOR statement GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_for_incr_ptr (gimple *gs, size_t i)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5661,7 +5661,7 @@ gimple_omp_for_incr_ptr (gimple *gs, size_t i)
>
>  /* Set INCR to be the increment value for the OMP_FOR statement GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_incr (gimple *gs, size_t i, tree incr)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5673,7 +5673,7 @@ gimple_omp_for_set_incr (gimple *gs, size_t i, tree incr)
>  /* Return a pointer to the sequence of statements to execute before the OMP_FOR
>     statement GS starts.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_omp_for_pre_body_ptr (gimple *gs)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5684,7 +5684,7 @@ gimple_omp_for_pre_body_ptr (gimple *gs)
>  /* Return the sequence of statements to execute before the OMP_FOR
>     statement GS starts.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_omp_for_pre_body (const gimple *gs)
>  {
>    return *gimple_omp_for_pre_body_ptr (const_cast <gimple *> (gs));
> @@ -5694,7 +5694,7 @@ gimple_omp_for_pre_body (const gimple *gs)
>  /* Set PRE_BODY to be the sequence of statements to execute before the
>     OMP_FOR statement GS starts.  */
>
> -static inline void
> +inline void
>  gimple_omp_for_set_pre_body (gimple *gs, gimple_seq pre_body)
>  {
>    gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
> @@ -5703,7 +5703,7 @@ gimple_omp_for_set_pre_body (gimple *gs, gimple_seq pre_body)
>
>  /* Return the clauses associated with OMP_PARALLEL GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_parallel_clauses (const gimple *gs)
>  {
>    const gomp_parallel *omp_parallel_stmt = as_a <const gomp_parallel *> (gs);
> @@ -5713,7 +5713,7 @@ gimple_omp_parallel_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_PARALLEL_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_parallel_clauses_ptr (gomp_parallel *omp_parallel_stmt)
>  {
>    return &omp_parallel_stmt->clauses;
> @@ -5722,7 +5722,7 @@ gimple_omp_parallel_clauses_ptr (gomp_parallel *omp_parallel_stmt)
>
>  /* Set CLAUSES to be the list of clauses associated with OMP_PARALLEL_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_parallel_set_clauses (gomp_parallel *omp_parallel_stmt,
>                                  tree clauses)
>  {
> @@ -5732,7 +5732,7 @@ gimple_omp_parallel_set_clauses (gomp_parallel *omp_parallel_stmt,
>
>  /* Return the child function used to hold the body of OMP_PARALLEL_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_parallel_child_fn (const gomp_parallel *omp_parallel_stmt)
>  {
>    return omp_parallel_stmt->child_fn;
> @@ -5741,7 +5741,7 @@ gimple_omp_parallel_child_fn (const gomp_parallel *omp_parallel_stmt)
>  /* Return a pointer to the child function used to hold the body of
>     OMP_PARALLEL_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_parallel_child_fn_ptr (gomp_parallel *omp_parallel_stmt)
>  {
>    return &omp_parallel_stmt->child_fn;
> @@ -5750,7 +5750,7 @@ gimple_omp_parallel_child_fn_ptr (gomp_parallel *omp_parallel_stmt)
>
>  /* Set CHILD_FN to be the child function for OMP_PARALLEL_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_parallel_set_child_fn (gomp_parallel *omp_parallel_stmt,
>                                   tree child_fn)
>  {
> @@ -5761,7 +5761,7 @@ gimple_omp_parallel_set_child_fn (gomp_parallel *omp_parallel_stmt,
>  /* Return the artificial argument used to send variables and values
>     from the parent to the children threads in OMP_PARALLEL_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_parallel_data_arg (const gomp_parallel *omp_parallel_stmt)
>  {
>    return omp_parallel_stmt->data_arg;
> @@ -5770,7 +5770,7 @@ gimple_omp_parallel_data_arg (const gomp_parallel *omp_parallel_stmt)
>
>  /* Return a pointer to the data argument for OMP_PARALLEL_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_parallel_data_arg_ptr (gomp_parallel *omp_parallel_stmt)
>  {
>    return &omp_parallel_stmt->data_arg;
> @@ -5779,7 +5779,7 @@ gimple_omp_parallel_data_arg_ptr (gomp_parallel *omp_parallel_stmt)
>
>  /* Set DATA_ARG to be the data argument for OMP_PARALLEL_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_parallel_set_data_arg (gomp_parallel *omp_parallel_stmt,
>                                   tree data_arg)
>  {
> @@ -5788,7 +5788,7 @@ gimple_omp_parallel_set_data_arg (gomp_parallel *omp_parallel_stmt,
>
>  /* Return the clauses associated with OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_task_clauses (const gimple *gs)
>  {
>    const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
> @@ -5798,7 +5798,7 @@ gimple_omp_task_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_task_clauses_ptr (gimple *gs)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -5809,7 +5809,7 @@ gimple_omp_task_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the list of clauses associated with OMP_TASK
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_clauses (gimple *gs, tree clauses)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -5820,7 +5820,7 @@ gimple_omp_task_set_clauses (gimple *gs, tree clauses)
>  /* Return true if OMP task statement G has the
>     GF_OMP_TASK_TASKLOOP flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_task_taskloop_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
> @@ -5831,7 +5831,7 @@ gimple_omp_task_taskloop_p (const gimple *g)
>  /* Set the GF_OMP_TASK_TASKLOOP field in G depending on the boolean
>     value of TASKLOOP_P.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_taskloop_p (gimple *g, bool taskloop_p)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
> @@ -5845,7 +5845,7 @@ gimple_omp_task_set_taskloop_p (gimple *g, bool taskloop_p)
>  /* Return true if OMP task statement G has the
>     GF_OMP_TASK_TASKWAIT flag set.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_task_taskwait_p (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
> @@ -5856,7 +5856,7 @@ gimple_omp_task_taskwait_p (const gimple *g)
>  /* Set the GF_OMP_TASK_TASKWAIT field in G depending on the boolean
>     value of TASKWAIT_P.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_taskwait_p (gimple *g, bool taskwait_p)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
> @@ -5869,7 +5869,7 @@ gimple_omp_task_set_taskwait_p (gimple *g, bool taskwait_p)
>
>  /* Return the child function used to hold the body of OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_task_child_fn (const gimple *gs)
>  {
>    const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
> @@ -5879,7 +5879,7 @@ gimple_omp_task_child_fn (const gimple *gs)
>  /* Return a pointer to the child function used to hold the body of
>     OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_task_child_fn_ptr (gimple *gs)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -5889,7 +5889,7 @@ gimple_omp_task_child_fn_ptr (gimple *gs)
>
>  /* Set CHILD_FN to be the child function for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_child_fn (gimple *gs, tree child_fn)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -5900,7 +5900,7 @@ gimple_omp_task_set_child_fn (gimple *gs, tree child_fn)
>  /* Return the artificial argument used to send variables and values
>     from the parent to the children threads in OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_task_data_arg (const gimple *gs)
>  {
>    const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
> @@ -5910,7 +5910,7 @@ gimple_omp_task_data_arg (const gimple *gs)
>
>  /* Return a pointer to the data argument for OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_task_data_arg_ptr (gimple *gs)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -5920,7 +5920,7 @@ gimple_omp_task_data_arg_ptr (gimple *gs)
>
>  /* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_data_arg (gimple *gs, tree data_arg)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -5930,7 +5930,7 @@ gimple_omp_task_set_data_arg (gimple *gs, tree data_arg)
>
>  /* Return the clauses associated with OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_taskreg_clauses (const gimple *gs)
>  {
>    const gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -5941,7 +5941,7 @@ gimple_omp_taskreg_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_taskreg_clauses_ptr (gimple *gs)
>  {
>    gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -5953,7 +5953,7 @@ gimple_omp_taskreg_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the list of clauses associated with OMP_TASK
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_taskreg_set_clauses (gimple *gs, tree clauses)
>  {
>    gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -5964,7 +5964,7 @@ gimple_omp_taskreg_set_clauses (gimple *gs, tree clauses)
>
>  /* Return the child function used to hold the body of OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_taskreg_child_fn (const gimple *gs)
>  {
>    const gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -5975,7 +5975,7 @@ gimple_omp_taskreg_child_fn (const gimple *gs)
>  /* Return a pointer to the child function used to hold the body of
>     OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_taskreg_child_fn_ptr (gimple *gs)
>  {
>    gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -5986,7 +5986,7 @@ gimple_omp_taskreg_child_fn_ptr (gimple *gs)
>
>  /* Set CHILD_FN to be the child function for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_taskreg_set_child_fn (gimple *gs, tree child_fn)
>  {
>    gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -5998,7 +5998,7 @@ gimple_omp_taskreg_set_child_fn (gimple *gs, tree child_fn)
>  /* Return the artificial argument used to send variables and values
>     from the parent to the children threads in OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_taskreg_data_arg (const gimple *gs)
>  {
>    const gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -6009,7 +6009,7 @@ gimple_omp_taskreg_data_arg (const gimple *gs)
>
>  /* Return a pointer to the data argument for OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_taskreg_data_arg_ptr (gimple *gs)
>  {
>    gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -6020,7 +6020,7 @@ gimple_omp_taskreg_data_arg_ptr (gimple *gs)
>
>  /* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_taskreg_set_data_arg (gimple *gs, tree data_arg)
>  {
>    gimple_statement_omp_taskreg *omp_taskreg_stmt
> @@ -6031,7 +6031,7 @@ gimple_omp_taskreg_set_data_arg (gimple *gs, tree data_arg)
>
>  /* Return the copy function used to hold the body of OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_task_copy_fn (const gimple *gs)
>  {
>    const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
> @@ -6041,7 +6041,7 @@ gimple_omp_task_copy_fn (const gimple *gs)
>  /* Return a pointer to the copy function used to hold the body of
>     OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_task_copy_fn_ptr (gimple *gs)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -6051,7 +6051,7 @@ gimple_omp_task_copy_fn_ptr (gimple *gs)
>
>  /* Set CHILD_FN to be the copy function for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_copy_fn (gimple *gs, tree copy_fn)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -6061,7 +6061,7 @@ gimple_omp_task_set_copy_fn (gimple *gs, tree copy_fn)
>
>  /* Return size of the data block in bytes in OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_task_arg_size (const gimple *gs)
>  {
>    const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
> @@ -6071,7 +6071,7 @@ gimple_omp_task_arg_size (const gimple *gs)
>
>  /* Return a pointer to the data block size for OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_task_arg_size_ptr (gimple *gs)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -6081,7 +6081,7 @@ gimple_omp_task_arg_size_ptr (gimple *gs)
>
>  /* Set ARG_SIZE to be the data block size for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_arg_size (gimple *gs, tree arg_size)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -6091,7 +6091,7 @@ gimple_omp_task_set_arg_size (gimple *gs, tree arg_size)
>
>  /* Return align of the data block in bytes in OMP_TASK GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_task_arg_align (const gimple *gs)
>  {
>    const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
> @@ -6101,7 +6101,7 @@ gimple_omp_task_arg_align (const gimple *gs)
>
>  /* Return a pointer to the data block align for OMP_TASK GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_task_arg_align_ptr (gimple *gs)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -6111,7 +6111,7 @@ gimple_omp_task_arg_align_ptr (gimple *gs)
>
>  /* Set ARG_SIZE to be the data block align for OMP_TASK GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_task_set_arg_align (gimple *gs, tree arg_align)
>  {
>    gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
> @@ -6121,7 +6121,7 @@ gimple_omp_task_set_arg_align (gimple *gs, tree arg_align)
>
>  /* Return the clauses associated with OMP_SINGLE GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_single_clauses (const gimple *gs)
>  {
>    const gomp_single *omp_single_stmt = as_a <const gomp_single *> (gs);
> @@ -6131,7 +6131,7 @@ gimple_omp_single_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_SINGLE GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_single_clauses_ptr (gimple *gs)
>  {
>    gomp_single *omp_single_stmt = as_a <gomp_single *> (gs);
> @@ -6141,7 +6141,7 @@ gimple_omp_single_clauses_ptr (gimple *gs)
>
>  /* Set CLAUSES to be the clauses associated with OMP_SINGLE_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_single_set_clauses (gomp_single *omp_single_stmt, tree clauses)
>  {
>    omp_single_stmt->clauses = clauses;
> @@ -6150,7 +6150,7 @@ gimple_omp_single_set_clauses (gomp_single *omp_single_stmt, tree clauses)
>
>  /* Return the clauses associated with OMP_TARGET GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_target_clauses (const gimple *gs)
>  {
>    const gomp_target *omp_target_stmt = as_a <const gomp_target *> (gs);
> @@ -6160,7 +6160,7 @@ gimple_omp_target_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_TARGET GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_target_clauses_ptr (gimple *gs)
>  {
>    gomp_target *omp_target_stmt = as_a <gomp_target *> (gs);
> @@ -6170,7 +6170,7 @@ gimple_omp_target_clauses_ptr (gimple *gs)
>
>  /* Set CLAUSES to be the clauses associated with OMP_TARGET_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_target_set_clauses (gomp_target *omp_target_stmt,
>                                tree clauses)
>  {
> @@ -6180,7 +6180,7 @@ gimple_omp_target_set_clauses (gomp_target *omp_target_stmt,
>
>  /* Return the kind of the OMP_TARGET G.  */
>
> -static inline int
> +inline int
>  gimple_omp_target_kind (const gimple *g)
>  {
>    GIMPLE_CHECK (g, GIMPLE_OMP_TARGET);
> @@ -6190,7 +6190,7 @@ gimple_omp_target_kind (const gimple *g)
>
>  /* Set the kind of the OMP_TARGET G.  */
>
> -static inline void
> +inline void
>  gimple_omp_target_set_kind (gomp_target *g, int kind)
>  {
>    g->subcode = (g->subcode & ~GF_OMP_TARGET_KIND_MASK)
> @@ -6200,7 +6200,7 @@ gimple_omp_target_set_kind (gomp_target *g, int kind)
>
>  /* Return the child function used to hold the body of OMP_TARGET_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_target_child_fn (const gomp_target *omp_target_stmt)
>  {
>    return omp_target_stmt->child_fn;
> @@ -6209,7 +6209,7 @@ gimple_omp_target_child_fn (const gomp_target *omp_target_stmt)
>  /* Return a pointer to the child function used to hold the body of
>     OMP_TARGET_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_target_child_fn_ptr (gomp_target *omp_target_stmt)
>  {
>    return &omp_target_stmt->child_fn;
> @@ -6218,7 +6218,7 @@ gimple_omp_target_child_fn_ptr (gomp_target *omp_target_stmt)
>
>  /* Set CHILD_FN to be the child function for OMP_TARGET_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_target_set_child_fn (gomp_target *omp_target_stmt,
>                                 tree child_fn)
>  {
> @@ -6229,7 +6229,7 @@ gimple_omp_target_set_child_fn (gomp_target *omp_target_stmt,
>  /* Return the artificial argument used to send variables and values
>     from the parent to the children threads in OMP_TARGET_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_target_data_arg (const gomp_target *omp_target_stmt)
>  {
>    return omp_target_stmt->data_arg;
> @@ -6238,7 +6238,7 @@ gimple_omp_target_data_arg (const gomp_target *omp_target_stmt)
>
>  /* Return a pointer to the data argument for OMP_TARGET GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_target_data_arg_ptr (gomp_target *omp_target_stmt)
>  {
>    return &omp_target_stmt->data_arg;
> @@ -6247,7 +6247,7 @@ gimple_omp_target_data_arg_ptr (gomp_target *omp_target_stmt)
>
>  /* Set DATA_ARG to be the data argument for OMP_TARGET_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_target_set_data_arg (gomp_target *omp_target_stmt,
>                                 tree data_arg)
>  {
> @@ -6257,7 +6257,7 @@ gimple_omp_target_set_data_arg (gomp_target *omp_target_stmt,
>
>  /* Return the clauses associated with OMP_TEAMS GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_teams_clauses (const gimple *gs)
>  {
>    const gomp_teams *omp_teams_stmt = as_a <const gomp_teams *> (gs);
> @@ -6267,7 +6267,7 @@ gimple_omp_teams_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_TEAMS GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_teams_clauses_ptr (gimple *gs)
>  {
>    gomp_teams *omp_teams_stmt = as_a <gomp_teams *> (gs);
> @@ -6277,7 +6277,7 @@ gimple_omp_teams_clauses_ptr (gimple *gs)
>
>  /* Set CLAUSES to be the clauses associated with OMP_TEAMS_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_teams_set_clauses (gomp_teams *omp_teams_stmt, tree clauses)
>  {
>    omp_teams_stmt->clauses = clauses;
> @@ -6285,7 +6285,7 @@ gimple_omp_teams_set_clauses (gomp_teams *omp_teams_stmt, tree clauses)
>
>  /* Return the child function used to hold the body of OMP_TEAMS_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_teams_child_fn (const gomp_teams *omp_teams_stmt)
>  {
>    return omp_teams_stmt->child_fn;
> @@ -6294,7 +6294,7 @@ gimple_omp_teams_child_fn (const gomp_teams *omp_teams_stmt)
>  /* Return a pointer to the child function used to hold the body of
>     OMP_TEAMS_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_teams_child_fn_ptr (gomp_teams *omp_teams_stmt)
>  {
>    return &omp_teams_stmt->child_fn;
> @@ -6303,7 +6303,7 @@ gimple_omp_teams_child_fn_ptr (gomp_teams *omp_teams_stmt)
>
>  /* Set CHILD_FN to be the child function for OMP_TEAMS_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_teams_set_child_fn (gomp_teams *omp_teams_stmt, tree child_fn)
>  {
>    omp_teams_stmt->child_fn = child_fn;
> @@ -6313,7 +6313,7 @@ gimple_omp_teams_set_child_fn (gomp_teams *omp_teams_stmt, tree child_fn)
>  /* Return the artificial argument used to send variables and values
>     from the parent to the children threads in OMP_TEAMS_STMT.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_teams_data_arg (const gomp_teams *omp_teams_stmt)
>  {
>    return omp_teams_stmt->data_arg;
> @@ -6322,7 +6322,7 @@ gimple_omp_teams_data_arg (const gomp_teams *omp_teams_stmt)
>
>  /* Return a pointer to the data argument for OMP_TEAMS_STMT.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_teams_data_arg_ptr (gomp_teams *omp_teams_stmt)
>  {
>    return &omp_teams_stmt->data_arg;
> @@ -6331,7 +6331,7 @@ gimple_omp_teams_data_arg_ptr (gomp_teams *omp_teams_stmt)
>
>  /* Set DATA_ARG to be the data argument for OMP_TEAMS_STMT.  */
>
> -static inline void
> +inline void
>  gimple_omp_teams_set_data_arg (gomp_teams *omp_teams_stmt, tree data_arg)
>  {
>    omp_teams_stmt->data_arg = data_arg;
> @@ -6339,7 +6339,7 @@ gimple_omp_teams_set_data_arg (gomp_teams *omp_teams_stmt, tree data_arg)
>
>  /* Return the host flag of an OMP_TEAMS_STMT.  */
>
> -static inline bool
> +inline bool
>  gimple_omp_teams_host (const gomp_teams *omp_teams_stmt)
>  {
>    return (gimple_omp_subcode (omp_teams_stmt) & GF_OMP_TEAMS_HOST) != 0;
> @@ -6347,7 +6347,7 @@ gimple_omp_teams_host (const gomp_teams *omp_teams_stmt)
>
>  /* Set host flag of an OMP_TEAMS_STMT to VALUE.  */
>
> -static inline void
> +inline void
>  gimple_omp_teams_set_host (gomp_teams *omp_teams_stmt, bool value)
>  {
>    if (value)
> @@ -6358,7 +6358,7 @@ gimple_omp_teams_set_host (gomp_teams *omp_teams_stmt, bool value)
>
>  /* Return the clauses associated with OMP_SECTIONS GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_sections_clauses (const gimple *gs)
>  {
>    const gomp_sections *omp_sections_stmt = as_a <const gomp_sections *> (gs);
> @@ -6368,7 +6368,7 @@ gimple_omp_sections_clauses (const gimple *gs)
>
>  /* Return a pointer to the clauses associated with OMP_SECTIONS GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_sections_clauses_ptr (gimple *gs)
>  {
>    gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
> @@ -6379,7 +6379,7 @@ gimple_omp_sections_clauses_ptr (gimple *gs)
>  /* Set CLAUSES to be the set of clauses associated with OMP_SECTIONS
>     GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_sections_set_clauses (gimple *gs, tree clauses)
>  {
>    gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
> @@ -6390,7 +6390,7 @@ gimple_omp_sections_set_clauses (gimple *gs, tree clauses)
>  /* Return the control variable associated with the GIMPLE_OMP_SECTIONS
>     in GS.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_sections_control (const gimple *gs)
>  {
>    const gomp_sections *omp_sections_stmt = as_a <const gomp_sections *> (gs);
> @@ -6401,7 +6401,7 @@ gimple_omp_sections_control (const gimple *gs)
>  /* Return a pointer to the clauses associated with the GIMPLE_OMP_SECTIONS
>     GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_sections_control_ptr (gimple *gs)
>  {
>    gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
> @@ -6412,7 +6412,7 @@ gimple_omp_sections_control_ptr (gimple *gs)
>  /* Set CONTROL to be the set of clauses associated with the
>     GIMPLE_OMP_SECTIONS in GS.  */
>
> -static inline void
> +inline void
>  gimple_omp_sections_set_control (gimple *gs, tree control)
>  {
>    gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
> @@ -6422,7 +6422,7 @@ gimple_omp_sections_set_control (gimple *gs, tree control)
>
>  /* Set the value being stored in an atomic store.  */
>
> -static inline void
> +inline void
>  gimple_omp_atomic_store_set_val (gomp_atomic_store *store_stmt, tree val)
>  {
>    store_stmt->val = val;
> @@ -6431,7 +6431,7 @@ gimple_omp_atomic_store_set_val (gomp_atomic_store *store_stmt, tree val)
>
>  /* Return the value being stored in an atomic store.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_atomic_store_val (const gomp_atomic_store *store_stmt)
>  {
>    return store_stmt->val;
> @@ -6440,7 +6440,7 @@ gimple_omp_atomic_store_val (const gomp_atomic_store *store_stmt)
>
>  /* Return a pointer to the value being stored in an atomic store.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_atomic_store_val_ptr (gomp_atomic_store *store_stmt)
>  {
>    return &store_stmt->val;
> @@ -6449,7 +6449,7 @@ gimple_omp_atomic_store_val_ptr (gomp_atomic_store *store_stmt)
>
>  /* Set the LHS of an atomic load.  */
>
> -static inline void
> +inline void
>  gimple_omp_atomic_load_set_lhs (gomp_atomic_load *load_stmt, tree lhs)
>  {
>    load_stmt->lhs = lhs;
> @@ -6458,7 +6458,7 @@ gimple_omp_atomic_load_set_lhs (gomp_atomic_load *load_stmt, tree lhs)
>
>  /* Get the LHS of an atomic load.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_atomic_load_lhs (const gomp_atomic_load *load_stmt)
>  {
>    return load_stmt->lhs;
> @@ -6467,7 +6467,7 @@ gimple_omp_atomic_load_lhs (const gomp_atomic_load *load_stmt)
>
>  /* Return a pointer to the LHS of an atomic load.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_atomic_load_lhs_ptr (gomp_atomic_load *load_stmt)
>  {
>    return &load_stmt->lhs;
> @@ -6476,7 +6476,7 @@ gimple_omp_atomic_load_lhs_ptr (gomp_atomic_load *load_stmt)
>
>  /* Set the RHS of an atomic load.  */
>
> -static inline void
> +inline void
>  gimple_omp_atomic_load_set_rhs (gomp_atomic_load *load_stmt, tree rhs)
>  {
>    load_stmt->rhs = rhs;
> @@ -6485,7 +6485,7 @@ gimple_omp_atomic_load_set_rhs (gomp_atomic_load *load_stmt, tree rhs)
>
>  /* Get the RHS of an atomic load.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_atomic_load_rhs (const gomp_atomic_load *load_stmt)
>  {
>    return load_stmt->rhs;
> @@ -6494,7 +6494,7 @@ gimple_omp_atomic_load_rhs (const gomp_atomic_load *load_stmt)
>
>  /* Return a pointer to the RHS of an atomic load.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_atomic_load_rhs_ptr (gomp_atomic_load *load_stmt)
>  {
>    return &load_stmt->rhs;
> @@ -6503,7 +6503,7 @@ gimple_omp_atomic_load_rhs_ptr (gomp_atomic_load *load_stmt)
>
>  /* Get the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_continue_control_def (const gomp_continue *cont_stmt)
>  {
>    return cont_stmt->control_def;
> @@ -6511,7 +6511,7 @@ gimple_omp_continue_control_def (const gomp_continue *cont_stmt)
>
>  /* The same as above, but return the address.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_continue_control_def_ptr (gomp_continue *cont_stmt)
>  {
>    return &cont_stmt->control_def;
> @@ -6519,7 +6519,7 @@ gimple_omp_continue_control_def_ptr (gomp_continue *cont_stmt)
>
>  /* Set the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
>
> -static inline void
> +inline void
>  gimple_omp_continue_set_control_def (gomp_continue *cont_stmt, tree def)
>  {
>    cont_stmt->control_def = def;
> @@ -6528,7 +6528,7 @@ gimple_omp_continue_set_control_def (gomp_continue *cont_stmt, tree def)
>
>  /* Get the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
>
> -static inline tree
> +inline tree
>  gimple_omp_continue_control_use (const gomp_continue *cont_stmt)
>  {
>    return cont_stmt->control_use;
> @@ -6537,7 +6537,7 @@ gimple_omp_continue_control_use (const gomp_continue *cont_stmt)
>
>  /* The same as above, but return the address.  */
>
> -static inline tree *
> +inline tree *
>  gimple_omp_continue_control_use_ptr (gomp_continue *cont_stmt)
>  {
>    return &cont_stmt->control_use;
> @@ -6546,7 +6546,7 @@ gimple_omp_continue_control_use_ptr (gomp_continue *cont_stmt)
>
>  /* Set the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
>
> -static inline void
> +inline void
>  gimple_omp_continue_set_control_use (gomp_continue *cont_stmt, tree use)
>  {
>    cont_stmt->control_use = use;
> @@ -6554,7 +6554,7 @@ gimple_omp_continue_set_control_use (gomp_continue *cont_stmt, tree use)
>
>  /* Return the guard associated with the GIMPLE_ASSUME statement GS.  */
>
> -static inline tree
> +inline tree
>  gimple_assume_guard (const gimple *gs)
>  {
>    const gimple_statement_assume *assume_stmt
> @@ -6564,14 +6564,14 @@ gimple_assume_guard (const gimple *gs)
>
>  /* Set the guard associated with the GIMPLE_ASSUME statement GS.  */
>
> -static inline void
> +inline void
>  gimple_assume_set_guard (gimple *gs, tree guard)
>  {
>    gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
>    assume_stmt->guard = guard;
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_assume_guard_ptr (gimple *gs)
>  {
>    gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
> @@ -6581,7 +6581,7 @@ gimple_assume_guard_ptr (gimple *gs)
>  /* Return the address of the GIMPLE sequence contained in the GIMPLE_ASSUME
>     statement GS.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_assume_body_ptr (gimple *gs)
>  {
>    gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
> @@ -6590,7 +6590,7 @@ gimple_assume_body_ptr (gimple *gs)
>
>  /* Return the GIMPLE sequence contained in the GIMPLE_ASSUME statement GS.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_assume_body (const gimple *gs)
>  {
>    const gimple_statement_assume *assume_stmt
> @@ -6601,7 +6601,7 @@ gimple_assume_body (const gimple *gs)
>  /* Return a pointer to the body for the GIMPLE_TRANSACTION statement
>     TRANSACTION_STMT.  */
>
> -static inline gimple_seq *
> +inline gimple_seq *
>  gimple_transaction_body_ptr (gtransaction *transaction_stmt)
>  {
>    return &transaction_stmt->body;
> @@ -6609,7 +6609,7 @@ gimple_transaction_body_ptr (gtransaction *transaction_stmt)
>
>  /* Return the body for the GIMPLE_TRANSACTION statement TRANSACTION_STMT.  */
>
> -static inline gimple_seq
> +inline gimple_seq
>  gimple_transaction_body (const gtransaction *transaction_stmt)
>  {
>    return transaction_stmt->body;
> @@ -6617,37 +6617,37 @@ gimple_transaction_body (const gtransaction *transaction_stmt)
>
>  /* Return the label associated with a GIMPLE_TRANSACTION.  */
>
> -static inline tree
> +inline tree
>  gimple_transaction_label_norm (const gtransaction *transaction_stmt)
>  {
>    return transaction_stmt->label_norm;
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_transaction_label_norm_ptr (gtransaction *transaction_stmt)
>  {
>    return &transaction_stmt->label_norm;
>  }
>
> -static inline tree
> +inline tree
>  gimple_transaction_label_uninst (const gtransaction *transaction_stmt)
>  {
>    return transaction_stmt->label_uninst;
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_transaction_label_uninst_ptr (gtransaction *transaction_stmt)
>  {
>    return &transaction_stmt->label_uninst;
>  }
>
> -static inline tree
> +inline tree
>  gimple_transaction_label_over (const gtransaction *transaction_stmt)
>  {
>    return transaction_stmt->label_over;
>  }
>
> -static inline tree *
> +inline tree *
>  gimple_transaction_label_over_ptr (gtransaction *transaction_stmt)
>  {
>    return &transaction_stmt->label_over;
> @@ -6655,7 +6655,7 @@ gimple_transaction_label_over_ptr (gtransaction *transaction_stmt)
>
>  /* Return the subcode associated with a GIMPLE_TRANSACTION.  */
>
> -static inline unsigned int
> +inline unsigned int
>  gimple_transaction_subcode (const gtransaction *transaction_stmt)
>  {
>    return transaction_stmt->subcode;
> @@ -6664,7 +6664,7 @@ gimple_transaction_subcode (const gtransaction *transaction_stmt)
>  /* Set BODY to be the body for the GIMPLE_TRANSACTION statement
>     TRANSACTION_STMT.  */
>
> -static inline void
> +inline void
>  gimple_transaction_set_body (gtransaction *transaction_stmt,
>                              gimple_seq body)
>  {
> @@ -6673,19 +6673,19 @@ gimple_transaction_set_body (gtransaction *transaction_stmt,
>
>  /* Set the label associated with a GIMPLE_TRANSACTION.  */
>
> -static inline void
> +inline void
>  gimple_transaction_set_label_norm (gtransaction *transaction_stmt, tree label)
>  {
>    transaction_stmt->label_norm = label;
>  }
>
> -static inline void
> +inline void
>  gimple_transaction_set_label_uninst (gtransaction *transaction_stmt, tree label)
>  {
>    transaction_stmt->label_uninst = label;
>  }
>
> -static inline void
> +inline void
>  gimple_transaction_set_label_over (gtransaction *transaction_stmt, tree label)
>  {
>    transaction_stmt->label_over = label;
> @@ -6693,7 +6693,7 @@ gimple_transaction_set_label_over (gtransaction *transaction_stmt, tree label)
>
>  /* Set the subcode associated with a GIMPLE_TRANSACTION.  */
>
> -static inline void
> +inline void
>  gimple_transaction_set_subcode (gtransaction *transaction_stmt,
>                                 unsigned int subcode)
>  {
> @@ -6702,7 +6702,7 @@ gimple_transaction_set_subcode (gtransaction *transaction_stmt,
>
>  /* Return a pointer to the return value for GIMPLE_RETURN GS.  */
>
> -static inline tree *
> +inline tree *
>  gimple_return_retval_ptr (greturn *gs)
>  {
>    return &gs->op[0];
> @@ -6710,7 +6710,7 @@ gimple_return_retval_ptr (greturn *gs)
>
>  /* Return the return value for GIMPLE_RETURN GS.  */
>
> -static inline tree
> +inline tree
>  gimple_return_retval (const greturn *gs)
>  {
>    return gs->op[0];
> @@ -6719,7 +6719,7 @@ gimple_return_retval (const greturn *gs)
>
>  /* Set RETVAL to be the return value for GIMPLE_RETURN GS.  */
>
> -static inline void
> +inline void
>  gimple_return_set_retval (greturn *gs, tree retval)
>  {
>    gs->op[0] = retval;
> @@ -6750,7 +6750,7 @@ gimple_return_set_retval (greturn *gs, tree retval)
>      case GIMPLE_OMP_ATOMIC_STORE:              \
>      case GIMPLE_OMP_CONTINUE
>
> -static inline bool
> +inline bool
>  is_gimple_omp (const gimple *stmt)
>  {
>    switch (gimple_code (stmt))
> @@ -6765,7 +6765,7 @@ is_gimple_omp (const gimple *stmt)
>  /* Return true if the OMP gimple statement STMT is any of the OpenACC types
>     specifically.  */
>
> -static inline bool
> +inline bool
>  is_gimple_omp_oacc (const gimple *stmt)
>  {
>    gcc_assert (is_gimple_omp (stmt));
> @@ -6814,7 +6814,7 @@ is_gimple_omp_oacc (const gimple *stmt)
>
>  /* Return true if the OMP gimple statement STMT is offloaded.  */
>
> -static inline bool
> +inline bool
>  is_gimple_omp_offloaded (const gimple *stmt)
>  {
>    gcc_assert (is_gimple_omp (stmt));
> @@ -6841,7 +6841,7 @@ is_gimple_omp_offloaded (const gimple *stmt)
>
>  /* Returns TRUE if statement G is a GIMPLE_NOP.  */
>
> -static inline bool
> +inline bool
>  gimple_nop_p (const gimple *g)
>  {
>    return gimple_code (g) == GIMPLE_NOP;
> @@ -6850,7 +6850,7 @@ gimple_nop_p (const gimple *g)
>
>  /* Return true if GS is a GIMPLE_RESX.  */
>
> -static inline bool
> +inline bool
>  is_gimple_resx (const gimple *gs)
>  {
>    return gimple_code (gs) == GIMPLE_RESX;
> @@ -6872,7 +6872,7 @@ extern uint64_t gimple_alloc_counts[];
>  extern uint64_t gimple_alloc_sizes[];
>
>  /* Return the allocation kind for a given stmt CODE.  */
> -static inline enum gimple_alloc_kind
> +inline enum gimple_alloc_kind
>  gimple_alloc_kind (enum gimple_code code)
>  {
>    switch (code)
> @@ -6891,7 +6891,7 @@ gimple_alloc_kind (enum gimple_code code)
>  /* Return true if a location should not be emitted for this statement
>     by annotate_all_with_location.  */
>
> -static inline bool
> +inline bool
>  gimple_do_not_emit_location_p (gimple *g)
>  {
>    return gimple_plf (g, GF_PLF_1);
> @@ -6900,7 +6900,7 @@ gimple_do_not_emit_location_p (gimple *g)
>  /* Mark statement G so a location will not be emitted by
>     annotate_one_with_location.  */
>
> -static inline void
> +inline void
>  gimple_set_do_not_emit_location (gimple *g)
>  {
>    /* The PLF flags are initialized to 0 when a new tuple is created,
> diff --git a/gcc/graphite.h b/gcc/graphite.h
> index c4c5e3c6fc5..dc6e482fce3 100644
> --- a/gcc/graphite.h
> +++ b/gcc/graphite.h
> @@ -32,7 +32,7 @@ typedef struct scop *scop_p;
>
>  typedef unsigned graphite_dim_t;
>
> -static inline graphite_dim_t scop_nb_params (scop_p);
> +inline graphite_dim_t scop_nb_params (scop_p);
>
>  /* A data reference can write or read some memory or we
>     just know it may write some memory.  */
> @@ -189,7 +189,7 @@ void new_poly_dr (poly_bb_p, gimple *, enum poly_dr_type,
>  void debug_pdr (poly_dr_p);
>  void print_pdr (FILE *, poly_dr_p);
>
> -static inline bool
> +inline bool
>  pdr_read_p (poly_dr_p pdr)
>  {
>    return PDR_TYPE (pdr) == PDR_READ;
> @@ -197,7 +197,7 @@ pdr_read_p (poly_dr_p pdr)
>
>  /* Returns true when PDR is a "write".  */
>
> -static inline bool
> +inline bool
>  pdr_write_p (poly_dr_p pdr)
>  {
>    return PDR_TYPE (pdr) == PDR_WRITE;
> @@ -205,7 +205,7 @@ pdr_write_p (poly_dr_p pdr)
>
>  /* Returns true when PDR is a "may write".  */
>
> -static inline bool
> +inline bool
>  pdr_may_write_p (poly_dr_p pdr)
>  {
>    return PDR_TYPE (pdr) == PDR_MAY_WRITE;
> @@ -295,13 +295,13 @@ extern void debug_schedule_ast (__isl_keep isl_schedule *, scop_p);
>
>  /* The basic block of the PBB.  */
>
> -static inline basic_block
> +inline basic_block
>  pbb_bb (poly_bb_p pbb)
>  {
>    return GBB_BB (PBB_BLACK_BOX (pbb));
>  }
>
> -static inline int
> +inline int
>  pbb_index (poly_bb_p pbb)
>  {
>    return pbb_bb (pbb)->index;
> @@ -309,7 +309,7 @@ pbb_index (poly_bb_p pbb)
>
>  /* The loop of the PBB.  */
>
> -static inline loop_p
> +inline loop_p
>  pbb_loop (poly_bb_p pbb)
>  {
>    return gbb_loop (PBB_BLACK_BOX (pbb));
> @@ -317,7 +317,7 @@ pbb_loop (poly_bb_p pbb)
>
>  /* The scop that contains the PDR.  */
>
> -static inline scop_p
> +inline scop_p
>  pdr_scop (poly_dr_p pdr)
>  {
>    return PBB_SCOP (PDR_PBB (pdr));
> @@ -325,7 +325,7 @@ pdr_scop (poly_dr_p pdr)
>
>  /* Set black box of PBB to BLACKBOX.  */
>
> -static inline void
> +inline void
>  pbb_set_black_box (poly_bb_p pbb, gimple_poly_bb_p black_box)
>  {
>    pbb->black_box = black_box;
> @@ -412,7 +412,7 @@ extern bool apply_poly_transforms (scop_p);
>
>  /* Set the region of SCOP to REGION.  */
>
> -static inline void
> +inline void
>  scop_set_region (scop_p scop, sese_info_p region)
>  {
>    scop->scop_info = region;
> @@ -420,7 +420,7 @@ scop_set_region (scop_p scop, sese_info_p region)
>
>  /* Returns the number of parameters for SCOP.  */
>
> -static inline graphite_dim_t
> +inline graphite_dim_t
>  scop_nb_params (scop_p scop)
>  {
>    return scop->nb_params;
> @@ -428,7 +428,7 @@ scop_nb_params (scop_p scop)
>
>  /* Set the number of params of SCOP to NB_PARAMS.  */
>
> -static inline void
> +inline void
>  scop_set_nb_params (scop_p scop, graphite_dim_t nb_params)
>  {
>    scop->nb_params = nb_params;
> diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
> index 320b4349527..b0bb9bce074 100644
> --- a/gcc/hard-reg-set.h
> +++ b/gcc/hard-reg-set.h
> @@ -173,19 +173,19 @@ struct hard_reg_set_container
>  #define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
>  #define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))
>
> -static inline bool
> +inline bool
>  hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
>  {
>    return (x & ~y) == HARD_CONST (0);
>  }
>
> -static inline bool
> +inline bool
>  hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
>  {
>    return (x & y) != HARD_CONST (0);
>  }
>
> -static inline bool
> +inline bool
>  hard_reg_set_empty_p (const_hard_reg_set x)
>  {
>    return x == HARD_CONST (0);
> @@ -228,7 +228,7 @@ SET_HARD_REG_SET (HARD_REG_SET &set)
>      set.elts[i] = -1;
>  }
>
> -static inline bool
> +inline bool
>  hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
>  {
>    HARD_REG_ELT_TYPE bad = 0;
> @@ -237,7 +237,7 @@ hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
>    return bad == 0;
>  }
>
> -static inline bool
> +inline bool
>  hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
>  {
>    HARD_REG_ELT_TYPE good = 0;
> @@ -246,7 +246,7 @@ hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
>    return good != 0;
>  }
>
> -static inline bool
> +inline bool
>  hard_reg_set_empty_p (const_hard_reg_set x)
>  {
>    HARD_REG_ELT_TYPE bad = 0;
> @@ -279,7 +279,7 @@ struct hard_reg_set_iterator
>
>  /* The implementation of the iterator functions is fully analogous to
>     the bitmap iterators.  */
> -static inline void
> +inline void
>  hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
>                          unsigned min, unsigned *regno)
>  {
> @@ -302,7 +302,7 @@ hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
>    *regno = min;
>  }
>
> -static inline bool
> +inline bool
>  hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
>  {
>    while (1)
> @@ -337,7 +337,7 @@ hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
>      }
>  }
>
> -static inline void
> +inline void
>  hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *regno)
>  {
>    iter->bits >>= 1;
> diff --git a/gcc/hash-map.h b/gcc/hash-map.h
> index bc7ca9fd8e2..1c5189b04d5 100644
> --- a/gcc/hash-map.h
> +++ b/gcc/hash-map.h
> @@ -315,21 +315,21 @@ private:
>  /* ggc marking routines.  */
>
>  template<typename K, typename V, typename H>
> -static inline void
> +inline void
>  gt_ggc_mx (hash_map<K, V, H> *h)
>  {
>    gt_ggc_mx (&h->m_table);
>  }
>
>  template<typename K, typename V, typename H>
> -static inline void
> +inline void
>  gt_pch_nx (hash_map<K, V, H> *h)
>  {
>    gt_pch_nx (&h->m_table);
>  }
>
>  template<typename K, typename V, typename H>
> -static inline void
> +inline void
>  gt_cleare_cache (hash_map<K, V, H> *h)
>  {
>    if (h)
> @@ -337,7 +337,7 @@ gt_cleare_cache (hash_map<K, V, H> *h)
>  }
>
>  template<typename K, typename V, typename H>
> -static inline void
> +inline void
>  gt_pch_nx (hash_map<K, V, H> *h, gt_pointer_operator op, void *cookie)
>  {
>    op (&h->m_table.m_entries, NULL, cookie);
> diff --git a/gcc/hash-set.h b/gcc/hash-set.h
> index 048e7e75011..f6125eb6a3a 100644
> --- a/gcc/hash-set.h
> +++ b/gcc/hash-set.h
> @@ -194,21 +194,21 @@ debug_helper (hash_set<T> &ref)
>  /* ggc marking routines.  */
>
>  template<typename K, typename H>
> -static inline void
> +inline void
>  gt_ggc_mx (hash_set<K, false, H> *h)
>  {
>    gt_ggc_mx (&h->m_table);
>  }
>
>  template<typename K, typename H>
> -static inline void
> +inline void
>  gt_pch_nx (hash_set<K, false, H> *h)
>  {
>    gt_pch_nx (&h->m_table);
>  }
>
>  template<typename K, typename H>
> -static inline void
> +inline void
>  gt_pch_nx (hash_set<K, false, H> *h, gt_pointer_operator op, void *cookie)
>  {
>    op (&h->m_table.m_entries, NULL, cookie);
> diff --git a/gcc/hash-table.h b/gcc/hash-table.h
> index e37625dc315..3f87ec06f37 100644
> --- a/gcc/hash-table.h
> +++ b/gcc/hash-table.h
> @@ -1236,7 +1236,7 @@ hash_table<Descriptor, Lazy, Allocator>::iterator::operator ++ ()
>  /* ggc walking routines.  */
>
>  template<typename E>
> -static inline void
> +inline void
>  gt_ggc_mx (hash_table<E> *h)
>  {
>    typedef hash_table<E> table;
> @@ -1257,7 +1257,7 @@ gt_ggc_mx (hash_table<E> *h)
>  }
>
>  template<typename D>
> -static inline void
> +inline void
>  hashtab_entry_note_pointers (void *obj, void *h, gt_pointer_operator op,
>                              void *cookie)
>  {
> @@ -1293,7 +1293,7 @@ gt_pch_nx (hash_table<D> *h)
>  }
>
>  template<typename D>
> -static inline void
> +inline void
>  gt_pch_nx (hash_table<D> *h, gt_pointer_operator op, void *cookie)
>  {
>    op (&h->m_entries, NULL, cookie);
> diff --git a/gcc/hwint.h b/gcc/hwint.h
> index e31aa006fa4..427e9b9e9fd 100644
> --- a/gcc/hwint.h
> +++ b/gcc/hwint.h
> @@ -138,7 +138,7 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
>
>  /* Return X with all but the lowest bit masked off.  */
>
> -static inline unsigned HOST_WIDE_INT
> +inline unsigned HOST_WIDE_INT
>  least_bit_hwi (unsigned HOST_WIDE_INT x)
>  {
>    return (x & -x);
> @@ -146,7 +146,7 @@ least_bit_hwi (unsigned HOST_WIDE_INT x)
>
>  /* True if X is zero or a power of two.  */
>
> -static inline bool
> +inline bool
>  pow2_or_zerop (unsigned HOST_WIDE_INT x)
>  {
>    return least_bit_hwi (x) == x;
> @@ -154,7 +154,7 @@ pow2_or_zerop (unsigned HOST_WIDE_INT x)
>
>  /* True if X is a power of two.  */
>
> -static inline bool
> +inline bool
>  pow2p_hwi (unsigned HOST_WIDE_INT x)
>  {
>    return x && pow2_or_zerop (x);
> @@ -181,7 +181,7 @@ extern int ceil_log2                        (unsigned HOST_WIDE_INT);
>  #else /* GCC_VERSION >= 3004 */
>
>  /* For convenience, define 0 -> word_size.  */
> -static inline int
> +inline int
>  clz_hwi (unsigned HOST_WIDE_INT x)
>  {
>    if (x == 0)
> @@ -195,7 +195,7 @@ clz_hwi (unsigned HOST_WIDE_INT x)
>  # endif
>  }
>
> -static inline int
> +inline int
>  ctz_hwi (unsigned HOST_WIDE_INT x)
>  {
>    if (x == 0)
> @@ -209,7 +209,7 @@ ctz_hwi (unsigned HOST_WIDE_INT x)
>  # endif
>  }
>
> -static inline int
> +inline int
>  ffs_hwi (unsigned HOST_WIDE_INT x)
>  {
>  # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
> @@ -221,7 +221,7 @@ ffs_hwi (unsigned HOST_WIDE_INT x)
>  # endif
>  }
>
> -static inline int
> +inline int
>  popcount_hwi (unsigned HOST_WIDE_INT x)
>  {
>  # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
> @@ -233,19 +233,19 @@ popcount_hwi (unsigned HOST_WIDE_INT x)
>  # endif
>  }
>
> -static inline int
> +inline int
>  floor_log2 (unsigned HOST_WIDE_INT x)
>  {
>    return HOST_BITS_PER_WIDE_INT - 1 - clz_hwi (x);
>  }
>
> -static inline int
> +inline int
>  ceil_log2 (unsigned HOST_WIDE_INT x)
>  {
>    return x == 0 ? 0 : floor_log2 (x - 1) + 1;
>  }
>
> -static inline int
> +inline int
>  exact_log2 (unsigned HOST_WIDE_INT x)
>  {
>    return pow2p_hwi (x) ? ctz_hwi (x) : -1;
> @@ -266,7 +266,7 @@ extern HOST_WIDE_INT least_common_multiple (HOST_WIDE_INT, HOST_WIDE_INT);
>
>  /* Like ctz_hwi, except 0 when x == 0.  */
>
> -static inline int
> +inline int
>  ctz_or_zero (unsigned HOST_WIDE_INT x)
>  {
>    return ffs_hwi (x) - 1;
> @@ -274,7 +274,7 @@ ctz_or_zero (unsigned HOST_WIDE_INT x)
>
>  /* Sign extend SRC starting from PREC.  */
>
> -static inline HOST_WIDE_INT
> +inline HOST_WIDE_INT
>  sext_hwi (HOST_WIDE_INT src, unsigned int prec)
>  {
>    if (prec == HOST_BITS_PER_WIDE_INT)
> @@ -304,7 +304,7 @@ sext_hwi (HOST_WIDE_INT src, unsigned int prec)
>  }
>
>  /* Zero extend SRC starting from PREC.  */
> -static inline unsigned HOST_WIDE_INT
> +inline unsigned HOST_WIDE_INT
>  zext_hwi (unsigned HOST_WIDE_INT src, unsigned int prec)
>  {
>    if (prec == HOST_BITS_PER_WIDE_INT)
> diff --git a/gcc/input.h b/gcc/input.h
> index b1fa14adf5b..9d68648bb3c 100644
> --- a/gcc/input.h
> +++ b/gcc/input.h
> @@ -195,7 +195,7 @@ extern int get_discriminator_from_loc (location_t);
>     that is part of a macro replacement-list defined in a system
>     header, but expanded in a non-system file.  */
>
> -static inline int
> +inline int
>  in_system_header_at (location_t loc)
>  {
>    return linemap_location_in_system_header_p (line_table, loc);
> @@ -204,7 +204,7 @@ in_system_header_at (location_t loc)
>  /* Return true if LOCATION is the locus of a token that
>     comes from a macro expansion, false otherwise.  */
>
> -static inline bool
> +inline bool
>  from_macro_expansion_at (location_t loc)
>  {
>    return linemap_location_from_macro_expansion_p (line_table, loc);
> @@ -214,13 +214,13 @@ from_macro_expansion_at (location_t loc)
>     a macro definition, false otherwise.  This differs from from_macro_expansion_at
>     in its treatment of macro arguments, for which this returns false.  */
>
> -static inline bool
> +inline bool
>  from_macro_definition_at (location_t loc)
>  {
>    return linemap_location_from_macro_definition_p (line_table, loc);
>  }
>
> -static inline location_t
> +inline location_t
>  get_pure_location (location_t loc)
>  {
>    return get_pure_location (line_table, loc);
> @@ -228,7 +228,7 @@ get_pure_location (location_t loc)
>
>  /* Get the start of any range encoded within location LOC.  */
>
> -static inline location_t
> +inline location_t
>  get_start (location_t loc)
>  {
>    return get_range_from_loc (line_table, loc).m_start;
> @@ -236,7 +236,7 @@ get_start (location_t loc)
>
>  /* Get the endpoint of any range encoded within location LOC.  */
>
> -static inline location_t
> +inline location_t
>  get_finish (location_t loc)
>  {
>    return get_range_from_loc (line_table, loc).m_finish;
> diff --git a/gcc/insn-addr.h b/gcc/insn-addr.h
> index aa5fd8ebe0d..baf4d995e22 100644
> --- a/gcc/insn-addr.h
> +++ b/gcc/insn-addr.h
> @@ -37,7 +37,7 @@ extern int insn_current_address;
>  #define INSN_ADDRESSES_SET_P() (insn_addresses_.exists ())
>  #define INSN_ADDRESSES_SIZE() (insn_addresses_.length ())
>
> -static inline void
> +inline void
>  insn_addresses_new (rtx_insn *insn, int insn_addr)
>  {
>    unsigned insn_uid = INSN_UID ((insn));
> diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h
> index 6f7a262a763..2fd82a19d15 100644
> --- a/gcc/internal-fn.h
> +++ b/gcc/internal-fn.h
> @@ -105,7 +105,7 @@ extern void init_internal_fns ();
>
>  extern const char *const internal_fn_name_array[];
>
> -static inline const char *
> +inline const char *
>  internal_fn_name (enum internal_fn fn)
>  {
>    return internal_fn_name_array[(int) fn];
> @@ -117,7 +117,7 @@ extern internal_fn lookup_internal_fn (const char *);
>
>  extern const int internal_fn_flags_array[];
>
> -static inline int
> +inline int
>  internal_fn_flags (enum internal_fn fn)
>  {
>    return internal_fn_flags_array[(int) fn];
> @@ -127,7 +127,7 @@ internal_fn_flags (enum internal_fn fn)
>
>  extern GTY(()) const_tree internal_fn_fnspec_array[IFN_LAST + 1];
>
> -static inline const_tree
> +inline const_tree
>  internal_fn_fnspec (enum internal_fn fn)
>  {
>    return internal_fn_fnspec_array[(int) fn];
> diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h
> index 546d15aea30..fcc01167d0d 100644
> --- a/gcc/ipa-fnsummary.h
> +++ b/gcc/ipa-fnsummary.h
> @@ -435,7 +435,7 @@ void ipa_remove_from_growth_caches (struct cgraph_edge *edge);
>
>  /* Return true if EDGE is a cross module call.  */
>
> -static inline bool
> +inline bool
>  cross_module_call_p (struct cgraph_edge *edge)
>  {
>    /* Here we do not want to walk to alias target becuase ICF may create
> diff --git a/gcc/ipa-icf-gimple.h b/gcc/ipa-icf-gimple.h
> index 09a31e8e55a..1ad6421a5ba 100644
> --- a/gcc/ipa-icf-gimple.h
> +++ b/gcc/ipa-icf-gimple.h
> @@ -39,7 +39,7 @@ along with GCC; see the file COPYING3.  If not see
>  /* Logs a MESSAGE to dump_file if exists and returns false. FUNC is name
>     of function and LINE is location in the source file.  */
>
> -static inline bool
> +inline bool
>  return_false_with_message_1 (const char *message, const char *filename,
>                              const char *func, unsigned int line)
>  {
> @@ -59,7 +59,7 @@ return_false_with_message_1 (const char *message, const char *filename,
>  /* Logs return value if RESULT is false. FUNC is name of function and LINE
>     is location in the source file.  */
>
> -static inline bool
> +inline bool
>  return_with_result (bool result, const char *filename,
>                     const char *func, unsigned int line)
>  {
> @@ -77,7 +77,7 @@ return_with_result (bool result, const char *filename,
>  /* Verbose logging function logging statements S1 and S2 of a CODE.
>     FUNC is name of function and LINE is location in the source file.  */
>
> -static inline bool
> +inline bool
>  return_different_stmts_1 (gimple *s1, gimple *s2, const char *code,
>                           const char *func, unsigned int line)
>  {
> diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h
> index b238316f977..70de89a8b5a 100644
> --- a/gcc/ipa-inline.h
> +++ b/gcc/ipa-inline.h
> @@ -69,7 +69,7 @@ extern function_summary <tree *> *ipa_saved_clone_sources;
>
>  /* Return estimated size of the inline sequence of EDGE.  */
>
> -static inline int
> +inline int
>  estimate_edge_size (struct cgraph_edge *edge)
>  {
>    edge_growth_cache_entry *entry;
> @@ -82,7 +82,7 @@ estimate_edge_size (struct cgraph_edge *edge)
>
>  /* Return lower bound on estimated callee growth after inlining EDGE.  */
>
> -static inline int
> +inline int
>  estimate_min_edge_growth (struct cgraph_edge *edge)
>  {
>    ipa_call_summary *s = ipa_call_summaries->get (edge);
> @@ -92,7 +92,7 @@ estimate_min_edge_growth (struct cgraph_edge *edge)
>
>  /* Return estimated callee growth after inlining EDGE.  */
>
> -static inline int
> +inline int
>  estimate_edge_growth (struct cgraph_edge *edge)
>  {
>    ipa_call_summary *s = ipa_call_summaries->get (edge);
> @@ -103,7 +103,7 @@ estimate_edge_growth (struct cgraph_edge *edge)
>  /* Return estimated callee runtime increase after inlining
>     EDGE.  */
>
> -static inline sreal
> +inline sreal
>  estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
>  {
>    edge_growth_cache_entry *entry;
> @@ -120,7 +120,7 @@ estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
>  /* Return estimated callee runtime increase after inlining
>     EDGE.  */
>
> -static inline ipa_hints
> +inline ipa_hints
>  estimate_edge_hints (struct cgraph_edge *edge)
>  {
>    edge_growth_cache_entry *entry;
> diff --git a/gcc/ipa-modref.h b/gcc/ipa-modref.h
> index 7a2fd730db6..2a2d31e86db 100644
> --- a/gcc/ipa-modref.h
> +++ b/gcc/ipa-modref.h
> @@ -108,7 +108,7 @@ static const int implicit_retslot_eaf_flags
>     MODREF_FLAGS are flags determined by analysis of function body while
>     FLAGS are flags known otherwise (i.e. by fnspec, pure/const attributes
>     etc.)  */
> -static inline int
> +inline int
>  interposable_eaf_flags (int modref_flags, int flags)
>  {
>    /* If parameter was previously unused, we know it is only read
> diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
> index ea062e00a65..a40ccc0ebbe 100644
> --- a/gcc/ipa-prop.h
> +++ b/gcc/ipa-prop.h
> @@ -348,14 +348,14 @@ struct GTY (()) ipa_jump_func
>
>  /* Return the constant stored in a constant jump functin JFUNC.  */
>
> -static inline tree
> +inline tree
>  ipa_get_jf_constant (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_CONST);
>    return jfunc->value.constant.value;
>  }
>
> -static inline struct ipa_cst_ref_desc *
> +inline struct ipa_cst_ref_desc *
>  ipa_get_jf_constant_rdesc (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_CONST);
> @@ -364,7 +364,7 @@ ipa_get_jf_constant_rdesc (struct ipa_jump_func *jfunc)
>
>  /* Return the operand of a pass through jmp function JFUNC.  */
>
> -static inline tree
> +inline tree
>  ipa_get_jf_pass_through_operand (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
> @@ -374,7 +374,7 @@ ipa_get_jf_pass_through_operand (struct ipa_jump_func *jfunc)
>  /* Return the number of the caller's formal parameter that a pass through jump
>     function JFUNC refers to.  */
>
> -static inline int
> +inline int
>  ipa_get_jf_pass_through_formal_id (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
> @@ -383,7 +383,7 @@ ipa_get_jf_pass_through_formal_id (struct ipa_jump_func *jfunc)
>
>  /* Return operation of a pass through jump function JFUNC.  */
>
> -static inline enum tree_code
> +inline enum tree_code
>  ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
> @@ -392,7 +392,7 @@ ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
>
>  /* Return the agg_preserved flag of a pass through jump function JFUNC.  */
>
> -static inline bool
> +inline bool
>  ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
> @@ -402,7 +402,7 @@ ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
>  /* Return true if pass through jump function JFUNC preserves type
>     information.  */
>
> -static inline bool
> +inline bool
>  ipa_get_jf_pass_through_type_preserved (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
> @@ -411,7 +411,7 @@ ipa_get_jf_pass_through_type_preserved (struct ipa_jump_func *jfunc)
>
>  /* Return the offset of an ancestor jump function JFUNC.  */
>
> -static inline HOST_WIDE_INT
> +inline HOST_WIDE_INT
>  ipa_get_jf_ancestor_offset (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
> @@ -421,7 +421,7 @@ ipa_get_jf_ancestor_offset (struct ipa_jump_func *jfunc)
>  /* Return the number of the caller's formal parameter that an ancestor jump
>     function JFUNC refers to.  */
>
> -static inline int
> +inline int
>  ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
> @@ -430,7 +430,7 @@ ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
>
>  /* Return the agg_preserved flag of an ancestor jump function JFUNC.  */
>
> -static inline bool
> +inline bool
>  ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
> @@ -439,7 +439,7 @@ ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
>
>  /* Return true if ancestor jump function JFUNC presrves type information.  */
>
> -static inline bool
> +inline bool
>  ipa_get_jf_ancestor_type_preserved (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
> @@ -450,7 +450,7 @@ ipa_get_jf_ancestor_type_preserved (struct ipa_jump_func *jfunc)
>     parameter for non-NULLness unless it does not matter because the offset is
>     zero anyway.  */
>
> -static inline bool
> +inline bool
>  ipa_get_jf_ancestor_keep_null (struct ipa_jump_func *jfunc)
>  {
>    gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
> @@ -701,7 +701,7 @@ struct ipa_func_body_info
>
>  /* Return the number of formal parameters. */
>
> -static inline int
> +inline int
>  ipa_get_param_count (class ipa_node_params *info)
>  {
>    return vec_safe_length (info->descriptors);
> @@ -710,7 +710,7 @@ ipa_get_param_count (class ipa_node_params *info)
>  /* Return the parameter declaration in DESCRIPTORS at index I and assert it is
>     indeed a PARM_DECL.  */
>
> -static inline tree
> +inline tree
>  ipa_get_param (const vec<ipa_param_descriptor, va_gc> &descriptors, int i)
>  {
>    tree t = descriptors[i].decl_or_type;
> @@ -723,7 +723,7 @@ ipa_get_param (const vec<ipa_param_descriptor, va_gc> &descriptors, int i)
>     using ipa_initialize_node_params.  This function should not be called in
>     WPA.  */
>
> -static inline tree
> +inline tree
>  ipa_get_param (class ipa_node_params *info, int i)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -733,7 +733,7 @@ ipa_get_param (class ipa_node_params *info, int i)
>  /* Return the type of Ith formal parameter of the function corresponding
>     to INFO if it is known or NULL if not.  */
>
> -static inline tree
> +inline tree
>  ipa_get_type (class ipa_node_params *info, int i)
>  {
>    if (vec_safe_length (info->descriptors) <= (unsigned) i)
> @@ -750,7 +750,7 @@ ipa_get_type (class ipa_node_params *info, int i)
>  /* Return the move cost of Ith formal parameter of the function corresponding
>     to INFO.  */
>
> -static inline int
> +inline int
>  ipa_get_param_move_cost (class ipa_node_params *info, int i)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -760,7 +760,7 @@ ipa_get_param_move_cost (class ipa_node_params *info, int i)
>  /* Set the used flag corresponding to the Ith formal parameter of the function
>     associated with INFO to VAL.  */
>
> -static inline void
> +inline void
>  ipa_set_param_used (class ipa_node_params *info, int i, bool val)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -770,7 +770,7 @@ ipa_set_param_used (class ipa_node_params *info, int i, bool val)
>  /* Set the used_by_ipa_predicates flag corresponding to the Ith formal
>     parameter of the function associated with INFO to VAL.  */
>
> -static inline void
> +inline void
>  ipa_set_param_used_by_ipa_predicates (class ipa_node_params *info, int i, bool val)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -780,7 +780,7 @@ ipa_set_param_used_by_ipa_predicates (class ipa_node_params *info, int i, bool v
>  /* Set the used_by_indirect_call flag corresponding to the Ith formal
>     parameter of the function associated with INFO to VAL.  */
>
> -static inline void
> +inline void
>  ipa_set_param_used_by_indirect_call (class ipa_node_params *info, int i, bool val)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -790,7 +790,7 @@ ipa_set_param_used_by_indirect_call (class ipa_node_params *info, int i, bool va
>  /* Set the .used_by_polymorphic_call flag corresponding to the Ith formal
>     parameter of the function associated with INFO to VAL.  */
>
> -static inline void
> +inline void
>  ipa_set_param_used_by_polymorphic_call (class ipa_node_params *info, int i, bool val)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -800,7 +800,7 @@ ipa_set_param_used_by_polymorphic_call (class ipa_node_params *info, int i, bool
>  /* Return how many uses described by ipa-prop a parameter has or
>     IPA_UNDESCRIBED_USE if there is a use that is not described by these
>     structures.  */
> -static inline int
> +inline int
>  ipa_get_controlled_uses (class ipa_node_params *info, int i)
>  {
>    /* FIXME: introducing speculation causes out of bounds access here.  */
> @@ -811,7 +811,7 @@ ipa_get_controlled_uses (class ipa_node_params *info, int i)
>
>  /* Set the controlled counter of a given parameter.  */
>
> -static inline void
> +inline void
>  ipa_set_controlled_uses (class ipa_node_params *info, int i, int val)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -820,7 +820,7 @@ ipa_set_controlled_uses (class ipa_node_params *info, int i, int val)
>
>  /* Assuming a parameter does not have IPA_UNDESCRIBED_USE controlled uses,
>     return flag which indicates it has been dereferenced but only in a load.  */
> -static inline int
> +inline int
>  ipa_get_param_load_dereferenced (class ipa_node_params *info, int i)
>  {
>    gcc_assert (ipa_get_controlled_uses (info, i) != IPA_UNDESCRIBED_USE);
> @@ -829,7 +829,7 @@ ipa_get_param_load_dereferenced (class ipa_node_params *info, int i)
>
>  /* Set the load_dereferenced flag of a given parameter.  */
>
> -static inline void
> +inline void
>  ipa_set_param_load_dereferenced (class ipa_node_params *info, int i, bool val)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -839,7 +839,7 @@ ipa_set_param_load_dereferenced (class ipa_node_params *info, int i, bool val)
>  /* Return the used flag corresponding to the Ith formal parameter of the
>     function associated with INFO.  */
>
> -static inline bool
> +inline bool
>  ipa_is_param_used (class ipa_node_params *info, int i)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -849,7 +849,7 @@ ipa_is_param_used (class ipa_node_params *info, int i)
>  /* Return the used_by_ipa_predicates flag corresponding to the Ith formal
>     parameter of the function associated with INFO.  */
>
> -static inline bool
> +inline bool
>  ipa_is_param_used_by_ipa_predicates (class ipa_node_params *info, int i)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -859,7 +859,7 @@ ipa_is_param_used_by_ipa_predicates (class ipa_node_params *info, int i)
>  /* Return the used_by_indirect_call flag corresponding to the Ith formal
>     parameter of the function associated with INFO.  */
>
> -static inline bool
> +inline bool
>  ipa_is_param_used_by_indirect_call (class ipa_node_params *info, int i)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -869,7 +869,7 @@ ipa_is_param_used_by_indirect_call (class ipa_node_params *info, int i)
>  /* Return the used_by_polymorphic_call flag corresponding to the Ith formal
>     parameter of the function associated with INFO.  */
>
> -static inline bool
> +inline bool
>  ipa_is_param_used_by_polymorphic_call (class ipa_node_params *info, int i)
>  {
>    gcc_checking_assert (info->descriptors);
> @@ -944,7 +944,7 @@ class GTY((for_user)) ipa_edge_args
>
>  /* Return the number of actual arguments. */
>
> -static inline int
> +inline int
>  ipa_get_cs_argument_count (class ipa_edge_args *args)
>  {
>    return vec_safe_length (args->jump_functions);
> @@ -954,7 +954,7 @@ ipa_get_cs_argument_count (class ipa_edge_args *args)
>     there is no setter function as jump functions are all set up in
>     ipa_compute_jump_functions. */
>
> -static inline struct ipa_jump_func *
> +inline struct ipa_jump_func *
>  ipa_get_ith_jump_func (class ipa_edge_args *args, int i)
>  {
>    return &(*args->jump_functions)[i];
> @@ -962,7 +962,7 @@ ipa_get_ith_jump_func (class ipa_edge_args *args, int i)
>
>  /* Returns a pointer to the polymorphic call context for the ith argument.
>     NULL if contexts are not computed.  */
> -static inline class ipa_polymorphic_call_context *
> +inline class ipa_polymorphic_call_context *
>  ipa_get_ith_polymorhic_call_context (class ipa_edge_args *args, int i)
>  {
>    if (!args->polymorphic_call_contexts)
> @@ -1056,7 +1056,7 @@ int count_formal_params (tree fndecl);
>  /* This function ensures the array of node param infos is big enough to
>     accommodate a structure for all nodes and reallocates it if not.  */
>
> -static inline void
> +inline void
>  ipa_check_create_node_params (void)
>  {
>    if (!ipa_node_params_sum)
> @@ -1069,13 +1069,13 @@ ipa_check_create_node_params (void)
>     of this function is that debug dumping function can check info availability
>     without causing allocations.  */
>
> -static inline bool
> +inline bool
>  ipa_edge_args_info_available_for_edge_p (struct cgraph_edge *edge)
>  {
>    return ipa_edge_args_sum->exists (edge);
>  }
>
> -static inline ipcp_transformation *
> +inline ipcp_transformation *
>  ipcp_get_transformation_summary (cgraph_node *node)
>  {
>    if (ipcp_transformation_sum == NULL)
> diff --git a/gcc/ira-int.h b/gcc/ira-int.h
> index 95ad76e96ce..e2de47213b4 100644
> --- a/gcc/ira-int.h
> +++ b/gcc/ira-int.h
> @@ -504,7 +504,7 @@ struct ira_emit_data
>  extern ira_emit_data_t ira_allocno_emit_data;
>
>  /* Abbreviation for frequent emit data access.  */
> -static inline rtx
> +inline rtx
>  allocno_emit_reg (ira_allocno_t a)
>  {
>    return ALLOCNO_EMIT_DATA (a)->reg;
> @@ -734,7 +734,7 @@ struct minmax_set_iterator {
>
>  /* Initialize the iterator I for bit vector VEC containing minimal and
>     maximal values MIN and MAX.  */
> -static inline void
> +inline void
>  minmax_set_iter_init (minmax_set_iterator *i, IRA_INT_TYPE *vec, int min,
>                       int max)
>  {
> @@ -749,7 +749,7 @@ minmax_set_iter_init (minmax_set_iterator *i, IRA_INT_TYPE *vec, int min,
>  /* Return TRUE if we have more allocnos to visit, in which case *N is
>     set to the number of the element to be visited.  Otherwise, return
>     FALSE.  */
> -static inline bool
> +inline bool
>  minmax_set_iter_cond (minmax_set_iterator *i, int *n)
>  {
>    /* Skip words that are zeros.  */
> @@ -774,7 +774,7 @@ minmax_set_iter_cond (minmax_set_iterator *i, int *n)
>  }
>
>  /* Advance to the next element in the set.  */
> -static inline void
> +inline void
>  minmax_set_iter_next (minmax_set_iterator *i)
>  {
>    i->word >>= 1;
> @@ -1084,7 +1084,7 @@ extern void ira_emit (bool);
>
>
>  /* Return true if equivalence of pseudo REGNO is not a lvalue.  */
> -static inline bool
> +inline bool
>  ira_equiv_no_lvalue_p (int regno)
>  {
>    if (regno >= ira_reg_equiv_len)
> @@ -1098,7 +1098,7 @@ ira_equiv_no_lvalue_p (int regno)
>
>
>  /* Initialize register costs for MODE if necessary.  */
> -static inline void
> +inline void
>  ira_init_register_move_cost_if_necessary (machine_mode mode)
>  {
>    if (ira_register_move_cost[mode] == NULL)
> @@ -1114,7 +1114,7 @@ struct ira_allocno_iterator {
>  };
>
>  /* Initialize the iterator I.  */
> -static inline void
> +inline void
>  ira_allocno_iter_init (ira_allocno_iterator *i)
>  {
>    i->n = 0;
> @@ -1122,7 +1122,7 @@ ira_allocno_iter_init (ira_allocno_iterator *i)
>
>  /* Return TRUE if we have more allocnos to visit, in which case *A is
>     set to the allocno to be visited.  Otherwise, return FALSE.  */
> -static inline bool
> +inline bool
>  ira_allocno_iter_cond (ira_allocno_iterator *i, ira_allocno_t *a)
>  {
>    int n;
> @@ -1151,7 +1151,7 @@ struct ira_object_iterator {
>  };
>
>  /* Initialize the iterator I.  */
> -static inline void
> +inline void
>  ira_object_iter_init (ira_object_iterator *i)
>  {
>    i->n = 0;
> @@ -1159,7 +1159,7 @@ ira_object_iter_init (ira_object_iterator *i)
>
>  /* Return TRUE if we have more objects to visit, in which case *OBJ is
>     set to the object to be visited.  Otherwise, return FALSE.  */
> -static inline bool
> +inline bool
>  ira_object_iter_cond (ira_object_iterator *i, ira_object_t *obj)
>  {
>    int n;
> @@ -1188,7 +1188,7 @@ struct ira_allocno_object_iterator {
>  };
>
>  /* Initialize the iterator I.  */
> -static inline void
> +inline void
>  ira_allocno_object_iter_init (ira_allocno_object_iterator *i)
>  {
>    i->n = 0;
> @@ -1197,7 +1197,7 @@ ira_allocno_object_iter_init (ira_allocno_object_iterator *i)
>  /* Return TRUE if we have more objects to visit in allocno A, in which
>     case *O is set to the object to be visited.  Otherwise, return
>     FALSE.  */
> -static inline bool
> +inline bool
>  ira_allocno_object_iter_cond (ira_allocno_object_iterator *i, ira_allocno_t a,
>                               ira_object_t *o)
>  {
> @@ -1225,7 +1225,7 @@ struct ira_pref_iterator {
>  };
>
>  /* Initialize the iterator I.  */
> -static inline void
> +inline void
>  ira_pref_iter_init (ira_pref_iterator *i)
>  {
>    i->n = 0;
> @@ -1233,7 +1233,7 @@ ira_pref_iter_init (ira_pref_iterator *i)
>
>  /* Return TRUE if we have more prefs to visit, in which case *PREF is
>     set to the pref to be visited.  Otherwise, return FALSE.  */
> -static inline bool
> +inline bool
>  ira_pref_iter_cond (ira_pref_iterator *i, ira_pref_t *pref)
>  {
>    int n;
> @@ -1263,7 +1263,7 @@ struct ira_copy_iterator {
>  };
>
>  /* Initialize the iterator I.  */
> -static inline void
> +inline void
>  ira_copy_iter_init (ira_copy_iterator *i)
>  {
>    i->n = 0;
> @@ -1271,7 +1271,7 @@ ira_copy_iter_init (ira_copy_iterator *i)
>
>  /* Return TRUE if we have more copies to visit, in which case *CP is
>     set to the copy to be visited.  Otherwise, return FALSE.  */
> -static inline bool
> +inline bool
>  ira_copy_iter_cond (ira_copy_iterator *i, ira_copy_t *cp)
>  {
>    int n;
> @@ -1324,7 +1324,7 @@ struct ira_object_conflict_iterator {
>  };
>
>  /* Initialize the iterator I with ALLOCNO conflicts.  */
> -static inline void
> +inline void
>  ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
>                                ira_object_t obj)
>  {
> @@ -1350,7 +1350,7 @@ ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
>  /* Return TRUE if we have more conflicting allocnos to visit, in which
>     case *A is set to the allocno to be visited.  Otherwise, return
>     FALSE.  */
> -static inline bool
> +inline bool
>  ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
>                                ira_object_t *pobj)
>  {
> @@ -1405,7 +1405,7 @@ ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
>  /* The function returns TRUE if at least one hard register from ones
>     starting with HARD_REGNO and containing value of MODE are in set
>     HARD_REGSET.  */
> -static inline bool
> +inline bool
>  ira_hard_reg_set_intersection_p (int hard_regno, machine_mode mode,
>                                  HARD_REG_SET hard_regset)
>  {
> @@ -1419,7 +1419,7 @@ ira_hard_reg_set_intersection_p (int hard_regno, machine_mode mode,
>  }
>
>  /* Return number of hard registers in hard register SET.  */
> -static inline int
> +inline int
>  hard_reg_set_size (HARD_REG_SET set)
>  {
>    int i, size;
> @@ -1433,7 +1433,7 @@ hard_reg_set_size (HARD_REG_SET set)
>  /* The function returns TRUE if hard registers starting with
>     HARD_REGNO and containing value of MODE are fully in set
>     HARD_REGSET.  */
> -static inline bool
> +inline bool
>  ira_hard_reg_in_set_p (int hard_regno, machine_mode mode,
>                        HARD_REG_SET hard_regset)
>  {
> @@ -1454,7 +1454,7 @@ ira_hard_reg_in_set_p (int hard_regno, machine_mode mode,
>
>  /* Allocate cost vector *VEC for hard registers of ACLASS and
>     initialize the elements by VAL if it is necessary */
> -static inline void
> +inline void
>  ira_allocate_and_set_costs (int **vec, reg_class_t aclass, int val)
>  {
>    int i, *reg_costs;
> @@ -1470,7 +1470,7 @@ ira_allocate_and_set_costs (int **vec, reg_class_t aclass, int val)
>
>  /* Allocate cost vector *VEC for hard registers of ACLASS and copy
>     values of vector SRC into the vector if it is necessary */
> -static inline void
> +inline void
>  ira_allocate_and_copy_costs (int **vec, enum reg_class aclass, int *src)
>  {
>    int len;
> @@ -1484,7 +1484,7 @@ ira_allocate_and_copy_costs (int **vec, enum reg_class aclass, int *src)
>
>  /* Allocate cost vector *VEC for hard registers of ACLASS and add
>     values of vector SRC into the vector if it is necessary */
> -static inline void
> +inline void
>  ira_allocate_and_accumulate_costs (int **vec, enum reg_class aclass, int *src)
>  {
>    int i, len;
> @@ -1504,7 +1504,7 @@ ira_allocate_and_accumulate_costs (int **vec, enum reg_class aclass, int *src)
>  /* Allocate cost vector *VEC for hard registers of ACLASS and copy
>     values of vector SRC into the vector or initialize it by VAL (if
>     SRC is null).  */
> -static inline void
> +inline void
>  ira_allocate_and_set_or_copy_costs (int **vec, enum reg_class aclass,
>                                     int val, int *src)
>  {
> diff --git a/gcc/ira.h b/gcc/ira.h
> index 58b50dbe8a2..ddd86ef345a 100644
> --- a/gcc/ira.h
> +++ b/gcc/ira.h
> @@ -232,7 +232,7 @@ extern rtx non_conflicting_reg_copy_p (rtx_insn *);
>     non-local goto code using frame-pointer to address saved stack
>     pointer value after restoring old frame pointer value.  The
>     function returns TRUE if REGNO is such a static chain pseudo.  */
> -static inline bool
> +inline bool
>  non_spilled_static_chain_regno_p (int regno)
>  {
>    return (cfun->static_chain_decl && crtl->has_nonlocal_goto
> diff --git a/gcc/jit/jit-dejagnu.h b/gcc/jit/jit-dejagnu.h
> index 86f6ad3e14d..bdf57857537 100644
> --- a/gcc/jit/jit-dejagnu.h
> +++ b/gcc/jit/jit-dejagnu.h
> @@ -66,7 +66,7 @@ dg_wait (void)
>  }
>  #endif
>
> -static inline void
> +inline void
>  pass (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -81,7 +81,7 @@ pass (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  xpass (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -96,7 +96,7 @@ xpass (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  fail (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -111,7 +111,7 @@ fail (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  xfail (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -126,7 +126,7 @@ xfail (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  untested (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -141,7 +141,7 @@ untested (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  unresolved (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -156,7 +156,7 @@ unresolved (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  note (const char* fmt, ...)
>  {
>    va_list ap;
> @@ -170,7 +170,7 @@ note (const char* fmt, ...)
>  #endif
>  }
>
> -static inline void
> +inline void
>  totals (void)
>  {
>    printf ("\nTotals:\n");
> diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
> index 2dc9448d7c9..400cf345600 100644
> --- a/gcc/jit/jit-recording.h
> +++ b/gcc/jit/jit-recording.h
> @@ -2556,7 +2556,7 @@ types_kinda_same_internal (recording::type *a,
>
>     For array and vector types the number of element also
>     has to match, aswell as the element types themself.  */
> -static inline bool
> +inline bool
>  types_kinda_same (recording::type *a, recording::type *b)
>  {
>    /* Handle trivial case here, to allow for inlining.  */
> diff --git a/gcc/lra-int.h b/gcc/lra-int.h
> index 2f1450b345c..73f8eb004b0 100644
> --- a/gcc/lra-int.h
> +++ b/gcc/lra-int.h
> @@ -419,7 +419,7 @@ extern void lra_eliminate_reg_if_possible (rtx *);
>  /* Return the hard register which given pseudo REGNO assigned to.
>     Negative value means that the register got memory or we don't know
>     allocation yet.  */
> -static inline int
> +inline int
>  lra_get_regno_hard_regno (int regno)
>  {
>    resize_reg_info ();
> @@ -443,7 +443,7 @@ lra_change_class (int regno, enum reg_class new_class,
>
>  /* Update insn operands which are duplication of NOP operand.  The
>     insn is represented by its LRA internal representation ID.  */
> -static inline void
> +inline void
>  lra_update_dup (lra_insn_recog_data_t id, int nop)
>  {
>    int i;
> @@ -458,7 +458,7 @@ lra_update_dup (lra_insn_recog_data_t id, int nop)
>     operands processing.         Generally speaking, we could do this probably
>     simultaneously with operands processing because a common practice
>     is to enumerate the operators after their operands. */
> -static inline void
> +inline void
>  lra_update_operator_dups (lra_insn_recog_data_t id)
>  {
>    int i;
> @@ -474,7 +474,7 @@ lra_update_operator_dups (lra_insn_recog_data_t id)
>  }
>
>  /* Return info about INSN.  Set up the info if it is not done yet.  */
> -static inline lra_insn_recog_data_t
> +inline lra_insn_recog_data_t
>  lra_get_insn_recog_data (rtx_insn *insn)
>  {
>    lra_insn_recog_data_t data;
> @@ -494,7 +494,7 @@ lra_get_insn_recog_data (rtx_insn *insn)
>  }
>
>  /* Update offset from pseudos with VAL by INCR.  */
> -static inline void
> +inline void
>  lra_update_reg_val_offset (int val, poly_int64 incr)
>  {
>    int i;
> @@ -507,7 +507,7 @@ lra_update_reg_val_offset (int val, poly_int64 incr)
>  }
>
>  /* Return true if register content is equal to VAL with OFFSET.  */
> -static inline bool
> +inline bool
>  lra_reg_val_equal_p (int regno, int val, poly_int64 offset)
>  {
>    if (lra_reg_info[regno].val == val
> @@ -518,7 +518,7 @@ lra_reg_val_equal_p (int regno, int val, poly_int64 offset)
>  }
>
>  /* Assign value of register FROM to TO.  */
> -static inline void
> +inline void
>  lra_assign_reg_val (int from, int to)
>  {
>    lra_reg_info[to].val = lra_reg_info[from].val;
> diff --git a/gcc/lra.h b/gcc/lra.h
> index ec25947d5fa..85dbf927414 100644
> --- a/gcc/lra.h
> +++ b/gcc/lra.h
> @@ -27,7 +27,7 @@ extern bool lra_simple_p;
>  /* Return the allocno reg class of REGNO.  If it is a reload pseudo,
>     the pseudo should finally get hard register of the allocno
>     class.  */
> -static inline enum reg_class
> +inline enum reg_class
>  lra_get_allocno_class (int regno)
>  {
>    resize_reg_info ();
> diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
> index d544dabe184..fc7133d07ba 100644
> --- a/gcc/lto-streamer.h
> +++ b/gcc/lto-streamer.h
> @@ -969,7 +969,7 @@ extern const char *lto_section_name[];
>  extern vec<lto_out_decl_state_ptr> lto_function_decl_states;
>
>  /* Return true if LTO tag TAG corresponds to a tree code.  */
> -static inline bool
> +inline bool
>  lto_tag_is_tree_code_p (enum LTO_tags tag)
>  {
>    return tag > LTO_first_tree_tag && (unsigned) tag <= MAX_TREE_CODES;
> @@ -977,7 +977,7 @@ lto_tag_is_tree_code_p (enum LTO_tags tag)
>
>
>  /* Return true if LTO tag TAG corresponds to a gimple code.  */
> -static inline bool
> +inline bool
>  lto_tag_is_gimple_code_p (enum LTO_tags tag)
>  {
>    return (unsigned) tag >= LTO_first_gimple_tag
> @@ -988,7 +988,7 @@ lto_tag_is_gimple_code_p (enum LTO_tags tag)
>
>  /* Return the LTO tag corresponding to gimple code CODE.  See enum
>     LTO_tags for details on the conversion.  */
> -static inline enum LTO_tags
> +inline enum LTO_tags
>  lto_gimple_code_to_tag (enum gimple_code code)
>  {
>    return (enum LTO_tags) ((unsigned) code + LTO_first_gimple_tag);
> @@ -997,7 +997,7 @@ lto_gimple_code_to_tag (enum gimple_code code)
>
>  /* Return the GIMPLE code corresponding to TAG.  See enum LTO_tags for
>     details on the conversion.  */
> -static inline enum gimple_code
> +inline enum gimple_code
>  lto_tag_to_gimple_code (enum LTO_tags tag)
>  {
>    gcc_assert (lto_tag_is_gimple_code_p (tag));
> @@ -1007,7 +1007,7 @@ lto_tag_to_gimple_code (enum LTO_tags tag)
>
>  /* Return the LTO tag corresponding to tree code CODE.  See enum
>     LTO_tags for details on the conversion.  */
> -static inline enum LTO_tags
> +inline enum LTO_tags
>  lto_tree_code_to_tag (enum tree_code code)
>  {
>    return (enum LTO_tags) ((unsigned) code + LTO_first_tree_tag);
> @@ -1016,7 +1016,7 @@ lto_tree_code_to_tag (enum tree_code code)
>
>  /* Return the tree code corresponding to TAG.  See enum LTO_tags for
>     details on the conversion.  */
> -static inline enum tree_code
> +inline enum tree_code
>  lto_tag_to_tree_code (enum LTO_tags tag)
>  {
>    gcc_assert (lto_tag_is_tree_code_p (tag));
> @@ -1024,7 +1024,7 @@ lto_tag_to_tree_code (enum LTO_tags tag)
>  }
>
>  /* Check that tag ACTUAL == EXPECTED.  */
> -static inline void
> +inline void
>  lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
>  {
>    if (actual != expected)
> @@ -1033,7 +1033,7 @@ lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
>  }
>
>  /* Check that tag ACTUAL is in the range [TAG1, TAG2].  */
> -static inline void
> +inline void
>  lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1,
>                      enum LTO_tags tag2)
>  {
> @@ -1046,7 +1046,7 @@ lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1,
>  }
>
>  /* Initialize an lto_out_decl_buffer ENCODER.  */
> -static inline void
> +inline void
>  lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
>  {
>    encoder->tree_hash_table = new hash_map<tree, unsigned> (251);
> @@ -1056,7 +1056,7 @@ lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
>
>  /* Destroy an lto_tree_ref_encoder ENCODER by freeing its contents.  The
>     memory used by ENCODER is not freed by this function.  */
> -static inline void
> +inline void
>  lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
>  {
>    /* Hash table may be delete already.  */
> @@ -1066,14 +1066,14 @@ lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
>  }
>
>  /* Return the number of trees encoded in ENCODER. */
> -static inline unsigned int
> +inline unsigned int
>  lto_tree_ref_encoder_size (struct lto_tree_ref_encoder *encoder)
>  {
>    return encoder->trees.length ();
>  }
>
>  /* Return the IDX-th tree in ENCODER. */
> -static inline tree
> +inline tree
>  lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder,
>                                unsigned int idx)
>  {
> @@ -1081,7 +1081,7 @@ lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder,
>  }
>
>  /* Return number of encoded nodes in ENCODER.  */
> -static inline int
> +inline int
>  lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
>  {
>    return encoder->nodes.length ();
> @@ -1093,7 +1093,7 @@ lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
>  /* Look up NODE in encoder.  Return NODE's reference if it has been encoded
>     or LCC_NOT_FOUND if it is not there.  */
>
> -static inline int
> +inline int
>  lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
>                            symtab_node *node)
>  {
> @@ -1102,35 +1102,35 @@ lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
>  }
>
>  /* Return true if iterator LSE points to nothing.  */
> -static inline bool
> +inline bool
>  lsei_end_p (lto_symtab_encoder_iterator lsei)
>  {
>    return lsei.index >= (unsigned)lto_symtab_encoder_size (lsei.encoder);
>  }
>
>  /* Advance iterator LSE.  */
> -static inline void
> +inline void
>  lsei_next (lto_symtab_encoder_iterator *lsei)
>  {
>    lsei->index++;
>  }
>
>  /* Return the node pointed to by LSI.  */
> -static inline symtab_node *
> +inline symtab_node *
>  lsei_node (lto_symtab_encoder_iterator lsei)
>  {
>    return lsei.encoder->nodes[lsei.index].node;
>  }
>
>  /* Return the node pointed to by LSI.  */
> -static inline struct cgraph_node *
> +inline struct cgraph_node *
>  lsei_cgraph_node (lto_symtab_encoder_iterator lsei)
>  {
>    return dyn_cast<cgraph_node *> (lsei.encoder->nodes[lsei.index].node);
>  }
>
>  /* Return the node pointed to by LSI.  */
> -static inline varpool_node *
> +inline varpool_node *
>  lsei_varpool_node (lto_symtab_encoder_iterator lsei)
>  {
>    return dyn_cast<varpool_node *> (lsei.encoder->nodes[lsei.index].node);
> @@ -1138,7 +1138,7 @@ lsei_varpool_node (lto_symtab_encoder_iterator lsei)
>
>  /* Return the cgraph node corresponding to REF using ENCODER.  */
>
> -static inline symtab_node *
> +inline symtab_node *
>  lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
>  {
>    if (ref == LCC_NOT_FOUND)
> @@ -1148,7 +1148,7 @@ lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
>  }
>
>  /* Return an iterator to the first node in LSI.  */
> -static inline lto_symtab_encoder_iterator
> +inline lto_symtab_encoder_iterator
>  lsei_start (lto_symtab_encoder_t encoder)
>  {
>    lto_symtab_encoder_iterator lsei;
> @@ -1159,7 +1159,7 @@ lsei_start (lto_symtab_encoder_t encoder)
>  }
>
>  /* Advance iterator LSE.  */
> -static inline void
> +inline void
>  lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
>  {
>    lsei_next (lsei);
> @@ -1169,7 +1169,7 @@ lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
>  }
>
>  /* Return an iterator to the first node in LSI.  */
> -static inline lto_symtab_encoder_iterator
> +inline lto_symtab_encoder_iterator
>  lsei_start_in_partition (lto_symtab_encoder_t encoder)
>  {
>    lto_symtab_encoder_iterator lsei = lsei_start (encoder);
> @@ -1183,7 +1183,7 @@ lsei_start_in_partition (lto_symtab_encoder_t encoder)
>  }
>
>  /* Advance iterator LSE.  */
> -static inline void
> +inline void
>  lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
>  {
>    lsei_next (lsei);
> @@ -1194,7 +1194,7 @@ lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
>  }
>
>  /* Return an iterator to the first node in LSI.  */
> -static inline lto_symtab_encoder_iterator
> +inline lto_symtab_encoder_iterator
>  lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
>  {
>    lto_symtab_encoder_iterator lsei = lsei_start (encoder);
> @@ -1209,7 +1209,7 @@ lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
>  }
>
>  /* Advance iterator LSE.  */
> -static inline void
> +inline void
>  lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
>  {
>    lsei_next (lsei);
> @@ -1220,7 +1220,7 @@ lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
>  }
>
>  /* Return an iterator to the first node in LSI.  */
> -static inline lto_symtab_encoder_iterator
> +inline lto_symtab_encoder_iterator
>  lsei_start_variable_in_partition (lto_symtab_encoder_t encoder)
>  {
>    lto_symtab_encoder_iterator lsei = lsei_start (encoder);
> diff --git a/gcc/memmodel.h b/gcc/memmodel.h
> index 308beca18ba..7dfad2fb6b1 100644
> --- a/gcc/memmodel.h
> +++ b/gcc/memmodel.h
> @@ -51,63 +51,63 @@ enum memmodel
>  };
>
>  /* Return the memory model from a host integer.  */
> -static inline enum memmodel
> +inline enum memmodel
>  memmodel_from_int (unsigned HOST_WIDE_INT val)
>  {
>    return (enum memmodel) (val & MEMMODEL_MASK);
>  }
>
>  /* Return the base memory model from a host integer.  */
> -static inline enum memmodel
> +inline enum memmodel
>  memmodel_base (unsigned HOST_WIDE_INT val)
>  {
>    return (enum memmodel) (val & MEMMODEL_BASE_MASK);
>  }
>
>  /* Return TRUE if the memory model is RELAXED.  */
> -static inline bool
> +inline bool
>  is_mm_relaxed (enum memmodel model)
>  {
>    return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELAXED;
>  }
>
>  /* Return TRUE if the memory model is CONSUME.  */
> -static inline bool
> +inline bool
>  is_mm_consume (enum memmodel model)
>  {
>    return (model & MEMMODEL_BASE_MASK) == MEMMODEL_CONSUME;
>  }
>
>  /* Return TRUE if the memory model is ACQUIRE.  */
> -static inline bool
> +inline bool
>  is_mm_acquire (enum memmodel model)
>  {
>    return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQUIRE;
>  }
>
>  /* Return TRUE if the memory model is RELEASE.  */
> -static inline bool
> +inline bool
>  is_mm_release (enum memmodel model)
>  {
>    return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELEASE;
>  }
>
>  /* Return TRUE if the memory model is ACQ_REL.  */
> -static inline bool
> +inline bool
>  is_mm_acq_rel (enum memmodel model)
>  {
>    return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQ_REL;
>  }
>
>  /* Return TRUE if the memory model is SEQ_CST.  */
> -static inline bool
> +inline bool
>  is_mm_seq_cst (enum memmodel model)
>  {
>    return (model & MEMMODEL_BASE_MASK) == MEMMODEL_SEQ_CST;
>  }
>
>  /* Return TRUE if the memory model is a SYNC variant.  */
> -static inline bool
> +inline bool
>  is_mm_sync (enum memmodel model)
>  {
>    return (model & MEMMODEL_SYNC);
> diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h
> index 775f74adfc9..e21ab52d8ca 100644
> --- a/gcc/objc/objc-act.h
> +++ b/gcc/objc/objc-act.h
> @@ -745,7 +745,7 @@ size_t objc_common_tree_size (enum tree_code code);
>  #define objc_is_class_id(TYPE) (OBJC_TYPE_NAME (TYPE) == objc_class_id)
>
>  /* Retrieve category interface CAT_NAME (if any) associated with CLASS.  */
> -static inline tree
> +inline tree
>  lookup_category (tree klass, tree cat_name)
>  {
>    tree category = CLASS_CATEGORY_LIST (klass);
> @@ -756,7 +756,7 @@ lookup_category (tree klass, tree cat_name)
>  }
>
>  /* Count only the fields occurring in T.  */
> -static inline int
> +inline int
>  ivar_list_length (tree t)
>  {
>    int count = 0;
> @@ -768,7 +768,7 @@ ivar_list_length (tree t)
>    return count;
>  }
>
> -static inline tree
> +inline tree
>  is_ivar (tree decl_chain, tree ident)
>  {
>    for ( ; decl_chain; decl_chain = DECL_CHAIN (decl_chain))
> diff --git a/gcc/objc/objc-map.h b/gcc/objc/objc-map.h
> index 4842abc1431..1e1b5fd419b 100644
> --- a/gcc/objc/objc-map.h
> +++ b/gcc/objc/objc-map.h
> @@ -133,7 +133,7 @@ int objc_map_maximum_load_factor (objc_map_t map);
>     value NULL, and objc_map_get() will return NULL in that case.
>     So a result of NULL means that they key *was* found, and the value
>     associated with it was NULL.  */
> -static inline tree
> +inline tree
>  objc_map_get (objc_map_t map, /* struct tree_identifier * */tree key)
>  {
>    /* The inline implementation is private and may change without notice.  */
> @@ -169,7 +169,7 @@ objc_map_get (objc_map_t map, /* struct tree_identifier * */tree key)
>     You can use any identifier as key, with the exception of NULL.
>
>     You can use any tree as value, including NULL.  */
> -static inline
> +inline
>  void objc_map_put (objc_map_t map, /*struct tree_identifier * */tree key, tree value)
>  {
>    /* The inline implementation is private and may change without notice.  */
> @@ -243,7 +243,7 @@ typedef size_t objc_map_iterator_t;
>  /* Initialize an iterator to iterate over the specified objc_map.  You
>     must use this before starting the iteration, to get a working
>     iterator.  */
> -static inline
> +inline
>  void
>  objc_map_iterator_initialize (objc_map_t map ATTRIBUTE_UNUSED, objc_map_iterator_t *i)
>  {
> @@ -262,7 +262,7 @@ objc_map_iterator_initialize (objc_map_t map ATTRIBUTE_UNUSED, objc_map_iterator
>     been initialized using objc_map_iterator_initialize().  Note that
>     because this function is modifying the iterator, you need to pass a
>     pointer to it.  */
> -static inline
> +inline
>  int
>  objc_map_iterator_move_to_next (objc_map_t map, objc_map_iterator_t *i)
>  {
> @@ -285,7 +285,7 @@ objc_map_iterator_move_to_next (objc_map_t map, objc_map_iterator_t *i)
>     first element), and only if the last call returned
>     OBJC_MAP_SUCCESS.  The behavior is otherwise undefined, probably a
>     segmentation fault.  */
> -static inline
> +inline
>  tree
>  objc_map_iterator_current_key (objc_map_t map, objc_map_iterator_t i)
>  {
> @@ -298,7 +298,7 @@ objc_map_iterator_current_key (objc_map_t map, objc_map_iterator_t i)
>     the first element), and only if the last call returned
>     OBJC_MAP_SUCCESS.  The behavior is otherwise undefined, probably a
>     segmentation fault.  */
> -static inline
> +inline
>  tree
>  objc_map_iterator_current_value (objc_map_t map, objc_map_iterator_t i)
>  {
> diff --git a/gcc/omp-general.h b/gcc/omp-general.h
> index 74e30c5e313..92717db1628 100644
> --- a/gcc/omp-general.h
> +++ b/gcc/omp-general.h
> @@ -137,7 +137,7 @@ enum omp_requires {
>
>  extern GTY(()) enum omp_requires omp_requires_mask;
>
> -static inline dump_flags_t
> +inline dump_flags_t
>  get_openacc_privatization_dump_flags ()
>  {
>    dump_flags_t l_dump_flags = MSG_NOTE;
> diff --git a/gcc/optabs-query.h b/gcc/optabs-query.h
> index ed03bbcc3c3..b266d2fe990 100644
> --- a/gcc/optabs-query.h
> +++ b/gcc/optabs-query.h
> @@ -92,7 +92,7 @@ trapv_binoptab_p (optab binoptab)
>  /* Return insn code for a comparison operator with VMODE
>     resultin MASK_MODE, unsigned if UNS is true.  */
>
> -static inline enum insn_code
> +inline enum insn_code
>  get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
>  {
>    optab tab = uns ? vec_cmpu_optab : vec_cmp_optab;
> @@ -102,7 +102,7 @@ get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
>  /* Return insn code for a comparison operator with VMODE
>     resultin MASK_MODE (only for EQ/NE).  */
>
> -static inline enum insn_code
> +inline enum insn_code
>  get_vec_cmp_eq_icode (machine_mode vmode, machine_mode mask_mode)
>  {
>    return convert_optab_handler (vec_cmpeq_optab, vmode, mask_mode);
> @@ -125,7 +125,7 @@ get_vcond_icode (machine_mode vmode, machine_mode cmode, bool uns)
>  /* Return insn code for a conditional operator with a mask mode
>     MMODE resulting in a value of mode VMODE.  */
>
> -static inline enum insn_code
> +inline enum insn_code
>  get_vcond_mask_icode (machine_mode vmode, machine_mode mmode)
>  {
>    return convert_optab_handler (vcond_mask_optab, vmode, mmode);
> @@ -134,7 +134,7 @@ get_vcond_mask_icode (machine_mode vmode, machine_mode mmode)
>  /* Return insn code for a conditional operator with a comparison in
>     mode CMODE (only EQ/NE), resulting in a value of mode VMODE.  */
>
> -static inline enum insn_code
> +inline enum insn_code
>  get_vcond_eq_icode (machine_mode vmode, machine_mode cmode)
>  {
>    return convert_optab_handler (vcondeq_optab, vmode, cmode);
> diff --git a/gcc/optabs.h b/gcc/optabs.h
> index 7ab2a85e818..29ccbe9235e 100644
> --- a/gcc/optabs.h
> +++ b/gcc/optabs.h
> @@ -70,7 +70,7 @@ public:
>  /* Initialize OP with the given fields.  Initialise the other fields
>     to their default values.  */
>
> -static inline void
> +inline void
>  create_expand_operand (class expand_operand *op,
>                        enum expand_operand_type type,
>                        rtx value, machine_mode mode,
> @@ -87,7 +87,7 @@ create_expand_operand (class expand_operand *op,
>
>  /* Make OP describe an operand that must use rtx X, even if X is volatile.  */
>
> -static inline void
> +inline void
>  create_fixed_operand (class expand_operand *op, rtx x)
>  {
>    create_expand_operand (op, EXPAND_FIXED, x, VOIDmode, false);
> @@ -98,7 +98,7 @@ create_fixed_operand (class expand_operand *op, rtx x)
>     It is OK for VALUE to be inconsistent with MODE, although it will just
>     be ignored in that case.  */
>
> -static inline void
> +inline void
>  create_output_operand (class expand_operand *op, rtx x,
>                        machine_mode mode)
>  {
> @@ -110,7 +110,7 @@ create_output_operand (class expand_operand *op, rtx x,
>     VALUE be copied into a different kind of rtx before being passed
>     as an operand.  */
>
> -static inline void
> +inline void
>  create_input_operand (class expand_operand *op, rtx value,
>                       machine_mode mode)
>  {
> @@ -120,7 +120,7 @@ create_input_operand (class expand_operand *op, rtx value,
>  /* Like create_input_operand, except that VALUE must first be converted
>     to mode MODE.  UNSIGNED_P says whether VALUE is unsigned.  */
>
> -static inline void
> +inline void
>  create_convert_operand_to (class expand_operand *op, rtx value,
>                            machine_mode mode, bool unsigned_p)
>  {
> @@ -136,7 +136,7 @@ create_convert_operand_to (class expand_operand *op, rtx value,
>     conversion (as for convert_modes) and duplicating a scalar to fill
>     a vector (if VALUE is a scalar but the operand is a vector).  */
>
> -static inline void
> +inline void
>  create_convert_operand_from (class expand_operand *op, rtx value,
>                              machine_mode mode, bool unsigned_p)
>  {
> @@ -147,7 +147,7 @@ create_convert_operand_from (class expand_operand *op, rtx value,
>  /* Make OP describe an input Pmode address operand.  VALUE is the value
>     of the address, but it may need to be converted to Pmode first.  */
>
> -static inline void
> +inline void
>  create_address_operand (class expand_operand *op, rtx value)
>  {
>    create_expand_operand (op, EXPAND_ADDRESS, value, Pmode, false);
> diff --git a/gcc/plugin.h b/gcc/plugin.h
> index 3b6f7fd19ee..ee0a53ec4c9 100644
> --- a/gcc/plugin.h
> +++ b/gcc/plugin.h
> @@ -184,7 +184,7 @@ extern bool flag_plugin_added;
>     EVENT    - the event identifier
>     GCC_DATA - event-specific data provided by the compiler  */
>
> -static inline int
> +inline int
>  invoke_plugin_callbacks (int event ATTRIBUTE_UNUSED,
>                          void *gcc_data ATTRIBUTE_UNUSED)
>  {
> diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
> index c7788d720f8..0230a289df5 100644
> --- a/gcc/pretty-print.h
> +++ b/gcc/pretty-print.h
> @@ -113,7 +113,7 @@ public:
>
>  /* Finishes constructing a NULL-terminated character string representing
>     the buffered text.  */
> -static inline const char *
> +inline const char *
>  output_buffer_formatted_text (output_buffer *buff)
>  {
>    obstack_1grow (buff->obstack, '\0');
> @@ -122,7 +122,7 @@ output_buffer_formatted_text (output_buffer *buff)
>
>  /* Append to the output buffer a string specified by its
>     STARTing character and LENGTH.  */
> -static inline void
> +inline void
>  output_buffer_append_r (output_buffer *buff, const char *start, int length)
>  {
>    gcc_checking_assert (start);
> @@ -136,7 +136,7 @@ output_buffer_append_r (output_buffer *buff, const char *start, int length)
>
>  /*  Return a pointer to the last character emitted in the
>      output_buffer.  A NULL pointer means no character available.  */
> -static inline const char *
> +inline const char *
>  output_buffer_last_position_in_text (const output_buffer *buff)
>  {
>    const char *p = NULL;
> @@ -283,7 +283,7 @@ public:
>    diagnostic_url_format url_format;
>  };
>
> -static inline const char *
> +inline const char *
>  pp_get_prefix (const pretty_printer *pp) { return pp->prefix; }
>
>  #define pp_space(PP)            pp_character (PP, ' ')
> @@ -415,7 +415,7 @@ extern void pp_begin_url (pretty_printer *pp, const char *url);
>  extern void pp_end_url (pretty_printer *pp);
>
>  /* Switch into verbatim mode and return the old mode.  */
> -static inline pp_wrapping_mode_t
> +inline pp_wrapping_mode_t
>  pp_set_verbatim_wrapping_ (pretty_printer *pp)
>  {
>    pp_wrapping_mode_t oldmode = pp_wrapping_mode (pp);
> diff --git a/gcc/range.h b/gcc/range.h
> index 12f907c4abf..3b0e9efffbf 100644
> --- a/gcc/range.h
> +++ b/gcc/range.h
> @@ -28,7 +28,7 @@ value_range range_negatives (tree type);
>
>  // Return an irange instance that is a boolean TRUE.
>
> -static inline int_range<1>
> +inline int_range<1>
>  range_true (tree type)
>  {
>    unsigned prec = TYPE_PRECISION (type);
> @@ -37,7 +37,7 @@ range_true (tree type)
>
>  // Return an irange instance that is a boolean FALSE.
>
> -static inline int_range<1>
> +inline int_range<1>
>  range_false (tree type)
>  {
>    unsigned prec = TYPE_PRECISION (type);
> @@ -46,7 +46,7 @@ range_false (tree type)
>
>  // Return an irange that covers both true and false.
>
> -static inline int_range<1>
> +inline int_range<1>
>  range_true_and_false (tree type)
>  {
>    unsigned prec = TYPE_PRECISION (type);
> diff --git a/gcc/read-md.h b/gcc/read-md.h
> index cc0670a04b5..b309c9c3deb 100644
> --- a/gcc/read-md.h
> +++ b/gcc/read-md.h
> @@ -375,7 +375,7 @@ extern void (*include_callback) (const char *);
>
>  /* Read the next character from the MD file.  */
>
> -static inline int
> +inline int
>  read_char (void)
>  {
>    return md_reader_ptr->read_char ();
> @@ -383,7 +383,7 @@ read_char (void)
>
>  /* Put back CH, which was the last character read from the MD file.  */
>
> -static inline void
> +inline void
>  unread_char (int ch)
>  {
>    md_reader_ptr->unread_char (ch);
> diff --git a/gcc/recog.h b/gcc/recog.h
> index 86da3c2bdbb..764fa90afde 100644
> --- a/gcc/recog.h
> +++ b/gcc/recog.h
> @@ -76,7 +76,7 @@ struct operand_alternative
>  /* Return the class for operand I of alternative ALT, taking matching
>     constraints into account.  */
>
> -static inline enum reg_class
> +inline enum reg_class
>  alternative_class (const operand_alternative *alt, int i)
>  {
>    return alt[i].matches >= 0 ? alt[alt[i].matches].cl : alt[i].cl;
> @@ -229,7 +229,7 @@ extern bool mode_dependent_address_p (rtx, addr_space_t);
>
>  extern int recog (rtx, rtx_insn *, int *);
>  #ifndef GENERATOR_FILE
> -static inline int recog_memoized (rtx_insn *insn);
> +inline int recog_memoized (rtx_insn *insn);
>  #endif
>  extern void add_clobbers (rtx, int);
>  extern int added_clobbers_hard_reg_p (int);
> @@ -266,7 +266,7 @@ extern void copy_frame_info_to_split_insn (rtx_insn *, rtx_insn *);
>     The automatically-generated function `recog' is normally called
>     through this one.  */
>
> -static inline int
> +inline int
>  recog_memoized (rtx_insn *insn)
>  {
>    if (INSN_CODE (insn) < 0)
> @@ -277,7 +277,7 @@ recog_memoized (rtx_insn *insn)
>
>  /* Skip chars until the next ',' or the end of the string.  This is
>     useful to skip alternatives in a constraint string.  */
> -static inline const char *
> +inline const char *
>  skip_alternative (const char *p)
>  {
>    const char *r = p;
> diff --git a/gcc/regs.h b/gcc/regs.h
> index d0f029f7749..aea093ed795 100644
> --- a/gcc/regs.h
> +++ b/gcc/regs.h
> @@ -64,7 +64,7 @@ struct regstat_n_sets_and_refs_t
>  extern struct regstat_n_sets_and_refs_t *regstat_n_sets_and_refs;
>
>  /* Indexed by n, gives number of times (REG n) is used or set.  */
> -static inline int
> +inline int
>  REG_N_REFS (int regno)
>  {
>    return regstat_n_sets_and_refs[regno].refs;
> @@ -75,7 +75,7 @@ REG_N_REFS (int regno)
>  #define INC_REG_N_REFS(N,V) (regstat_n_sets_and_refs[N].refs += V)
>
>  /* Indexed by n, gives number of times (REG n) is set.  */
> -static inline int
> +inline int
>  REG_N_SETS (int regno)
>  {
>    return regstat_n_sets_and_refs[regno].sets;
> @@ -266,7 +266,7 @@ hard_regno_nregs (unsigned int regno, machine_mode mode)
>  /* Return an exclusive upper bound on the registers occupied by hard
>     register (reg:MODE REGNO).  */
>
> -static inline unsigned int
> +inline unsigned int
>  end_hard_regno (machine_mode mode, unsigned int regno)
>  {
>    return regno + hard_regno_nregs (regno, mode);
> @@ -275,7 +275,7 @@ end_hard_regno (machine_mode mode, unsigned int regno)
>  /* Add to REGS all the registers required to store a value of mode MODE
>     in register REGNO.  */
>
> -static inline void
> +inline void
>  add_to_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
>                      unsigned int regno)
>  {
> @@ -289,7 +289,7 @@ add_to_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
>
>  /* Likewise, but remove the registers.  */
>
> -static inline void
> +inline void
>  remove_from_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
>                           unsigned int regno)
>  {
> @@ -303,7 +303,7 @@ remove_from_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
>
>  /* Return true if REGS contains the whole of (reg:MODE REGNO).  */
>
> -static inline bool
> +inline bool
>  in_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
>                    unsigned int regno)
>  {
> @@ -328,7 +328,7 @@ in_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
>
>  /* Return true if (reg:MODE REGNO) includes an element of REGS.  */
>
> -static inline bool
> +inline bool
>  overlaps_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
>                          unsigned int regno)
>  {
> @@ -348,7 +348,7 @@ overlaps_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
>  /* Like add_to_hard_reg_set, but use a REGNO/NREGS range instead of
>     REGNO and MODE.  */
>
> -static inline void
> +inline void
>  add_range_to_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
>                            int nregs)
>  {
> @@ -358,7 +358,7 @@ add_range_to_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
>
>  /* Likewise, but remove the registers.  */
>
> -static inline void
> +inline void
>  remove_range_from_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
>                                 int nregs)
>  {
> @@ -368,7 +368,7 @@ remove_range_from_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
>
>  /* Like overlaps_hard_reg_set_p, but use a REGNO/NREGS range instead of
>     REGNO and MODE.  */
> -static inline bool
> +inline bool
>  range_overlaps_hard_reg_set_p (const_hard_reg_set set, unsigned regno,
>                                int nregs)
>  {
> @@ -380,7 +380,7 @@ range_overlaps_hard_reg_set_p (const_hard_reg_set set, unsigned regno,
>
>  /* Like in_hard_reg_set_p, but use a REGNO/NREGS range instead of
>     REGNO and MODE.  */
> -static inline bool
> +inline bool
>  range_in_hard_reg_set_p (const_hard_reg_set set, unsigned regno, int nregs)
>  {
>    while (nregs-- > 0)
> diff --git a/gcc/rtl-iter.h b/gcc/rtl-iter.h
> index df7b4960cce..00ce4f12cac 100644
> --- a/gcc/rtl-iter.h
> +++ b/gcc/rtl-iter.h
> @@ -39,7 +39,7 @@ extern rtx_subrtx_bound_info rtx_nonconst_subrtx_bounds[];
>
>  /* Return true if CODE has no subrtxes.  */
>
> -static inline bool
> +inline bool
>  leaf_code_p (enum rtx_code code)
>  {
>    return rtx_all_subrtx_bounds[code].count == 0;
> diff --git a/gcc/rtl.h b/gcc/rtl.h
> index f9057123127..52f0419af29 100644
> --- a/gcc/rtl.h
> +++ b/gcc/rtl.h
> @@ -1895,7 +1895,7 @@ inline void rtx_jump_insn::set_jump_target (rtx_code_label *target)
>  #define LABEL_REFS(LABEL) XCEXP (LABEL, 3, CODE_LABEL)
>
>  /* Get the label that a LABEL_REF references.  */
> -static inline rtx_insn *
> +inline rtx_insn *
>  label_ref_label (const_rtx ref)
>  {
>    return as_a<rtx_insn *> (XCEXP (ref, 0, LABEL_REF));
> @@ -1903,7 +1903,7 @@ label_ref_label (const_rtx ref)
>
>  /* Set the label that LABEL_REF ref refers to.  */
>
> -static inline void
> +inline void
>  set_label_ref_label (rtx ref, rtx_insn *label)
>  {
>    XCEXP (ref, 0, LABEL_REF) = label;
> @@ -1926,14 +1926,14 @@ set_label_ref_label (rtx ref, rtx_insn *label)
>    (RTL_FLAG_CHECK1 ("ORIGINAL_REGNO", (RTX), REG)->u2.original_regno)
>
>  /* Force the REGNO macro to only be used on the lhs.  */
> -static inline unsigned int
> +inline unsigned int
>  rhs_regno (const_rtx x)
>  {
>    return REG_CHECK (x)->regno;
>  }
>
>  /* Return the final register in REG X plus one.  */
> -static inline unsigned int
> +inline unsigned int
>  END_REGNO (const_rtx x)
>  {
>    return REGNO (x) + REG_NREGS (x);
> @@ -1941,7 +1941,7 @@ END_REGNO (const_rtx x)
>
>  /* Change the REGNO and REG_NREGS of REG X to the specified values,
>     bypassing the df machinery.  */
> -static inline void
> +inline void
>  set_regno_raw (rtx x, unsigned int regno, unsigned int nregs)
>  {
>    reg_info *reg = REG_CHECK (x);
> @@ -2058,7 +2058,7 @@ const_vector_encoded_nelts (const_rtx x)
>
>  /* Return true if CODE always has VOIDmode.  */
>
> -static inline bool
> +inline bool
>  always_void_p (enum rtx_code code)
>  {
>    return code == SET;
> @@ -2073,7 +2073,7 @@ struct full_rtx_costs
>  };
>
>  /* Initialize a full_rtx_costs structure C to the maximum cost.  */
> -static inline void
> +inline void
>  init_costs_to_max (struct full_rtx_costs *c)
>  {
>    c->speed = MAX_COST;
> @@ -2081,7 +2081,7 @@ init_costs_to_max (struct full_rtx_costs *c)
>  }
>
>  /* Initialize a full_rtx_costs structure C to zero cost.  */
> -static inline void
> +inline void
>  init_costs_to_zero (struct full_rtx_costs *c)
>  {
>    c->speed = 0;
> @@ -2090,7 +2090,7 @@ init_costs_to_zero (struct full_rtx_costs *c)
>
>  /* Compare two full_rtx_costs structures A and B, returning true
>     if A < B when optimizing for speed.  */
> -static inline bool
> +inline bool
>  costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
>             bool speed)
>  {
> @@ -2104,7 +2104,7 @@ costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
>
>  /* Increase both members of the full_rtx_costs structure C by the
>     cost of N insns.  */
> -static inline void
> +inline void
>  costs_add_n_insns (struct full_rtx_costs *c, int n)
>  {
>    c->speed += COSTS_N_INSNS (n);
> @@ -2168,7 +2168,7 @@ subreg_shape::unique_id () const
>
>  /* Return the shape of a SUBREG rtx.  */
>
> -static inline subreg_shape
> +inline subreg_shape
>  shape_of_subreg (const_rtx x)
>  {
>    return subreg_shape (GET_MODE (SUBREG_REG (x)),
> @@ -2919,7 +2919,7 @@ extern int currently_expanding_to_rtl;
>  /* Return the cost of SET X.  SPEED_P is true if optimizing for speed
>     rather than size.  */
>
> -static inline int
> +inline int
>  set_rtx_cost (rtx x, bool speed_p)
>  {
>    return rtx_cost (x, VOIDmode, INSN, 4, speed_p);
> @@ -2927,7 +2927,7 @@ set_rtx_cost (rtx x, bool speed_p)
>
>  /* Like set_rtx_cost, but return both the speed and size costs in C.  */
>
> -static inline void
> +inline void
>  get_full_set_rtx_cost (rtx x, struct full_rtx_costs *c)
>  {
>    get_full_rtx_cost (x, VOIDmode, INSN, 4, c);
> @@ -2937,7 +2937,7 @@ get_full_set_rtx_cost (rtx x, struct full_rtx_costs *c)
>     of a register move.  SPEED_P is true if optimizing for speed rather
>     than size.  */
>
> -static inline int
> +inline int
>  set_src_cost (rtx x, machine_mode mode, bool speed_p)
>  {
>    return rtx_cost (x, mode, SET, 1, speed_p);
> @@ -2945,7 +2945,7 @@ set_src_cost (rtx x, machine_mode mode, bool speed_p)
>
>  /* Like set_src_cost, but return both the speed and size costs in C.  */
>
> -static inline void
> +inline void
>  get_full_set_src_cost (rtx x, machine_mode mode, struct full_rtx_costs *c)
>  {
>    get_full_rtx_cost (x, mode, SET, 1, c);
> @@ -3947,7 +3947,7 @@ extern struct target_rtl *this_target_rtl;
>
>  #ifndef GENERATOR_FILE
>  /* Return the attributes of a MEM rtx.  */
> -static inline const class mem_attrs *
> +inline const class mem_attrs *
>  get_mem_attrs (const_rtx x)
>  {
>    class mem_attrs *attrs;
> @@ -3996,7 +3996,7 @@ extern rtx gen_rtx_VAR_LOCATION (machine_mode, tree, rtx,
>  #ifdef GENERATOR_FILE
>  #define PUT_MODE(RTX, MODE) PUT_MODE_RAW (RTX, MODE)
>  #else
> -static inline void
> +inline void
>  PUT_MODE (rtx x, machine_mode mode)
>  {
>    if (REG_P (x))
> diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
> index 751d28c2c9e..61172db9d7b 100644
> --- a/gcc/sbitmap.h
> +++ b/gcc/sbitmap.h
> @@ -98,7 +98,7 @@ struct simple_bitmap_def
>
>  /* Verify that access at INDEX in bitmap MAP is valid.  */
>
> -static inline void
> +inline void
>  bitmap_check_index (const_sbitmap map, int index)
>  {
>    gcc_checking_assert (index >= 0);
> @@ -107,14 +107,14 @@ bitmap_check_index (const_sbitmap map, int index)
>
>  /* Verify that bitmaps A and B have same size.  */
>
> -static inline void
> +inline void
>  bitmap_check_sizes (const_sbitmap a, const_sbitmap b)
>  {
>    gcc_checking_assert (a->n_bits == b->n_bits);
>  }
>
>  /* Test if bit number bitno in the bitmap is set.  */
> -static inline bool
> +inline bool
>  bitmap_bit_p (const_sbitmap map, int bitno)
>  {
>    bitmap_check_index (map, bitno);
> @@ -127,7 +127,7 @@ bitmap_bit_p (const_sbitmap map, int bitno)
>  /* Set bit number BITNO in the sbitmap MAP.
>     Return true if the bit changed.  */
>
> -static inline bool
> +inline bool
>  bitmap_set_bit (sbitmap map, int bitno)
>  {
>    bitmap_check_index (map, bitno);
> @@ -143,7 +143,7 @@ bitmap_set_bit (sbitmap map, int bitno)
>  /* Reset bit number BITNO in the sbitmap MAP.
>     Return true if the bit changed.  */
>
> -static inline bool
> +inline bool
>  bitmap_clear_bit (sbitmap map, int bitno)
>  {
>    bitmap_check_index (map, bitno);
> @@ -177,7 +177,7 @@ struct sbitmap_iterator {
>  /* Initialize the iterator I with sbitmap BMP and the initial index
>     MIN.  */
>
> -static inline void
> +inline void
>  bmp_iter_set_init (sbitmap_iterator *i, const_sbitmap bmp,
>                    unsigned int min, unsigned *bit_no ATTRIBUTE_UNUSED)
>  {
> @@ -197,7 +197,7 @@ bmp_iter_set_init (sbitmap_iterator *i, const_sbitmap bmp,
>     to the index of the bit to be visited.  Otherwise, return
>     false.  */
>
> -static inline bool
> +inline bool
>  bmp_iter_set (sbitmap_iterator *i, unsigned int *n)
>  {
>    /* Skip words that are zeros.  */
> @@ -223,7 +223,7 @@ bmp_iter_set (sbitmap_iterator *i, unsigned int *n)
>
>  /* Advance to the next bit.  */
>
> -static inline void
> +inline void
>  bmp_iter_next (sbitmap_iterator *i, unsigned *bit_no ATTRIBUTE_UNUSED)
>  {
>    i->word >>= 1;
> diff --git a/gcc/sched-int.h b/gcc/sched-int.h
> index ab3ad99cdeb..97b7d2d319b 100644
> --- a/gcc/sched-int.h
> +++ b/gcc/sched-int.h
> @@ -87,7 +87,7 @@ extern struct common_sched_info_def *common_sched_info;
>  extern const struct common_sched_info_def haifa_common_sched_info;
>
>  /* Return true if selective scheduling pass is working.  */
> -static inline bool
> +inline bool
>  sel_sched_p (void)
>  {
>    return common_sched_info->sched_pass_id == SCHED_SEL_PASS;
> @@ -1588,7 +1588,7 @@ typedef struct _sd_iterator sd_iterator_def;
>     struct _deps_link.  */
>
>  /* Return initialized iterator.  */
> -static inline sd_iterator_def
> +inline sd_iterator_def
>  sd_iterator_start (rtx insn, sd_list_types_def types)
>  {
>    /* Some dep_link a pointer to which will return NULL.  */
> @@ -1607,7 +1607,7 @@ sd_iterator_start (rtx insn, sd_list_types_def types)
>  }
>
>  /* Return the current element.  */
> -static inline bool
> +inline bool
>  sd_iterator_cond (sd_iterator_def *it_ptr, dep_t *dep_ptr)
>  {
>    while (true)
> @@ -1645,7 +1645,7 @@ sd_iterator_cond (sd_iterator_def *it_ptr, dep_t *dep_ptr)
>  }
>
>  /* Advance iterator.  */
> -static inline void
> +inline void
>  sd_iterator_next (sd_iterator_def *it_ptr)
>  {
>    it_ptr->linkp = &DEP_LINK_NEXT (*it_ptr->linkp);
> diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
> index b36f2caa2b8..7034a1ab06c 100644
> --- a/gcc/sel-sched-ir.h
> +++ b/gcc/sel-sched-ir.h
> @@ -359,13 +359,13 @@ struct _list_node
>     we can't move them in sel-sched-ir.cc.  */
>  extern object_allocator<_list_node> sched_lists_pool;
>
> -static inline _list_t
> +inline _list_t
>  _list_alloc (void)
>  {
>    return sched_lists_pool.allocate ();
>  }
>
> -static inline void
> +inline void
>  _list_add (_list_t *lp)
>  {
>    _list_t l = _list_alloc ();
> @@ -374,7 +374,7 @@ _list_add (_list_t *lp)
>    *lp = l;
>  }
>
> -static inline void
> +inline void
>  _list_remove_nofree (_list_t *lp)
>  {
>    _list_t n = *lp;
> @@ -382,7 +382,7 @@ _list_remove_nofree (_list_t *lp)
>    *lp = _LIST_NEXT (n);
>  }
>
> -static inline void
> +inline void
>  _list_remove (_list_t *lp)
>  {
>    _list_t n = *lp;
> @@ -391,7 +391,7 @@ _list_remove (_list_t *lp)
>    sched_lists_pool.remove (n);
>  }
>
> -static inline void
> +inline void
>  _list_clear (_list_t *l)
>  {
>    while (*l)
> @@ -412,7 +412,7 @@ struct _list_iterator
>    bool removed_p;
>  };
>
> -static inline void
> +inline void
>  _list_iter_start (_list_iterator *ip, _list_t *lp, bool can_remove_p)
>  {
>    ip->lp = lp;
> @@ -420,7 +420,7 @@ _list_iter_start (_list_iterator *ip, _list_t *lp, bool can_remove_p)
>    ip->removed_p = false;
>  }
>
> -static inline void
> +inline void
>  _list_iter_next (_list_iterator *ip)
>  {
>    if (!ip->removed_p)
> @@ -429,7 +429,7 @@ _list_iter_next (_list_iterator *ip)
>      ip->removed_p = false;
>  }
>
> -static inline void
> +inline void
>  _list_iter_remove (_list_iterator *ip)
>  {
>    gcc_assert (!ip->removed_p && ip->can_remove_p);
> @@ -437,7 +437,7 @@ _list_iter_remove (_list_iterator *ip)
>    ip->removed_p = true;
>  }
>
> -static inline void
> +inline void
>  _list_iter_remove_nofree (_list_iterator *ip)
>  {
>    gcc_assert (!ip->removed_p && ip->can_remove_p);
> @@ -460,7 +460,7 @@ _list_iter_remove_nofree (_list_iterator *ip)
>
>  /* _xlist_t functions.  */
>
> -static inline void
> +inline void
>  _xlist_add (_xlist_t *lp, rtx x)
>  {
>    _list_add (lp);
> @@ -470,7 +470,7 @@ _xlist_add (_xlist_t *lp, rtx x)
>  #define _xlist_remove(LP) (_list_remove (LP))
>  #define _xlist_clear(LP) (_list_clear (LP))
>
> -static inline bool
> +inline bool
>  _xlist_is_in_p (_xlist_t l, rtx x)
>  {
>    while (l)
> @@ -484,7 +484,7 @@ _xlist_is_in_p (_xlist_t l, rtx x)
>  }
>
>  /* Used through _FOR_EACH.  */
> -static inline bool
> +inline bool
>  _list_iter_cond_x (_xlist_t l, rtx *xp)
>  {
>    if (l)
> @@ -505,7 +505,7 @@ typedef _list_iterator _xlist_iterator;
>
>  /* ilist_t functions.  */
>
> -static inline void
> +inline void
>  ilist_add (ilist_t *lp, insn_t insn)
>  {
>    _list_add (lp);
> @@ -514,7 +514,7 @@ ilist_add (ilist_t *lp, insn_t insn)
>  #define ilist_remove(LP) (_list_remove (LP))
>  #define ilist_clear(LP) (_list_clear (LP))
>
> -static inline bool
> +inline bool
>  ilist_is_in_p (ilist_t l, insn_t insn)
>  {
>    while (l)
> @@ -528,7 +528,7 @@ ilist_is_in_p (ilist_t l, insn_t insn)
>  }
>
>  /* Used through _FOR_EACH.  */
> -static inline bool
> +inline bool
>  _list_iter_cond_insn (ilist_t l, insn_t *ip)
>  {
>    if (l)
> @@ -574,7 +574,7 @@ typedef _list_iterator def_list_iterator;
>
>  #define FOR_EACH_DEF(DEF, I, DEF_LIST) _FOR_EACH (def, (DEF), (I), (DEF_LIST))
>
> -static inline bool
> +inline bool
>  _list_iter_cond_def (def_list_t def_list, def_t *def)
>  {
>    if (def_list)
> @@ -1040,7 +1040,7 @@ extern bool sel_bb_empty_p (basic_block);
>  extern bool in_current_region_p (basic_block);
>
>  /* True when BB is a header of the inner loop.  */
> -static inline bool
> +inline bool
>  inner_loop_header_p (basic_block bb)
>  {
>    class loop *inner_loop;
> @@ -1068,7 +1068,7 @@ inner_loop_header_p (basic_block bb)
>  }
>
>  /* Return exit edges of LOOP, filtering out edges with the same dest bb.  */
> -static inline vec<edge>
> +inline vec<edge>
>  get_loop_exit_edges_unique_dests (const class loop *loop)
>  {
>    vec<edge> edges = vNULL;
> @@ -1122,7 +1122,7 @@ sel_bb_empty_or_nop_p (basic_block bb)
>     traverse all of them and if any of them turns out to be another loop header
>     (after skipping empty BBs), add its loop exits to the resulting vector
>     as well.  */
> -static inline vec<edge>
> +inline vec<edge>
>  get_all_loop_exits (basic_block bb)
>  {
>    vec<edge> exits = vNULL;
> @@ -1212,7 +1212,7 @@ get_all_loop_exits (basic_block bb)
>
>  /* We need to return a succ_iterator to avoid 'unitialized' warning
>     during bootstrap.  */
> -static inline succ_iterator
> +inline succ_iterator
>  _succ_iter_start (insn_t *succp, insn_t insn, int flags)
>  {
>    succ_iterator i;
> @@ -1249,7 +1249,7 @@ _succ_iter_start (insn_t *succp, insn_t insn, int flags)
>    return i;
>  }
>
> -static inline bool
> +inline bool
>  _succ_iter_cond (succ_iterator *ip, insn_t *succp, insn_t insn,
>                   bool check (edge, succ_iterator *))
>  {
> @@ -1354,7 +1354,7 @@ _succ_iter_cond (succ_iterator *ip, insn_t *succp, insn_t insn,
>      }
>  }
>
> -static inline void
> +inline void
>  _succ_iter_next (succ_iterator *ip)
>  {
>    gcc_assert (!ip->e2 || ip->e1);
> @@ -1367,7 +1367,7 @@ _succ_iter_next (succ_iterator *ip)
>     empty blocks.  When E2P is not null, the resulting edge is written there.
>     FLAGS are used to specify whether back edges and out-of-region edges
>     should be considered.  */
> -static inline bool
> +inline bool
>  _eligible_successor_edge_p (edge e1, succ_iterator *ip)
>  {
>    edge e2 = e1;
> @@ -1476,7 +1476,7 @@ _eligible_successor_edge_p (edge e1, succ_iterator *ip)
>  #define SUCC_ITER_EDGE(ITER) ((ITER)->e1)
>
>  /* Return the next block of BB not running into inconsistencies.  */
> -static inline basic_block
> +inline basic_block
>  bb_next_bb (basic_block bb)
>  {
>    switch (EDGE_COUNT (bb->succs))
> diff --git a/gcc/sese.h b/gcc/sese.h
> index e79be7514f1..252318bcc1c 100644
> --- a/gcc/sese.h
> +++ b/gcc/sese.h
> @@ -44,7 +44,7 @@ void dump_sese (const sese_l &);
>
>  /* Get the entry of an sese S.  */
>
> -static inline basic_block
> +inline basic_block
>  get_entry_bb (const sese_l &s)
>  {
>    return s.entry->dest;
> @@ -52,7 +52,7 @@ get_entry_bb (const sese_l &s)
>
>  /* Get the exit of an sese S.  */
>
> -static inline basic_block
> +inline basic_block
>  get_exit_bb (const sese_l &s)
>  {
>    return s.exit->src;
> @@ -110,7 +110,7 @@ extern bool sese_trivially_empty_bb_p (basic_block);
>
>  /* The number of parameters in REGION. */
>
> -static inline unsigned
> +inline unsigned
>  sese_nb_params (sese_info_p region)
>  {
>    return region->params.length ();
> @@ -119,7 +119,7 @@ sese_nb_params (sese_info_p region)
>  /* Checks whether BB is contained in the region delimited by ENTRY and
>     EXIT blocks.  */
>
> -static inline bool
> +inline bool
>  bb_in_region (const_basic_block bb, const_basic_block entry, const_basic_block exit)
>  {
>    return dominated_by_p (CDI_DOMINATORS, bb, entry)
> @@ -130,7 +130,7 @@ bb_in_region (const_basic_block bb, const_basic_block entry, const_basic_block e
>  /* Checks whether BB is contained in the region delimited by ENTRY and
>     EXIT blocks.  */
>
> -static inline bool
> +inline bool
>  bb_in_sese_p (basic_block bb, const sese_l &r)
>  {
>    return bb_in_region (bb, r.entry->dest, r.exit->dest);
> @@ -138,7 +138,7 @@ bb_in_sese_p (basic_block bb, const sese_l &r)
>
>  /* Returns true when STMT is defined in REGION.  */
>
> -static inline bool
> +inline bool
>  stmt_in_sese_p (gimple *stmt, const sese_l &r)
>  {
>    basic_block bb = gimple_bb (stmt);
> @@ -147,7 +147,7 @@ stmt_in_sese_p (gimple *stmt, const sese_l &r)
>
>  /* Returns true when NAME is defined in REGION.  */
>
> -static inline bool
> +inline bool
>  defined_in_sese_p (tree name, const sese_l &r)
>  {
>    return stmt_in_sese_p (SSA_NAME_DEF_STMT (name), r);
> @@ -155,7 +155,7 @@ defined_in_sese_p (tree name, const sese_l &r)
>
>  /* Returns true when LOOP is in REGION.  */
>
> -static inline bool
> +inline bool
>  loop_in_sese_p (class loop *loop, const sese_l &region)
>  {
>    return (bb_in_sese_p (loop->header, region)
> @@ -185,7 +185,7 @@ loop_in_sese_p (class loop *loop, const sese_l &region)
>      loop_1 exists, but is not completely contained in the region -> depth 0
>      loop_2 is completely contained -> depth 1  */
>
> -static inline unsigned int
> +inline unsigned int
>  sese_loop_depth (const sese_l &region, loop_p loop)
>  {
>    unsigned int depth = 0;
> @@ -212,19 +212,19 @@ extern void set_ifsese_condition (ifsese, tree);
>  extern edge get_true_edge_from_guard_bb (basic_block);
>  extern edge get_false_edge_from_guard_bb (basic_block);
>
> -static inline edge
> +inline edge
>  if_region_entry (ifsese if_region)
>  {
>    return if_region->region->region.entry;
>  }
>
> -static inline edge
> +inline edge
>  if_region_exit (ifsese if_region)
>  {
>    return if_region->region->region.exit;
>  }
>
> -static inline basic_block
> +inline basic_block
>  if_region_get_condition_block (ifsese if_region)
>  {
>    return if_region_entry (if_region)->dest;
> @@ -272,7 +272,7 @@ typedef struct gimple_poly_bb
>
>  /* Return the innermost loop that contains the basic block GBB.  */
>
> -static inline class loop *
> +inline class loop *
>  gbb_loop (gimple_poly_bb_p gbb)
>  {
>    return GBB_BB (gbb)->loop_father;
> @@ -281,7 +281,7 @@ gbb_loop (gimple_poly_bb_p gbb)
>  /* Returns the gimple loop, that corresponds to the loop_iterator_INDEX.
>     If there is no corresponding gimple loop, we return NULL.  */
>
> -static inline loop_p
> +inline loop_p
>  gbb_loop_at_index (gimple_poly_bb_p gbb, sese_l &region, int index)
>  {
>    loop_p loop = gbb_loop (gbb);
> @@ -297,7 +297,7 @@ gbb_loop_at_index (gimple_poly_bb_p gbb, sese_l &region, int index)
>
>  /* The number of common loops in REGION for GBB1 and GBB2.  */
>
> -static inline int
> +inline int
>  nb_common_loops (sese_l &region, gimple_poly_bb_p gbb1, gimple_poly_bb_p gbb2)
>  {
>    loop_p l1 = gbb_loop (gbb1);
> diff --git a/gcc/sparseset.h b/gcc/sparseset.h
> index 74934cea18b..694ff117f0e 100644
> --- a/gcc/sparseset.h
> +++ b/gcc/sparseset.h
> @@ -109,7 +109,7 @@ extern bool sparseset_equal_p (sparseset, sparseset);
>  /* Operation: S = {}
>     Clear the set of all elements.  */
>
> -static inline void
> +inline void
>  sparseset_clear (sparseset s)
>  {
>    s->members = 0;
> @@ -118,7 +118,7 @@ sparseset_clear (sparseset s)
>
>  /* Return the number of elements currently in the set.  */
>
> -static inline SPARSESET_ELT_TYPE
> +inline SPARSESET_ELT_TYPE
>  sparseset_cardinality (sparseset s)
>  {
>    return s->members;
> @@ -126,7 +126,7 @@ sparseset_cardinality (sparseset s)
>
>  /* Return the maximum number of elements this set can hold.  */
>
> -static inline SPARSESET_ELT_TYPE
> +inline SPARSESET_ELT_TYPE
>  sparseset_size (sparseset s)
>  {
>    return s->size;
> @@ -134,7 +134,7 @@ sparseset_size (sparseset s)
>
>  /* Return true if e is a member of the set S, otherwise return false.  */
>
> -static inline bool
> +inline bool
>  sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e)
>  {
>    SPARSESET_ELT_TYPE idx;
> @@ -149,7 +149,7 @@ sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e)
>  /* Low level insertion routine not meant for use outside of sparseset.[ch].
>     Assumes E is valid and not already a member of the set S.  */
>
> -static inline void
> +inline void
>  sparseset_insert_bit (sparseset s, SPARSESET_ELT_TYPE e, SPARSESET_ELT_TYPE idx)
>  {
>    s->sparse[e] = idx;
> @@ -159,7 +159,7 @@ sparseset_insert_bit (sparseset s, SPARSESET_ELT_TYPE e, SPARSESET_ELT_TYPE idx)
>  /* Operation: S = S + {e}
>     Insert E into the set S, if it isn't already a member.  */
>
> -static inline void
> +inline void
>  sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
>  {
>    if (!sparseset_bit_p (s, e))
> @@ -168,7 +168,7 @@ sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
>
>  /* Return and remove the last member added to the set S.  */
>
> -static inline SPARSESET_ELT_TYPE
> +inline SPARSESET_ELT_TYPE
>  sparseset_pop (sparseset s)
>  {
>    SPARSESET_ELT_TYPE mem = s->members;
> @@ -179,7 +179,7 @@ sparseset_pop (sparseset s)
>    return s->dense[s->members];
>  }
>
> -static inline void
> +inline void
>  sparseset_iter_init (sparseset s)
>  {
>    s->iter = 0;
> @@ -187,7 +187,7 @@ sparseset_iter_init (sparseset s)
>    s->iterating = true;
>  }
>
> -static inline bool
> +inline bool
>  sparseset_iter_p (sparseset s)
>  {
>    if (s->iterating && s->iter < s->members)
> @@ -196,13 +196,13 @@ sparseset_iter_p (sparseset s)
>      return s->iterating = false;
>  }
>
> -static inline SPARSESET_ELT_TYPE
> +inline SPARSESET_ELT_TYPE
>  sparseset_iter_elm (sparseset s)
>  {
>    return s->dense[s->iter];
>  }
>
> -static inline void
> +inline void
>  sparseset_iter_next (sparseset s)
>  {
>    s->iter += s->iter_inc;
> diff --git a/gcc/ssa-iterators.h b/gcc/ssa-iterators.h
> index 43c9b861440..3aeb89bb60e 100644
> --- a/gcc/ssa-iterators.h
> +++ b/gcc/ssa-iterators.h
> @@ -78,7 +78,7 @@ struct imm_use_iterator
>         (void) ((DEST) = next_readonly_imm_use (&(ITER))))
>
>  /* Forward declare for use in the class below.  */
> -static inline void end_imm_use_stmt_traverse (imm_use_iterator *);
> +inline void end_imm_use_stmt_traverse (imm_use_iterator *);
>
>  /* arrange to automatically call, upon descruction, end_imm_use_stmt_traverse
>     with a given pointer to imm_use_iterator.  */
> @@ -246,7 +246,7 @@ struct ssa_op_iter
>
>
>  /* Delink an immediate_uses node from its chain.  */
> -static inline void
> +inline void
>  delink_imm_use (ssa_use_operand_t *linknode)
>  {
>    /* Return if this node is not in a list.  */
> @@ -260,7 +260,7 @@ delink_imm_use (ssa_use_operand_t *linknode)
>  }
>
>  /* Link ssa_imm_use node LINKNODE into the chain for LIST.  */
> -static inline void
> +inline void
>  link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
>  {
>    /* Link the new node at the head of the list.  If we are in the process of
> @@ -272,7 +272,7 @@ link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
>  }
>
>  /* Link ssa_imm_use node LINKNODE into the chain for DEF.  */
> -static inline void
> +inline void
>  link_imm_use (ssa_use_operand_t *linknode, tree def)
>  {
>    ssa_use_operand_t *root;
> @@ -289,7 +289,7 @@ link_imm_use (ssa_use_operand_t *linknode, tree def)
>  }
>
>  /* Set the value of a use pointed to by USE to VAL.  */
> -static inline void
> +inline void
>  set_ssa_use_from_ptr (use_operand_p use, tree val)
>  {
>    delink_imm_use (use);
> @@ -299,7 +299,7 @@ set_ssa_use_from_ptr (use_operand_p use, tree val)
>
>  /* Link ssa_imm_use node LINKNODE into the chain for DEF, with use occurring
>     in STMT.  */
> -static inline void
> +inline void
>  link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple *stmt)
>  {
>    if (stmt)
> @@ -310,7 +310,7 @@ link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple *stmt)
>  }
>
>  /* Relink a new node in place of an old node in the list.  */
> -static inline void
> +inline void
>  relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
>  {
>    /* The node one had better be in the same list.  */
> @@ -328,7 +328,7 @@ relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
>
>  /* Relink ssa_imm_use node LINKNODE into the chain for OLD, with use occurring
>     in STMT.  */
> -static inline void
> +inline void
>  relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
>                      gimple *stmt)
>  {
> @@ -341,14 +341,14 @@ relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
>
>
>  /* Return true is IMM has reached the end of the immediate use list.  */
> -static inline bool
> +inline bool
>  end_readonly_imm_use_p (const imm_use_iterator *imm)
>  {
>    return (imm->imm_use == imm->end_p);
>  }
>
>  /* Initialize iterator IMM to process the list for VAR.  */
> -static inline use_operand_p
> +inline use_operand_p
>  first_readonly_imm_use (imm_use_iterator *imm, tree var)
>  {
>    imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
> @@ -360,7 +360,7 @@ first_readonly_imm_use (imm_use_iterator *imm, tree var)
>  }
>
>  /* Bump IMM to the next use in the list.  */
> -static inline use_operand_p
> +inline use_operand_p
>  next_readonly_imm_use (imm_use_iterator *imm)
>  {
>    use_operand_p old = imm->imm_use;
> @@ -383,7 +383,7 @@ next_readonly_imm_use (imm_use_iterator *imm)
>
>
>  /* Return true if VAR has no nondebug uses.  */
> -static inline bool
> +inline bool
>  has_zero_uses (const_tree var)
>  {
>    const ssa_use_operand_t *const head = &(SSA_NAME_IMM_USE_NODE (var));
> @@ -397,7 +397,7 @@ has_zero_uses (const_tree var)
>  }
>
>  /* Return true if VAR has a single nondebug use.  */
> -static inline bool
> +inline bool
>  has_single_use (const_tree var)
>  {
>    const ssa_use_operand_t *const head = &(SSA_NAME_IMM_USE_NODE (var));
> @@ -418,7 +418,7 @@ has_single_use (const_tree var)
>
>  /* If VAR has only a single immediate nondebug use, return true, and
>     set USE_P and STMT to the use pointer and stmt of occurrence.  */
> -static inline bool
> +inline bool
>  single_imm_use (const_tree var, use_operand_p *use_p, gimple **stmt)
>  {
>    const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var));
> @@ -449,7 +449,7 @@ single_imm_use (const_tree var, use_operand_p *use_p, gimple **stmt)
>  }
>
>  /* Return the number of nondebug immediate uses of VAR.  */
> -static inline unsigned int
> +inline unsigned int
>  num_imm_uses (const_tree var)
>  {
>    const ssa_use_operand_t *const start = &(SSA_NAME_IMM_USE_NODE (var));
> @@ -476,14 +476,14 @@ num_imm_uses (const_tree var)
>     SSA operands.  */
>
>  /* Return true if PTR is finished iterating.  */
> -static inline bool
> +inline bool
>  op_iter_done (const ssa_op_iter *ptr)
>  {
>    return ptr->done;
>  }
>
>  /* Get the next iterator use value for PTR.  */
> -static inline use_operand_p
> +inline use_operand_p
>  op_iter_next_use (ssa_op_iter *ptr)
>  {
>    use_operand_p use_p;
> @@ -503,7 +503,7 @@ op_iter_next_use (ssa_op_iter *ptr)
>  }
>
>  /* Get the next iterator def value for PTR.  */
> -static inline def_operand_p
> +inline def_operand_p
>  op_iter_next_def (ssa_op_iter *ptr)
>  {
>    gcc_checking_assert (ptr->iter_type == ssa_op_iter_def);
> @@ -538,7 +538,7 @@ op_iter_next_def (ssa_op_iter *ptr)
>  }
>
>  /* Get the next iterator tree value for PTR.  */
> -static inline tree
> +inline tree
>  op_iter_next_tree (ssa_op_iter *ptr)
>  {
>    tree val;
> @@ -582,7 +582,7 @@ op_iter_next_tree (ssa_op_iter *ptr)
>     used to prevent warnings in the compile about might be uninitialized
>     components.  */
>
> -static inline void
> +inline void
>  clear_and_done_ssa_iter (ssa_op_iter *ptr)
>  {
>    ptr->i = 0;
> @@ -595,7 +595,7 @@ clear_and_done_ssa_iter (ssa_op_iter *ptr)
>  }
>
>  /* Initialize the iterator PTR to the virtual defs in STMT.  */
> -static inline void
> +inline void
>  op_iter_init (ssa_op_iter *ptr, gimple *stmt, int flags)
>  {
>    /* PHI nodes require a different iterator initialization path.  We
> @@ -640,7 +640,7 @@ op_iter_init (ssa_op_iter *ptr, gimple *stmt, int flags)
>
>  /* Initialize iterator PTR to the use operands in STMT based on FLAGS. Return
>     the first use.  */
> -static inline use_operand_p
> +inline use_operand_p
>  op_iter_init_use (ssa_op_iter *ptr, gimple *stmt, int flags)
>  {
>    gcc_checking_assert ((flags & SSA_OP_ALL_DEFS) == 0
> @@ -652,7 +652,7 @@ op_iter_init_use (ssa_op_iter *ptr, gimple *stmt, int flags)
>
>  /* Initialize iterator PTR to the def operands in STMT based on FLAGS. Return
>     the first def.  */
> -static inline def_operand_p
> +inline def_operand_p
>  op_iter_init_def (ssa_op_iter *ptr, gimple *stmt, int flags)
>  {
>    gcc_checking_assert ((flags & SSA_OP_ALL_USES) == 0
> @@ -664,7 +664,7 @@ op_iter_init_def (ssa_op_iter *ptr, gimple *stmt, int flags)
>
>  /* Initialize iterator PTR to the operands in STMT based on FLAGS. Return
>     the first operand as a tree.  */
> -static inline tree
> +inline tree
>  op_iter_init_tree (ssa_op_iter *ptr, gimple *stmt, int flags)
>  {
>    op_iter_init (ptr, stmt, flags);
> @@ -675,7 +675,7 @@ op_iter_init_tree (ssa_op_iter *ptr, gimple *stmt, int flags)
>
>  /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
>     return NULL.  */
> -static inline tree
> +inline tree
>  single_ssa_tree_operand (gimple *stmt, int flags)
>  {
>    tree var;
> @@ -693,7 +693,7 @@ single_ssa_tree_operand (gimple *stmt, int flags)
>
>  /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
>     return NULL.  */
> -static inline use_operand_p
> +inline use_operand_p
>  single_ssa_use_operand (gimple *stmt, int flags)
>  {
>    use_operand_p var;
> @@ -710,7 +710,7 @@ single_ssa_use_operand (gimple *stmt, int flags)
>
>  /* Return the single virtual use operand in STMT if present.  Otherwise
>     return NULL.  */
> -static inline use_operand_p
> +inline use_operand_p
>  ssa_vuse_operand (gimple *stmt)
>  {
>    if (! gimple_vuse (stmt))
> @@ -721,7 +721,7 @@ ssa_vuse_operand (gimple *stmt)
>
>  /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
>     return NULL.  */
> -static inline def_operand_p
> +inline def_operand_p
>  single_ssa_def_operand (gimple *stmt, int flags)
>  {
>    def_operand_p var;
> @@ -739,7 +739,7 @@ single_ssa_def_operand (gimple *stmt, int flags)
>
>  /* Return true if there are zero operands in STMT matching the type
>     given in FLAGS.  */
> -static inline bool
> +inline bool
>  zero_ssa_operands (gimple *stmt, int flags)
>  {
>    ssa_op_iter iter;
> @@ -750,7 +750,7 @@ zero_ssa_operands (gimple *stmt, int flags)
>
>
>  /* Return the number of operands matching FLAGS in STMT.  */
> -static inline int
> +inline int
>  num_ssa_operands (gimple *stmt, int flags)
>  {
>    ssa_op_iter iter;
> @@ -765,7 +765,7 @@ num_ssa_operands (gimple *stmt, int flags)
>
>  /* If there is a single DEF in the PHI node which matches FLAG, return it.
>     Otherwise return NULL_DEF_OPERAND_P.  */
> -static inline tree
> +inline tree
>  single_phi_def (gphi *stmt, int flags)
>  {
>    tree def = PHI_RESULT (stmt);
> @@ -778,7 +778,7 @@ single_phi_def (gphi *stmt, int flags)
>
>  /* Initialize the iterator PTR for uses matching FLAGS in PHI.  FLAGS should
>     be either SSA_OP_USES or SSA_OP_VIRTUAL_USES.  */
> -static inline use_operand_p
> +inline use_operand_p
>  op_iter_init_phiuse (ssa_op_iter *ptr, gphi *phi, int flags)
>  {
>    tree phi_def = gimple_phi_result (phi);
> @@ -808,7 +808,7 @@ op_iter_init_phiuse (ssa_op_iter *ptr, gphi *phi, int flags)
>
>  /* Start an iterator for a PHI definition.  */
>
> -static inline def_operand_p
> +inline def_operand_p
>  op_iter_init_phidef (ssa_op_iter *ptr, gphi *phi, int flags)
>  {
>    tree phi_def = PHI_RESULT (phi);
> @@ -838,7 +838,7 @@ op_iter_init_phidef (ssa_op_iter *ptr, gphi *phi, int flags)
>
>  /* Return true is IMM has reached the end of the immediate use stmt list.  */
>
> -static inline bool
> +inline bool
>  end_imm_use_stmt_p (const imm_use_iterator *imm)
>  {
>    return (imm->imm_use == imm->end_p);
> @@ -847,7 +847,7 @@ end_imm_use_stmt_p (const imm_use_iterator *imm)
>  /* Finished the traverse of an immediate use stmt list IMM by removing the
>     placeholder node from the list.  */
>
> -static inline void
> +inline void
>  end_imm_use_stmt_traverse (imm_use_iterator *imm)
>  {
>    delink_imm_use (&(imm->iter_node));
> @@ -859,7 +859,7 @@ end_imm_use_stmt_traverse (imm_use_iterator *imm)
>     currently delimited by HEAD and LAST_P.  The new LAST_P value is
>     returned.  */
>
> -static inline use_operand_p
> +inline use_operand_p
>  move_use_after_head (use_operand_p use_p, use_operand_p head,
>                       use_operand_p last_p)
>  {
> @@ -885,7 +885,7 @@ move_use_after_head (use_operand_p use_p, use_operand_p head,
>  /* This routine will relink all uses with the same stmt as HEAD into the list
>     immediately following HEAD for iterator IMM.  */
>
> -static inline void
> +inline void
>  link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
>  {
>    use_operand_p use_p;
> @@ -925,7 +925,7 @@ link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
>  }
>
>  /* Initialize IMM to traverse over uses of VAR.  Return the first statement.  */
> -static inline gimple *
> +inline gimple *
>  first_imm_use_stmt (imm_use_iterator *imm, tree var)
>  {
>    imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
> @@ -950,7 +950,7 @@ first_imm_use_stmt (imm_use_iterator *imm, tree var)
>
>  /* Bump IMM to the next stmt which has a use of var.  */
>
> -static inline gimple *
> +inline gimple *
>  next_imm_use_stmt (imm_use_iterator *imm)
>  {
>    imm->imm_use = imm->iter_node.next;
> @@ -968,7 +968,7 @@ next_imm_use_stmt (imm_use_iterator *imm)
>  /* This routine will return the first use on the stmt IMM currently refers
>     to.  */
>
> -static inline use_operand_p
> +inline use_operand_p
>  first_imm_use_on_stmt (imm_use_iterator *imm)
>  {
>    imm->next_imm_name = imm->imm_use->next;
> @@ -977,7 +977,7 @@ first_imm_use_on_stmt (imm_use_iterator *imm)
>
>  /*  Return TRUE if the last use on the stmt IMM refers to has been visited.  */
>
> -static inline bool
> +inline bool
>  end_imm_use_on_stmt_p (const imm_use_iterator *imm)
>  {
>    return (imm->imm_use == &(imm->iter_node));
> @@ -985,7 +985,7 @@ end_imm_use_on_stmt_p (const imm_use_iterator *imm)
>
>  /* Bump to the next use on the stmt IMM refers to, return NULL if done.  */
>
> -static inline use_operand_p
> +inline use_operand_p
>  next_imm_use_on_stmt (imm_use_iterator *imm)
>  {
>    imm->imm_use = imm->next_imm_name;
> @@ -999,7 +999,7 @@ next_imm_use_on_stmt (imm_use_iterator *imm)
>  }
>
>  /* Delink all immediate_use information for STMT.  */
> -static inline void
> +inline void
>  delink_stmt_imm_use (gimple *stmt)
>  {
>     ssa_op_iter iter;
> diff --git a/gcc/system.h b/gcc/system.h
> index 5eaeb9d2d03..64cd5a49258 100644
> --- a/gcc/system.h
> +++ b/gcc/system.h
> @@ -1166,7 +1166,7 @@ extern void fancy_abort (const char *, int, const char *)
>     so does GCC 3.4.x (PR17436).  */
>  #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
>  #elif defined(__GNUC__)
> -static inline char *
> +inline char *
>  helper_const_non_const_cast (const char *p)
>  {
>    union {
> @@ -1308,7 +1308,7 @@ void gcc_stablesort_r (void *, size_t, size_t, sort_r_cmp_fn *, void *data);
>
>  /* Return true if STR string starts with PREFIX.  */
>
> -static inline bool
> +inline bool
>  startswith (const char *str, const char *prefix)
>  {
>    return strncmp (str, prefix, strlen (prefix)) == 0;
> @@ -1316,7 +1316,7 @@ startswith (const char *str, const char *prefix)
>
>  /* Return true if STR string ends with SUFFIX.  */
>
> -static inline bool
> +inline bool
>  endswith (const char *str, const char *suffix)
>  {
>    size_t str_len = strlen (str);
> diff --git a/gcc/target-globals.h b/gcc/target-globals.h
> index 551b21e8a60..daedf66017f 100644
> --- a/gcc/target-globals.h
> +++ b/gcc/target-globals.h
> @@ -69,7 +69,7 @@ extern class target_globals default_target_globals;
>  extern class target_globals *save_target_globals (void);
>  extern class target_globals *save_target_globals_default_opts (void);
>
> -static inline void
> +inline void
>  restore_target_globals (class target_globals *g)
>  {
>    this_target_flag_state = g->flag_state;
> diff --git a/gcc/target.h b/gcc/target.h
> index 03fd03a5207..fdb364ca451 100644
> --- a/gcc/target.h
> +++ b/gcc/target.h
> @@ -279,7 +279,7 @@ extern struct gcc_target targetm;
>     runtime value is needed for correctness, since the function only
>     provides a rough guess.  */
>
> -static inline HOST_WIDE_INT
> +inline HOST_WIDE_INT
>  estimated_poly_value (poly_int64 x,
>                       poly_value_estimate_kind kind = POLY_VALUE_LIKELY)
>  {
> @@ -295,7 +295,7 @@ estimated_poly_value (poly_int64 x,
>  #define CUMULATIVE_ARGS_MAGIC ((void *) &targetm.calls)
>  #endif
>
> -static inline CUMULATIVE_ARGS *
> +inline CUMULATIVE_ARGS *
>  get_cumulative_args (cumulative_args_t arg)
>  {
>  #if CHECKING_P
> @@ -304,7 +304,7 @@ get_cumulative_args (cumulative_args_t arg)
>    return (CUMULATIVE_ARGS *) arg.p;
>  }
>
> -static inline cumulative_args_t
> +inline cumulative_args_t
>  pack_cumulative_args (CUMULATIVE_ARGS *arg)
>  {
>    cumulative_args_t ret;
> diff --git a/gcc/timevar.h b/gcc/timevar.h
> index 6f3ac370917..ad465731609 100644
> --- a/gcc/timevar.h
> +++ b/gcc/timevar.h
> @@ -206,14 +206,14 @@ class timer
>  };
>
>  /* Provided for backward compatibility.  */
> -static inline void
> +inline void
>  timevar_push (timevar_id_t tv)
>  {
>    if (g_timer)
>      g_timer->push (tv);
>  }
>
> -static inline void
> +inline void
>  timevar_pop (timevar_id_t tv)
>  {
>    if (g_timer)
> diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
> index 83ec0f58659..9c412dc879a 100644
> --- a/gcc/tree-chrec.h
> +++ b/gcc/tree-chrec.h
> @@ -35,7 +35,7 @@ along with GCC; see the file COPYING3.  If not see
>  /* After having added an automatically generated element, please
>     include it in the following function.  */
>
> -static inline bool
> +inline bool
>  automatically_generated_chrec_p (const_tree chrec)
>  {
>    return (chrec == chrec_dont_know
> @@ -44,7 +44,7 @@ automatically_generated_chrec_p (const_tree chrec)
>
>  /* The tree nodes aka. CHRECs.  */
>
> -static inline bool
> +inline bool
>  tree_is_chrec (const_tree expr)
>  {
>    if (TREE_CODE (expr) == POLYNOMIAL_CHREC
> @@ -96,7 +96,7 @@ extern bool evolution_function_right_is_integer_cst (const_tree);
>
>  /* Determines whether CHREC is equal to zero.  */
>
> -static inline bool
> +inline bool
>  chrec_zerop (const_tree chrec)
>  {
>    if (chrec == NULL_TREE)
> @@ -111,7 +111,7 @@ chrec_zerop (const_tree chrec)
>  /* Determines whether CHREC is a loop invariant with respect to LOOP_NUM.
>     Set the result in RES and return true when the property can be computed.  */
>
> -static inline bool
> +inline bool
>  no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
>  {
>    tree scev;
> @@ -129,7 +129,7 @@ no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
>
>  /* Build a polynomial chain of recurrence.  */
>
> -static inline tree
> +inline tree
>  build_polynomial_chrec (unsigned loop_num,
>                         tree left,
>                         tree right)
> @@ -167,7 +167,7 @@ build_polynomial_chrec (unsigned loop_num,
>
>  /* Determines whether the expression CHREC is a constant.  */
>
> -static inline bool
> +inline bool
>  evolution_function_is_constant_p (const_tree chrec)
>  {
>    if (chrec == NULL_TREE)
> @@ -178,7 +178,7 @@ evolution_function_is_constant_p (const_tree chrec)
>
>  /* Determine whether CHREC is an affine evolution function in LOOPNUM.  */
>
> -static inline bool
> +inline bool
>  evolution_function_is_affine_in_loop (const_tree chrec, int loopnum)
>  {
>    if (chrec == NULL_TREE)
> @@ -200,7 +200,7 @@ evolution_function_is_affine_in_loop (const_tree chrec, int loopnum)
>
>  /* Determine whether CHREC is an affine evolution function or not.  */
>
> -static inline bool
> +inline bool
>  evolution_function_is_affine_p (const_tree chrec)
>  {
>    return chrec
> @@ -213,7 +213,7 @@ evolution_function_is_affine_p (const_tree chrec)
>
>  /* Determines whether EXPR does not contains chrec expressions.  */
>
> -static inline bool
> +inline bool
>  tree_does_not_contain_chrecs (const_tree expr)
>  {
>    return !tree_contains_chrecs (expr, NULL);
> @@ -221,7 +221,7 @@ tree_does_not_contain_chrecs (const_tree expr)
>
>  /* Returns the type of the chrec.  */
>
> -static inline tree
> +inline tree
>  chrec_type (const_tree chrec)
>  {
>    if (automatically_generated_chrec_p (chrec))
> @@ -230,7 +230,7 @@ chrec_type (const_tree chrec)
>    return TREE_TYPE (chrec);
>  }
>
> -static inline tree
> +inline tree
>  chrec_fold_op (enum tree_code code, tree type, tree op0, tree op1)
>  {
>    switch (code)
> diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h
> index 50718c0642a..4d1a5c4a45e 100644
> --- a/gcc/tree-data-ref.h
> +++ b/gcc/tree-data-ref.h
> @@ -592,7 +592,7 @@ extern bool dr_known_forward_stride_p (struct data_reference *);
>  /* Return true when the base objects of data references A and B are
>     the same memory object.  */
>
> -static inline bool
> +inline bool
>  same_data_refs_base_objects (data_reference_p a, data_reference_p b)
>  {
>    return DR_NUM_DIMENSIONS (a) == DR_NUM_DIMENSIONS (b)
> @@ -603,7 +603,7 @@ same_data_refs_base_objects (data_reference_p a, data_reference_p b)
>     memory object with the same access functions.  Optionally skip the
>     last OFFSET dimensions in the data reference.  */
>
> -static inline bool
> +inline bool
>  same_data_refs (data_reference_p a, data_reference_p b, int offset = 0)
>  {
>    unsigned int i;
> @@ -641,7 +641,7 @@ known_dependences_p (vec<ddr_p> dependence_relations)
>     LEVEL = 0 means a lexicographic dependence, i.e. a dependence due
>     to the sequence of statements, not carried by any loop.  */
>
> -static inline unsigned
> +inline unsigned
>  dependence_level (lambda_vector dist_vect, int length)
>  {
>    int i;
> @@ -655,7 +655,7 @@ dependence_level (lambda_vector dist_vect, int length)
>
>  /* Return the dependence level for the DDR relation.  */
>
> -static inline unsigned
> +inline unsigned
>  ddr_dependence_level (ddr_p ddr)
>  {
>    unsigned vector;
> @@ -672,7 +672,7 @@ ddr_dependence_level (ddr_p ddr)
>
>  /* Return the index of the variable VAR in the LOOP_NEST array.  */
>
> -static inline int
> +inline int
>  index_in_loop_nest (int var, const vec<loop_p> &loop_nest)
>  {
>    class loop *loopi;
> @@ -688,7 +688,7 @@ index_in_loop_nest (int var, const vec<loop_p> &loop_nest)
>  /* Returns true when the data reference DR the form "A[i] = ..."
>     with a stride equal to its unit type size.  */
>
> -static inline bool
> +inline bool
>  adjacent_dr_p (struct data_reference *dr)
>  {
>    /* If this is a bitfield store bail out.  */
> @@ -709,7 +709,7 @@ void split_constant_offset (tree , tree *, tree *);
>
>  /* Compute the greatest common divisor of a VECTOR of SIZE numbers.  */
>
> -static inline lambda_int
> +inline lambda_int
>  lambda_vector_gcd (lambda_vector vector, int size)
>  {
>    int i;
> @@ -726,7 +726,7 @@ lambda_vector_gcd (lambda_vector vector, int size)
>
>  /* Allocate a new vector of given SIZE.  */
>
> -static inline lambda_vector
> +inline lambda_vector
>  lambda_vector_new (int size)
>  {
>    /* ???  We shouldn't abuse the GC allocator here.  */
> @@ -735,7 +735,7 @@ lambda_vector_new (int size)
>
>  /* Clear out vector VEC1 of length SIZE.  */
>
> -static inline void
> +inline void
>  lambda_vector_clear (lambda_vector vec1, int size)
>  {
>    memset (vec1, 0, size * sizeof (*vec1));
> @@ -744,7 +744,7 @@ lambda_vector_clear (lambda_vector vec1, int size)
>  /* Returns true when the vector V is lexicographically positive, in
>     other words, when the first nonzero element is positive.  */
>
> -static inline bool
> +inline bool
>  lambda_vector_lexico_pos (lambda_vector v,
>                           unsigned n)
>  {
> @@ -763,7 +763,7 @@ lambda_vector_lexico_pos (lambda_vector v,
>
>  /* Return true if vector VEC1 of length SIZE is the zero vector.  */
>
> -static inline bool
> +inline bool
>  lambda_vector_zerop (lambda_vector vec1, int size)
>  {
>    int i;
> @@ -775,7 +775,7 @@ lambda_vector_zerop (lambda_vector vec1, int size)
>
>  /* Allocate a matrix of M rows x  N cols.  */
>
> -static inline lambda_matrix
> +inline lambda_matrix
>  lambda_matrix_new (int m, int n, struct obstack *lambda_obstack)
>  {
>    lambda_matrix mat;
> diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h
> index d09ec7d4118..800dd2e9c0e 100644
> --- a/gcc/tree-iterator.h
> +++ b/gcc/tree-iterator.h
> @@ -49,7 +49,7 @@ struct tree_stmt_iterator {
>    tree operator* () const { return ptr->stmt; }
>  };
>
> -static inline tree_stmt_iterator
> +inline tree_stmt_iterator
>  tsi_start (tree t)
>  {
>    tree_stmt_iterator i;
> @@ -60,7 +60,7 @@ tsi_start (tree t)
>    return i;
>  }
>
> -static inline tree_stmt_iterator
> +inline tree_stmt_iterator
>  tsi_last (tree t)
>  {
>    tree_stmt_iterator i;
> @@ -71,37 +71,37 @@ tsi_last (tree t)
>    return i;
>  }
>
> -static inline bool
> +inline bool
>  tsi_end_p (tree_stmt_iterator i)
>  {
>    return i.ptr == NULL;
>  }
>
> -static inline bool
> +inline bool
>  tsi_one_before_end_p (tree_stmt_iterator i)
>  {
>    return i.ptr != NULL && i.ptr->next == NULL;
>  }
>
> -static inline void
> +inline void
>  tsi_next (tree_stmt_iterator *i)
>  {
>    ++(*i);
>  }
>
> -static inline void
> +inline void
>  tsi_prev (tree_stmt_iterator *i)
>  {
>    --(*i);
>  }
>
> -static inline tree *
> +inline tree *
>  tsi_stmt_ptr (tree_stmt_iterator i)
>  {
>    return &(*i);
>  }
>
> -static inline tree
> +inline tree
>  tsi_stmt (tree_stmt_iterator i)
>  {
>    return *i;
> diff --git a/gcc/tree-outof-ssa.h b/gcc/tree-outof-ssa.h
> index 75264ed2b8a..d69c5a7e68d 100644
> --- a/gcc/tree-outof-ssa.h
> +++ b/gcc/tree-outof-ssa.h
> @@ -53,7 +53,7 @@ extern struct ssaexpand SA;
>
>  /* Returns the RTX expression representing the storage of the outof-SSA
>     partition that the SSA name EXP is a member of.  */
> -static inline rtx
> +inline rtx
>  get_rtx_for_ssa_name (tree exp)
>  {
>    int p = partition_find (SA.map->var_partition, SSA_NAME_VERSION (exp));
> @@ -65,7 +65,7 @@ get_rtx_for_ssa_name (tree exp)
>
>  /* If TER decided to forward the definition of SSA name EXP this function
>     returns the defining statement, otherwise NULL.  */
> -static inline gimple *
> +inline gimple *
>  get_gimple_for_ssa_name (tree exp)
>  {
>    int v = SSA_NAME_VERSION (exp);
> diff --git a/gcc/tree-phinodes.h b/gcc/tree-phinodes.h
> index 29b2143589b..932a461e987 100644
> --- a/gcc/tree-phinodes.h
> +++ b/gcc/tree-phinodes.h
> @@ -31,7 +31,7 @@ extern void remove_phi_nodes (basic_block);
>  extern tree degenerate_phi_result (gphi *);
>  extern void set_phi_nodes (basic_block, gimple_seq);
>
> -static inline use_operand_p
> +inline use_operand_p
>  gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
>  {
>    return &gimple_phi_arg (gs, i)->imm_use;
> @@ -39,7 +39,7 @@ gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
>
>  /* Return the phi argument which contains the specified use.  */
>
> -static inline int
> +inline int
>  phi_arg_index_from_use (use_operand_p use)
>  {
>    struct phi_arg_d *element, *root;
> diff --git a/gcc/tree-scalar-evolution.h b/gcc/tree-scalar-evolution.h
> index d26bfc7ba79..c58a8a16e81 100644
> --- a/gcc/tree-scalar-evolution.h
> +++ b/gcc/tree-scalar-evolution.h
> @@ -46,7 +46,7 @@ extern tree compute_overall_effect_of_inner_loop (class loop *, tree);
>  /* Returns the basic block preceding LOOP, or the CFG entry block when
>     the loop is function's body.  */
>
> -static inline basic_block
> +inline basic_block
>  block_before_loop (loop_p loop)
>  {
>    edge preheader = loop_preheader_edge (loop);
> @@ -57,7 +57,7 @@ block_before_loop (loop_p loop)
>     symbolic form.  LOOP is the loop in which symbolic names have to
>     be analyzed and instantiated.  */
>
> -static inline tree
> +inline tree
>  instantiate_parameters (class loop *loop, tree chrec)
>  {
>    return instantiate_scev (loop_preheader_edge (loop), loop, chrec);
> @@ -65,7 +65,7 @@ instantiate_parameters (class loop *loop, tree chrec)
>
>  /* Returns the loop of the polynomial chrec CHREC.  */
>
> -static inline class loop *
> +inline class loop *
>  get_chrec_loop (const_tree chrec)
>  {
>    return get_loop (cfun, CHREC_VARIABLE (chrec));
> diff --git a/gcc/tree-sra.h b/gcc/tree-sra.h
> index e817d0cdd6d..f20266c4622 100644
> --- a/gcc/tree-sra.h
> +++ b/gcc/tree-sra.h
> @@ -24,7 +24,7 @@ bool type_internals_preclude_sra_p (tree type, const char **msg);
>  /* Return true iff TYPE is stdarg va_list type (which early SRA and IPA-SRA
>     should leave alone).  */
>
> -static inline bool
> +inline bool
>  is_va_list_type (tree type)
>  {
>    return TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (va_list_type_node);
> diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h
> index ac676422e41..dce27323247 100644
> --- a/gcc/tree-ssa-alias.h
> +++ b/gcc/tree-ssa-alias.h
> @@ -186,7 +186,7 @@ extern GTY(()) struct pt_solution ipa_escaped_pt;
>     overlap.  SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the
>     range is open-ended.  Otherwise return false.  */
>
> -static inline bool
> +inline bool
>  ranges_overlap_p (HOST_WIDE_INT pos1,
>                   unsigned HOST_WIDE_INT size1,
>                   HOST_WIDE_INT pos2,
> diff --git a/gcc/tree-ssa-live.h b/gcc/tree-ssa-live.h
> index 33d35496df6..de665d6bad0 100644
> --- a/gcc/tree-ssa-live.h
> +++ b/gcc/tree-ssa-live.h
> @@ -109,7 +109,7 @@ region_contains_p (var_map map, basic_block bb)
>
>  /* Return number of partitions in MAP.  */
>
> -static inline unsigned
> +inline unsigned
>  num_var_partitions (var_map map)
>  {
>    return map->num_partitions;
> @@ -119,7 +119,7 @@ num_var_partitions (var_map map)
>  /* Given partition index I from MAP, return the variable which represents that
>     partition.  */
>
> -static inline tree
> +inline tree
>  partition_to_var (var_map map, int i)
>  {
>    tree name;
> @@ -134,7 +134,7 @@ partition_to_var (var_map map, int i)
>  /* Given ssa_name VERSION, if it has a partition in MAP,  return the var it
>     is associated with.  Otherwise return NULL.  */
>
> -static inline tree
> +inline tree
>  version_to_var (var_map map, int version)
>  {
>    int part;
> @@ -151,7 +151,7 @@ version_to_var (var_map map, int version)
>  /* Given VAR, return the partition number in MAP which contains it.
>     NO_PARTITION is returned if it's not in any partition.  */
>
> -static inline int
> +inline int
>  var_to_partition (var_map map, tree var)
>  {
>    int part;
> @@ -166,7 +166,7 @@ var_to_partition (var_map map, tree var)
>  /* Given VAR, return the variable which represents the entire partition
>     it is a member of in MAP.  NULL is returned if it is not in a partition.  */
>
> -static inline tree
> +inline tree
>  var_to_partition_to_var (var_map map, tree var)
>  {
>    int part;
> @@ -180,7 +180,7 @@ var_to_partition_to_var (var_map map, tree var)
>
>  /* Return the index into the basevar table for PARTITION's base in MAP.  */
>
> -static inline int
> +inline int
>  basevar_index (var_map map, int partition)
>  {
>    gcc_checking_assert (partition >= 0
> @@ -191,7 +191,7 @@ basevar_index (var_map map, int partition)
>
>  /* Return the number of different base variables in MAP.  */
>
> -static inline int
> +inline int
>  num_basevars (var_map map)
>  {
>    return map->num_basevars;
> @@ -274,7 +274,7 @@ extern void destroy_live_vars (vec<bitmap_head> &);
>
>  /*  Return TRUE if P is marked as a global in LIVE.  */
>
> -static inline int
> +inline int
>  partition_is_global (tree_live_info_p live, int p)
>  {
>    gcc_checking_assert (live->global);
> @@ -285,7 +285,7 @@ partition_is_global (tree_live_info_p live, int p)
>  /* Return the bitmap from LIVE representing the live on entry blocks for
>     partition P.  */
>
> -static inline bitmap
> +inline bitmap
>  live_on_entry (tree_live_info_p live, basic_block bb)
>  {
>    gcc_checking_assert (live->livein
> @@ -299,7 +299,7 @@ live_on_entry (tree_live_info_p live, basic_block bb)
>  /* Return the bitmap from LIVE representing the live on exit partitions from
>     block BB.  */
>
> -static inline bitmap
> +inline bitmap
>  live_on_exit (tree_live_info_p live, basic_block bb)
>  {
>    gcc_checking_assert (live->liveout
> @@ -312,7 +312,7 @@ live_on_exit (tree_live_info_p live, basic_block bb)
>
>  /* Return the partition map which the information in LIVE utilizes.  */
>
> -static inline var_map
> +inline var_map
>  live_var_map (tree_live_info_p live)
>  {
>    return live->map;
> @@ -321,7 +321,7 @@ live_var_map (tree_live_info_p live)
>
>  /* Mark partition P as live on entry to basic block BB in LIVE.  */
>
> -static inline void
> +inline void
>  make_live_on_entry (tree_live_info_p live, basic_block bb , int p)
>  {
>    bitmap_set_bit (&live->livein[bb->index], p);
> diff --git a/gcc/tree-ssa-loop-manip.h b/gcc/tree-ssa-loop-manip.h
> index f0b1ed00f9a..d49273a3987 100644
> --- a/gcc/tree-ssa-loop-manip.h
> +++ b/gcc/tree-ssa-loop-manip.h
> @@ -27,7 +27,7 @@ extern void create_iv (tree, tree, tree, class loop *, gimple_stmt_iterator *,
>  extern void rewrite_into_loop_closed_ssa (bitmap, unsigned);
>  extern void verify_loop_closed_ssa (bool, class loop * = NULL);
>
> -static inline void
> +inline void
>  checking_verify_loop_closed_ssa (bool verify_ssa_p, class loop *loop = NULL)
>  {
>    if (flag_checking)
> diff --git a/gcc/tree-ssa-loop.h b/gcc/tree-ssa-loop.h
> index d42ccd455f0..3fd4cd45466 100644
> --- a/gcc/tree-ssa-loop.h
> +++ b/gcc/tree-ssa-loop.h
> @@ -71,7 +71,7 @@ extern unsigned tree_num_loop_insns (class loop *, struct eni_weights *);
>
>  /* Returns the loop of the statement STMT.  */
>
> -static inline class loop *
> +inline class loop *
>  loop_containing_stmt (gimple *stmt)
>  {
>    basic_block bb = gimple_bb (stmt);
> diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h
> index 946cd95f125..ae36bcdb893 100644
> --- a/gcc/tree-ssa-operands.h
> +++ b/gcc/tree-ssa-operands.h
> @@ -106,14 +106,14 @@ extern void debug_immediate_uses_for (tree var);
>  extern void unlink_stmt_vdef (gimple *);
>
>  /* Return the tree pointed-to by USE.  */
> -static inline tree
> +inline tree
>  get_use_from_ptr (use_operand_p use)
>  {
>    return *(use->use);
>  }
>
>  /* Return the tree pointed-to by DEF.  */
> -static inline tree
> +inline tree
>  get_def_from_ptr (def_operand_p def)
>  {
>    return *def;
> diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h
> index c9921e56971..be4cb457873 100644
> --- a/gcc/tree-ssa-propagate.h
> +++ b/gcc/tree-ssa-propagate.h
> @@ -26,7 +26,7 @@ along with GCC; see the file COPYING3.  If not see
>
>  /* If SIM_P is true, statement S will be simulated again.  */
>
> -static inline void
> +inline void
>  prop_set_simulate_again (gimple *s, bool visit_p)
>  {
>    gimple_set_visited (s, visit_p);
> @@ -34,7 +34,7 @@ prop_set_simulate_again (gimple *s, bool visit_p)
>
>  /* Return true if statement T should be simulated again.  */
>
> -static inline bool
> +inline bool
>  prop_simulate_again_p (gimple *s)
>  {
>    return gimple_visited_p (s);
> diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h
> index a6f5973a368..675240ebb9d 100644
> --- a/gcc/tree-ssa-sccvn.h
> +++ b/gcc/tree-ssa-sccvn.h
> @@ -68,7 +68,7 @@ typedef const struct vn_nary_op_s *const_vn_nary_op_t;
>
>  /* Return the size of a vn_nary_op_t with LENGTH operands.  */
>
> -static inline size_t
> +inline size_t
>  sizeof_vn_nary_op (unsigned int length)
>  {
>    return sizeof (struct vn_nary_op_s) + sizeof (tree) * length - sizeof (tree);
> @@ -166,7 +166,7 @@ enum vn_kind vn_get_stmt_kind (gimple *);
>  /* Hash the type TYPE using bits that distinguishes it in the
>     types_compatible_p sense.  */
>
> -static inline hashval_t
> +inline hashval_t
>  vn_hash_type (tree type)
>  {
>    return (INTEGRAL_TYPE_P (type)
> @@ -177,7 +177,7 @@ vn_hash_type (tree type)
>  /* Hash the constant CONSTANT with distinguishing type incompatible
>     constants in the types_compatible_p sense.  */
>
> -static inline hashval_t
> +inline hashval_t
>  vn_hash_constant_with_type (tree constant)
>  {
>    inchash::hash hstate;
> @@ -189,7 +189,7 @@ vn_hash_constant_with_type (tree constant)
>  /* Compare the constants C1 and C2 with distinguishing type incompatible
>     constants in the types_compatible_p sense.  */
>
> -static inline bool
> +inline bool
>  vn_constant_eq_with_type (tree c1, tree c2)
>  {
>    return (expressions_equal_p (c1, c2)
> @@ -286,7 +286,7 @@ unsigned int get_constant_value_id (tree);
>  unsigned int get_or_alloc_constant_value_id (tree);
>
>  /* Return true if V is a value id for a constant.  */
> -static inline bool
> +inline bool
>  value_id_constant_p (unsigned int v)
>  {
>    return (int)v < 0;
> diff --git a/gcc/tree-ssa.h b/gcc/tree-ssa.h
> index 2153cefd226..fa8c8082311 100644
> --- a/gcc/tree-ssa.h
> +++ b/gcc/tree-ssa.h
> @@ -63,7 +63,7 @@ extern void mark_ssa_maybe_undefs (void);
>  /* Return TRUE iff VAR is marked as maybe-undefined.  See
>     mark_ssa_maybe_undefs.  */
>
> -static inline bool
> +inline bool
>  ssa_name_maybe_undef_p (tree var)
>  {
>    gcc_checking_assert (TREE_CODE (var) == SSA_NAME);
> @@ -72,7 +72,7 @@ ssa_name_maybe_undef_p (tree var)
>
>  /* Set (or clear, depending on VALUE) VAR's maybe-undefined mark.  */
>
> -static inline void
> +inline void
>  ssa_name_set_maybe_undef (tree var, bool value = true)
>  {
>    gcc_checking_assert (TREE_CODE (var) == SSA_NAME);
> @@ -84,7 +84,7 @@ extern void execute_update_addresses_taken (void);
>
>  /* Given an edge_var_map V, return the PHI arg definition.  */
>
> -static inline tree
> +inline tree
>  redirect_edge_var_map_def (edge_var_map *v)
>  {
>    return v->def;
> @@ -92,7 +92,7 @@ redirect_edge_var_map_def (edge_var_map *v)
>
>  /* Given an edge_var_map V, return the PHI result.  */
>
> -static inline tree
> +inline tree
>  redirect_edge_var_map_result (edge_var_map *v)
>  {
>    return v->result;
> @@ -100,7 +100,7 @@ redirect_edge_var_map_result (edge_var_map *v)
>
>  /* Given an edge_var_map V, return the PHI arg location.  */
>
> -static inline location_t
> +inline location_t
>  redirect_edge_var_map_location (edge_var_map *v)
>  {
>    return v->locus;
> @@ -108,7 +108,7 @@ redirect_edge_var_map_location (edge_var_map *v)
>
>  /* Verify SSA invariants, if internal consistency checks are enabled.  */
>
> -static inline void
> +inline void
>  checking_verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
>  {
>    if (flag_checking)
> diff --git a/gcc/tree-ssanames.h b/gcc/tree-ssanames.h
> index b45b37b43e7..b09e71bf779 100644
> --- a/gcc/tree-ssanames.h
> +++ b/gcc/tree-ssanames.h
> @@ -91,7 +91,7 @@ extern void flush_ssaname_freelist (void);
>  /* Return an SSA_NAME node for variable VAR defined in statement STMT
>     in function cfun.  */
>
> -static inline tree
> +inline tree
>  make_ssa_name (tree var, gimple *stmt = NULL)
>  {
>    return make_ssa_name_fn (cfun, var, stmt);
> @@ -100,7 +100,7 @@ make_ssa_name (tree var, gimple *stmt = NULL)
>  /* Return an SSA_NAME node using the template SSA name NAME defined in
>     statement STMT in function cfun.  */
>
> -static inline tree
> +inline tree
>  copy_ssa_name (tree var, gimple *stmt = NULL)
>  {
>    return copy_ssa_name_fn (cfun, var, stmt);
> @@ -109,7 +109,7 @@ copy_ssa_name (tree var, gimple *stmt = NULL)
>  /*  Creates a duplicate of a SSA name NAME tobe defined by statement STMT
>      in function cfun.  */
>
> -static inline tree
> +inline tree
>  duplicate_ssa_name (tree var, gimple *stmt)
>  {
>    return duplicate_ssa_name_fn (cfun, var, stmt);
> @@ -117,7 +117,7 @@ duplicate_ssa_name (tree var, gimple *stmt)
>
>  /* Release the SSA name NAME used in function cfun.  */
>
> -static inline void
> +inline void
>  release_ssa_name (tree name)
>  {
>    release_ssa_name_fn (cfun, name);
> @@ -126,7 +126,7 @@ release_ssa_name (tree name)
>  /* Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
>     in function cfun.  Arrange so that it uses NAME in dumps.  */
>
> -static inline tree
> +inline tree
>  make_temp_ssa_name (tree type, gimple *stmt, const char *name)
>  {
>    tree ssa_name;
> diff --git a/gcc/tree-streamer.h b/gcc/tree-streamer.h
> index acca901d660..170d61cf20b 100644
> --- a/gcc/tree-streamer.h
> +++ b/gcc/tree-streamer.h
> @@ -90,7 +90,7 @@ void streamer_tree_cache_delete (struct streamer_tree_cache_d *);
>
>  /* Return the tree node at slot IX in CACHE.  */
>
> -static inline tree
> +inline tree
>  streamer_tree_cache_get_tree (struct streamer_tree_cache_d *cache, unsigned ix)
>  {
>    return cache->nodes[ix];
> @@ -98,20 +98,20 @@ streamer_tree_cache_get_tree (struct streamer_tree_cache_d *cache, unsigned ix)
>
>  /* Return the tree hash value at slot IX in CACHE.  */
>
> -static inline hashval_t
> +inline hashval_t
>  streamer_tree_cache_get_hash (struct streamer_tree_cache_d *cache, unsigned ix)
>  {
>    return cache->hashes[ix];
>  }
>
> -static inline void
> +inline void
>  bp_pack_machine_mode (struct bitpack_d *bp, machine_mode mode)
>  {
>    streamer_mode_table[mode] = 1;
>    bp_pack_enum (bp, machine_mode, 1 << 8, mode);
>  }
>
> -static inline machine_mode
> +inline machine_mode
>  bp_unpack_machine_mode (struct bitpack_d *bp)
>  {
>    return (machine_mode)
> diff --git a/gcc/tree-switch-conversion.h b/gcc/tree-switch-conversion.h
> index 07b11a998a5..4e97164e0ef 100644
> --- a/gcc/tree-switch-conversion.h
> +++ b/gcc/tree-switch-conversion.h
> @@ -914,7 +914,7 @@ switch_decision_tree::reset_out_edges_aux (gswitch *swtch)
>
>  /* Release CLUSTERS vector and destruct all dynamically allocated items.  */
>
> -static inline void
> +inline void
>  release_clusters (vec<cluster *> &clusters)
>  {
>    for (unsigned i = 0; i < clusters.length (); i++)
> diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
> index a2aa71bedc0..87851080758 100644
> --- a/gcc/tree-vectorizer.h
> +++ b/gcc/tree-vectorizer.h
> @@ -969,7 +969,7 @@ public:
>     stack.  */
>  typedef opt_pointer_wrapper <loop_vec_info> opt_loop_vec_info;
>
> -static inline loop_vec_info
> +inline loop_vec_info
>  loop_vec_info_for_loop (class loop *loop)
>  {
>    return (loop_vec_info) loop->aux;
> @@ -1641,7 +1641,7 @@ vector_costs::suggested_unroll_factor () const
>         && TYPE_PRECISION (TYPE) == 1           \
>         && TYPE_UNSIGNED (TYPE)))
>
> -static inline bool
> +inline bool
>  nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
>  {
>    return (loop->inner
> @@ -1652,7 +1652,7 @@ nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
>     Return the initial value of the variable on entry to the containing
>     loop.  */
>
> -static inline tree
> +inline tree
>  vect_phi_initial_value (gphi *phi)
>  {
>    basic_block bb = gimple_bb (phi);
> @@ -1664,7 +1664,7 @@ vect_phi_initial_value (gphi *phi)
>  /* Return true if STMT_INFO should produce a vector mask type rather than
>     a normal nonmask type.  */
>
> -static inline bool
> +inline bool
>  vect_use_mask_type_p (stmt_vec_info stmt_info)
>  {
>    return stmt_info->mask_precision && stmt_info->mask_precision != ~0U;
> @@ -1673,7 +1673,7 @@ vect_use_mask_type_p (stmt_vec_info stmt_info)
>  /* Return TRUE if a statement represented by STMT_INFO is a part of a
>     pattern.  */
>
> -static inline bool
> +inline bool
>  is_pattern_stmt_p (stmt_vec_info stmt_info)
>  {
>    return stmt_info->pattern_stmt_p;
> @@ -1692,7 +1692,7 @@ vect_orig_stmt (stmt_vec_info stmt_info)
>
>  /* Return the later statement between STMT1_INFO and STMT2_INFO.  */
>
> -static inline stmt_vec_info
> +inline stmt_vec_info
>  get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
>  {
>    if (gimple_uid (vect_orig_stmt (stmt1_info)->stmt)
> @@ -1715,7 +1715,7 @@ vect_stmt_to_vectorize (stmt_vec_info stmt_info)
>
>  /* Return true if BB is a loop header.  */
>
> -static inline bool
> +inline bool
>  is_loop_header_bb_p (basic_block bb)
>  {
>    if (bb == (bb->loop_father)->header)
> @@ -1726,7 +1726,7 @@ is_loop_header_bb_p (basic_block bb)
>
>  /* Return pow2 (X).  */
>
> -static inline int
> +inline int
>  vect_pow2 (int x)
>  {
>    int i, res = 1;
> @@ -1739,7 +1739,7 @@ vect_pow2 (int x)
>
>  /* Alias targetm.vectorize.builtin_vectorization_cost.  */
>
> -static inline int
> +inline int
>  builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
>                             tree vectype, int misalign)
>  {
> @@ -1749,7 +1749,7 @@ builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
>
>  /* Get cost by calling cost target builtin.  */
>
> -static inline
> +inline
>  int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
>  {
>    return builtin_vectorization_cost (type_of_cost, NULL, 0);
> @@ -1757,7 +1757,7 @@ int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
>
>  /* Alias targetm.vectorize.init_cost.  */
>
> -static inline vector_costs *
> +inline vector_costs *
>  init_cost (vec_info *vinfo, bool costing_for_scalar)
>  {
>    return targetm.vectorize.create_costs (vinfo, costing_for_scalar);
> @@ -1769,7 +1769,7 @@ extern void dump_stmt_cost (FILE *, int, enum vect_cost_for_stmt,
>
>  /* Alias targetm.vectorize.add_stmt_cost.  */
>
> -static inline unsigned
> +inline unsigned
>  add_stmt_cost (vector_costs *costs, int count,
>                enum vect_cost_for_stmt kind,
>                stmt_vec_info stmt_info, slp_tree node,
> @@ -1784,7 +1784,7 @@ add_stmt_cost (vector_costs *costs, int count,
>    return cost;
>  }
>
> -static inline unsigned
> +inline unsigned
>  add_stmt_cost (vector_costs *costs, int count, enum vect_cost_for_stmt kind,
>                enum vect_cost_model_location where)
>  {
> @@ -1795,7 +1795,7 @@ add_stmt_cost (vector_costs *costs, int count, enum vect_cost_for_stmt kind,
>
>  /* Alias targetm.vectorize.add_stmt_cost.  */
>
> -static inline unsigned
> +inline unsigned
>  add_stmt_cost (vector_costs *costs, stmt_info_for_cost *i)
>  {
>    return add_stmt_cost (costs, i->count, i->kind, i->stmt_info, i->node,
> @@ -1804,7 +1804,7 @@ add_stmt_cost (vector_costs *costs, stmt_info_for_cost *i)
>
>  /* Alias targetm.vectorize.finish_cost.  */
>
> -static inline void
> +inline void
>  finish_cost (vector_costs *costs, const vector_costs *scalar_costs,
>              unsigned *prologue_cost, unsigned *body_cost,
>              unsigned *epilogue_cost, unsigned *suggested_unroll_factor = NULL)
> @@ -1845,7 +1845,7 @@ extern int dr_misalignment (dr_vec_info *dr_info, tree vectype,
>  #define SET_DR_MISALIGNMENT(DR, VAL) set_dr_misalignment (DR, VAL)
>
>  /* Only defined once DR_MISALIGNMENT is defined.  */
> -static inline const poly_uint64
> +inline const poly_uint64
>  dr_target_alignment (dr_vec_info *dr_info)
>  {
>    if (STMT_VINFO_GROUPED_ACCESS (dr_info->stmt))
> @@ -1854,7 +1854,7 @@ dr_target_alignment (dr_vec_info *dr_info)
>  }
>  #define DR_TARGET_ALIGNMENT(DR) dr_target_alignment (DR)
>
> -static inline void
> +inline void
>  set_dr_target_alignment (dr_vec_info *dr_info, poly_uint64 val)
>  {
>    dr_info->target_alignment = val;
> @@ -1864,7 +1864,7 @@ set_dr_target_alignment (dr_vec_info *dr_info, poly_uint64 val)
>  /* Return true if data access DR_INFO is aligned to the targets
>     preferred alignment for VECTYPE (which may be less than a full vector).  */
>
> -static inline bool
> +inline bool
>  aligned_access_p (dr_vec_info *dr_info, tree vectype)
>  {
>    return (dr_misalignment (dr_info, vectype) == 0);
> @@ -1874,7 +1874,7 @@ aligned_access_p (dr_vec_info *dr_info, tree vectype)
>     respect to the targets preferred alignment for VECTYPE, and FALSE
>     otherwise.  */
>
> -static inline bool
> +inline bool
>  known_alignment_for_access_p (dr_vec_info *dr_info, tree vectype)
>  {
>    return (dr_misalignment (dr_info, vectype) != DR_MISALIGNMENT_UNKNOWN);
> @@ -1883,7 +1883,7 @@ known_alignment_for_access_p (dr_vec_info *dr_info, tree vectype)
>  /* Return the minimum alignment in bytes that the vectorized version
>     of DR_INFO is guaranteed to have.  */
>
> -static inline unsigned int
> +inline unsigned int
>  vect_known_alignment_in_bytes (dr_vec_info *dr_info, tree vectype)
>  {
>    int misalignment = dr_misalignment (dr_info, vectype);
> @@ -1898,7 +1898,7 @@ vect_known_alignment_in_bytes (dr_vec_info *dr_info, tree vectype)
>     (which for outer loop vectorization might not be the behavior recorded
>     in DR_INFO itself).  */
>
> -static inline innermost_loop_behavior *
> +inline innermost_loop_behavior *
>  vect_dr_behavior (vec_info *vinfo, dr_vec_info *dr_info)
>  {
>    stmt_vec_info stmt_info = dr_info->stmt;
> @@ -1936,7 +1936,7 @@ get_dr_vinfo_offset (vec_info *vinfo,
>
>
>  /* Return the vect cost model for LOOP.  */
> -static inline enum vect_cost_model
> +inline enum vect_cost_model
>  loop_cost_model (loop_p loop)
>  {
>    if (loop != NULL
> @@ -1947,7 +1947,7 @@ loop_cost_model (loop_p loop)
>  }
>
>  /* Return true if the vect cost model is unlimited.  */
> -static inline bool
> +inline bool
>  unlimited_cost_model (loop_p loop)
>  {
>    return loop_cost_model (loop) == VECT_COST_MODEL_UNLIMITED;
> @@ -1957,7 +1957,7 @@ unlimited_cost_model (loop_p loop)
>     if the first iteration should use a partial mask in order to achieve
>     alignment.  */
>
> -static inline bool
> +inline bool
>  vect_use_loop_mask_for_alignment_p (loop_vec_info loop_vinfo)
>  {
>    return (LOOP_VINFO_FULLY_MASKED_P (loop_vinfo)
> @@ -1968,7 +1968,7 @@ vect_use_loop_mask_for_alignment_p (loop_vec_info loop_vinfo)
>     NUNITS elements.  NUNITS should be based on the vectorization factor,
>     so it is always a known multiple of the number of elements in VECTYPE.  */
>
> -static inline unsigned int
> +inline unsigned int
>  vect_get_num_vectors (poly_uint64 nunits, tree vectype)
>  {
>    return exact_div (nunits, TYPE_VECTOR_SUBPARTS (vectype)).to_constant ();
> @@ -1979,7 +1979,7 @@ vect_get_num_vectors (poly_uint64 nunits, tree vectype)
>     vectorization factor divided by the number of elements in
>     VECTYPE and is always known at compile time.  */
>
> -static inline unsigned int
> +inline unsigned int
>  vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
>  {
>    return vect_get_num_vectors (LOOP_VINFO_VECT_FACTOR (loop_vinfo), vectype);
> @@ -1988,7 +1988,7 @@ vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
>  /* Update maximum unit count *MAX_NUNITS so that it accounts for
>     NUNITS.  *MAX_NUNITS can be 1 if we haven't yet recorded anything.  */
>
> -static inline void
> +inline void
>  vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
>  {
>    /* All unit counts have the form vec_info::vector_size * X for some
> @@ -2001,7 +2001,7 @@ vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
>     the number of units in vector type VECTYPE.  *MAX_NUNITS can be 1
>     if we haven't yet recorded any vector types.  */
>
> -static inline void
> +inline void
>  vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
>  {
>    vect_update_max_nunits (max_nunits, TYPE_VECTOR_SUBPARTS (vectype));
> @@ -2012,7 +2012,7 @@ vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
>     Pick a reasonable estimate if the vectorization factor isn't
>     known at compile time.  */
>
> -static inline unsigned int
> +inline unsigned int
>  vect_vf_for_cost (loop_vec_info loop_vinfo)
>  {
>    return estimated_poly_value (LOOP_VINFO_VECT_FACTOR (loop_vinfo));
> @@ -2022,7 +2022,7 @@ vect_vf_for_cost (loop_vec_info loop_vinfo)
>     Pick a reasonable estimate if the exact number isn't known at
>     compile time.  */
>
> -static inline unsigned int
> +inline unsigned int
>  vect_nunits_for_cost (tree vec_type)
>  {
>    return estimated_poly_value (TYPE_VECTOR_SUBPARTS (vec_type));
> @@ -2030,7 +2030,7 @@ vect_nunits_for_cost (tree vec_type)
>
>  /* Return the maximum possible vectorization factor for LOOP_VINFO.  */
>
> -static inline unsigned HOST_WIDE_INT
> +inline unsigned HOST_WIDE_INT
>  vect_max_vf (loop_vec_info loop_vinfo)
>  {
>    unsigned HOST_WIDE_INT vf;
> @@ -2160,7 +2160,7 @@ extern unsigned record_stmt_cost (stmt_vector_for_cost *, int,
>
>  /* Overload of record_stmt_cost with VECTYPE derived from STMT_INFO.  */
>
> -static inline unsigned
> +inline unsigned
>  record_stmt_cost (stmt_vector_for_cost *body_cost_vec, int count,
>                   enum vect_cost_for_stmt kind, stmt_vec_info stmt_info,
>                   int misalign, enum vect_cost_model_location where)
> diff --git a/gcc/tree.h b/gcc/tree.h
> index c656cd5b7bf..92ac0e6a214 100644
> --- a/gcc/tree.h
> +++ b/gcc/tree.h
> @@ -1280,7 +1280,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
>     location.  */
>  #define CAN_HAVE_LOCATION_P(NODE) ((NODE) && EXPR_P (NODE))
>
> -static inline source_range
> +inline source_range
>  get_expr_source_range (tree expr)
>  {
>    location_t loc = EXPR_LOCATION (expr);
> @@ -3263,7 +3263,7 @@ extern void decl_fini_priority_insert (tree, priority_type);
>  /* Set decl_type of a DECL.  Set it to T when SET is true, or reset
>     it to NONE.  */
>
> -static inline void
> +inline void
>  set_function_decl_type (tree decl, function_decl_type t, bool set)
>  {
>    if (set)
> @@ -4009,7 +4009,7 @@ any_integral_type_check (const_tree __t, const char *__f, int __l,
>  /* Compute the number of operands in an expression node NODE.  For
>     tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
>     otherwise it is looked up from the node's code.  */
> -static inline int
> +inline int
>  tree_operand_length (const_tree node)
>  {
>    if (VL_EXP_CLASS_P (node))
> @@ -4139,7 +4139,7 @@ SET_TYPE_VECTOR_SUBPARTS (tree node, poly_uint64 subparts)
>  /* Return true if we can construct vector types with the given number
>     of subparts.  */
>
> -static inline bool
> +inline bool
>  valid_vector_subparts_p (poly_uint64 subparts)
>  {
>    unsigned HOST_WIDE_INT coeff0 = subparts.coeffs[0];
> @@ -4587,7 +4587,7 @@ extern tree build5 (enum tree_code, tree, tree, tree, tree, tree,
>
>  /* _loc versions of build[1-5].  */
>
> -static inline tree
> +inline tree
>  build1_loc (location_t loc, enum tree_code code, tree type,
>             tree arg1 CXX_MEM_STAT_INFO)
>  {
> @@ -4597,7 +4597,7 @@ build1_loc (location_t loc, enum tree_code code, tree type,
>    return t;
>  }
>
> -static inline tree
> +inline tree
>  build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>             tree arg1 CXX_MEM_STAT_INFO)
>  {
> @@ -4607,7 +4607,7 @@ build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>    return t;
>  }
>
> -static inline tree
> +inline tree
>  build3_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>             tree arg1, tree arg2 CXX_MEM_STAT_INFO)
>  {
> @@ -4617,7 +4617,7 @@ build3_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>    return t;
>  }
>
> -static inline tree
> +inline tree
>  build4_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>             tree arg1, tree arg2, tree arg3 CXX_MEM_STAT_INFO)
>  {
> @@ -4627,7 +4627,7 @@ build4_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>    return t;
>  }
>
> -static inline tree
> +inline tree
>  build5_loc (location_t loc, enum tree_code code, tree type, tree arg0,
>             tree arg1, tree arg2, tree arg3, tree arg4 CXX_MEM_STAT_INFO)
>  {
> @@ -5174,7 +5174,7 @@ extern tree get_narrower (tree, int *);
>
>  /* Return true if T is an expression that get_inner_reference handles.  */
>
> -static inline bool
> +inline bool
>  handled_component_p (const_tree t)
>  {
>    switch (TREE_CODE (t))
> @@ -5195,7 +5195,7 @@ handled_component_p (const_tree t)
>
>  /* Return true T is a component with reverse storage order.  */
>
> -static inline bool
> +inline bool
>  reverse_storage_order_for_component_p (tree t)
>  {
>    /* The storage order only applies to scalar components.  */
> @@ -5233,7 +5233,7 @@ reverse_storage_order_for_component_p (tree t)
>     outer type, a VIEW_CONVERT_EXPR can modify the storage order because
>     it can change the partition of the aggregate object into scalars.  */
>
> -static inline bool
> +inline bool
>  storage_order_barrier_p (const_tree t)
>  {
>    if (TREE_CODE (t) != VIEW_CONVERT_EXPR)
> @@ -5274,7 +5274,7 @@ extern bool real_zerop (const_tree);
>
>  /* Initialize the iterator I with arguments from function FNDECL  */
>
> -static inline void
> +inline void
>  function_args_iter_init (function_args_iterator *i, const_tree fntype)
>  {
>    i->next = TYPE_ARG_TYPES (fntype);
> @@ -5283,7 +5283,7 @@ function_args_iter_init (function_args_iterator *i, const_tree fntype)
>  /* Return a pointer that holds the next argument if there are more arguments to
>     handle, otherwise return NULL.  */
>
> -static inline tree *
> +inline tree *
>  function_args_iter_cond_ptr (function_args_iterator *i)
>  {
>    return (i->next) ? &TREE_VALUE (i->next) : NULL;
> @@ -5292,14 +5292,14 @@ function_args_iter_cond_ptr (function_args_iterator *i)
>  /* Return the next argument if there are more arguments to handle, otherwise
>     return NULL.  */
>
> -static inline tree
> +inline tree
>  function_args_iter_cond (function_args_iterator *i)
>  {
>    return (i->next) ? TREE_VALUE (i->next) : NULL_TREE;
>  }
>
>  /* Advance to the next argument.  */
> -static inline void
> +inline void
>  function_args_iter_next (function_args_iterator *i)
>  {
>    gcc_assert (i->next != NULL_TREE);
> @@ -5311,7 +5311,7 @@ function_args_iter_next (function_args_iterator *i)
>     so the function returns true for all but the innermost and outermost
>     blocks into which an expression has been inlined.  */
>
> -static inline bool
> +inline bool
>  inlined_function_outer_scope_p (const_tree block)
>  {
>   return LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (block)) != UNKNOWN_LOCATION;
> @@ -5385,7 +5385,7 @@ extern const char *combined_fn_name (combined_fn);
>     pointer.  Assumes all pointers are interchangeable, which is sort
>     of already assumed by gcc elsewhere IIRC.  */
>
> -static inline int
> +inline int
>  struct_ptr_eq (const void *a, const void *b)
>  {
>    const void * const * x = (const void * const *) a;
> @@ -5393,7 +5393,7 @@ struct_ptr_eq (const void *a, const void *b)
>    return *x == *y;
>  }
>
> -static inline hashval_t
> +inline hashval_t
>  struct_ptr_hash (const void *a)
>  {
>    const void * const * x = (const void * const *) a;
> @@ -5401,7 +5401,7 @@ struct_ptr_hash (const void *a)
>  }
>
>  /* Return nonzero if CODE is a tree code that represents a truth value.  */
> -static inline bool
> +inline bool
>  truth_value_p (enum tree_code code)
>  {
>    return (TREE_CODE_CLASS (code) == tcc_comparison
> @@ -5412,7 +5412,7 @@ truth_value_p (enum tree_code code)
>
>  /* Return whether TYPE is a type suitable for an offset for
>     a POINTER_PLUS_EXPR.  */
> -static inline bool
> +inline bool
>  ptrofftype_p (tree type)
>  {
>    return (INTEGRAL_TYPE_P (type)
> @@ -5423,7 +5423,7 @@ ptrofftype_p (tree type)
>  /* Return true if the argument is a complete type or an array
>     of unknown bound (whose type is incomplete but) whose elements
>     have complete type.  */
> -static inline bool
> +inline bool
>  complete_or_array_type_p (const_tree type)
>  {
>    return COMPLETE_TYPE_P (type)
> @@ -5482,7 +5482,7 @@ extern void add_expr (const_tree, hash &, unsigned int = 0);
>
>  /* Compat version until all callers are converted. Return hash for
>     TREE with SEED.  */
> -static inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed)
> +inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed)
>  {
>    inchash::hash hstate (seed);
>    inchash::add_expr (tree, hstate);
> @@ -5776,7 +5776,7 @@ typedef hash_map<tree,tree,decl_tree_traits> decl_tree_map;
>
>  /* Initialize the abstract argument list iterator object ITER with the
>     arguments from CALL_EXPR node EXP.  */
> -static inline void
> +inline void
>  init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
>  {
>    iter->t = exp;
> @@ -5784,7 +5784,7 @@ init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
>    iter->i = 0;
>  }
>
> -static inline void
> +inline void
>  init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator *iter)
>  {
>    iter->t = exp;
> @@ -5794,7 +5794,7 @@ init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator
>
>  /* Return the next argument from abstract argument list iterator object ITER,
>     and advance its state.  Return NULL_TREE if there are no more arguments.  */
> -static inline tree
> +inline tree
>  next_call_expr_arg (call_expr_arg_iterator *iter)
>  {
>    tree result;
> @@ -5805,7 +5805,7 @@ next_call_expr_arg (call_expr_arg_iterator *iter)
>    return result;
>  }
>
> -static inline const_tree
> +inline const_tree
>  next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
>  {
>    const_tree result;
> @@ -5820,14 +5820,14 @@ next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
>     past and return the first argument.  Useful in for expressions, e.g.
>       for (arg = first_call_expr_arg (exp, &iter); arg;
>            arg = next_call_expr_arg (&iter))   */
> -static inline tree
> +inline tree
>  first_call_expr_arg (tree exp, call_expr_arg_iterator *iter)
>  {
>    init_call_expr_arg_iterator (exp, iter);
>    return next_call_expr_arg (iter);
>  }
>
> -static inline const_tree
> +inline const_tree
>  first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
>  {
>    init_const_call_expr_arg_iterator (exp, iter);
> @@ -5836,7 +5836,7 @@ first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
>
>  /* Test whether there are more arguments in abstract argument list iterator
>     ITER, without changing its state.  */
> -static inline bool
> +inline bool
>  more_call_expr_args_p (const call_expr_arg_iterator *iter)
>  {
>    return (iter->i < iter->n);
> @@ -5853,7 +5853,7 @@ more_call_expr_args_p (const call_expr_arg_iterator *iter)
>         (arg) = next_const_call_expr_arg (&(iter)))
>
>  /* Return true if tree node T is a language-specific node.  */
> -static inline bool
> +inline bool
>  is_lang_specific (const_tree t)
>  {
>    return TREE_CODE (t) == LANG_TYPE || TREE_CODE (t) >= NUM_TREE_CODES;
> @@ -5871,7 +5871,7 @@ is_lang_specific (const_tree t)
>    (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (builtin_decl_explicit (BUILTIN))))
>
>  /* Return the tree node for an explicit standard builtin function or NULL.  */
> -static inline tree
> +inline tree
>  builtin_decl_explicit (enum built_in_function fncode)
>  {
>    gcc_checking_assert (BUILTIN_VALID_P (fncode));
> @@ -5880,7 +5880,7 @@ builtin_decl_explicit (enum built_in_function fncode)
>  }
>
>  /* Return the tree node for an implicit builtin function or NULL.  */
> -static inline tree
> +inline tree
>  builtin_decl_implicit (enum built_in_function fncode)
>  {
>    size_t uns_fncode = (size_t)fncode;
> @@ -5900,7 +5900,7 @@ extern tree build_builtin_unreachable (location_t);
>  /* Set explicit builtin function nodes and whether it is an implicit
>     function.  */
>
> -static inline void
> +inline void
>  set_builtin_decl (enum built_in_function fncode, tree decl, bool implicit_p)
>  {
>    size_t ufncode = (size_t)fncode;
> @@ -5915,7 +5915,7 @@ set_builtin_decl (enum built_in_function fncode, tree decl, bool implicit_p)
>
>  /* Set the implicit flag for a builtin function.  */
>
> -static inline void
> +inline void
>  set_builtin_decl_implicit_p (enum built_in_function fncode, bool implicit_p)
>  {
>    size_t uns_fncode = (size_t)fncode;
> @@ -5928,7 +5928,7 @@ set_builtin_decl_implicit_p (enum built_in_function fncode, bool implicit_p)
>
>  /* Set the declared flag for a builtin function.  */
>
> -static inline void
> +inline void
>  set_builtin_decl_declared_p (enum built_in_function fncode, bool declared_p)
>  {
>    size_t uns_fncode = (size_t)fncode;
> @@ -5942,7 +5942,7 @@ set_builtin_decl_declared_p (enum built_in_function fncode, bool declared_p)
>  /* Return whether the standard builtin function can be used as an explicit
>     function.  */
>
> -static inline bool
> +inline bool
>  builtin_decl_explicit_p (enum built_in_function fncode)
>  {
>    gcc_checking_assert (BUILTIN_VALID_P (fncode));
> @@ -5951,7 +5951,7 @@ builtin_decl_explicit_p (enum built_in_function fncode)
>
>  /* Return whether the standard builtin function can be used implicitly.  */
>
> -static inline bool
> +inline bool
>  builtin_decl_implicit_p (enum built_in_function fncode)
>  {
>    size_t uns_fncode = (size_t)fncode;
> @@ -5963,7 +5963,7 @@ builtin_decl_implicit_p (enum built_in_function fncode)
>
>  /* Return whether the standard builtin function was declared.  */
>
> -static inline bool
> +inline bool
>  builtin_decl_declared_p (enum built_in_function fncode)
>  {
>    size_t uns_fncode = (size_t)fncode;
> @@ -5983,7 +5983,7 @@ builtin_decl_declared_p (enum built_in_function fncode)
>     Avoid using this, as it's generally better to use attributes rather
>     than to check for functions by name.  */
>
> -static inline bool
> +inline bool
>  maybe_special_function_p (const_tree fndecl)
>  {
>    tree name_decl = DECL_NAME (fndecl);
> @@ -6001,7 +6001,7 @@ maybe_special_function_p (const_tree fndecl)
>  /* Return true if T (assumed to be a DECL) is a global variable.
>     A variable is considered global if its storage is not automatic.  */
>
> -static inline bool
> +inline bool
>  is_global_var (const_tree t)
>  {
>    return (TREE_STATIC (t) || DECL_EXTERNAL (t));
> @@ -6011,7 +6011,7 @@ is_global_var (const_tree t)
>     maybe aliased if it has its address taken by the local TU
>     or possibly by another TU and might be modified through a pointer.  */
>
> -static inline bool
> +inline bool
>  may_be_aliased (const_tree var)
>  {
>    return (TREE_CODE (var) != CONST_DECL
> @@ -6025,7 +6025,7 @@ may_be_aliased (const_tree var)
>  }
>
>  /* Return pointer to optimization flags of FNDECL.  */
> -static inline struct cl_optimization *
> +inline struct cl_optimization *
>  opts_for_fn (const_tree fndecl)
>  {
>    tree fn_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
> @@ -6035,7 +6035,7 @@ opts_for_fn (const_tree fndecl)
>  }
>
>  /* Return pointer to target flags of FNDECL.  */
> -static inline cl_target_option *
> +inline cl_target_option *
>  target_opts_for_fn (const_tree fndecl)
>  {
>    tree fn_opts = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
> diff --git a/gcc/wide-int.h b/gcc/wide-int.h
> index b3c19ec451c..a450a744c9f 100644
> --- a/gcc/wide-int.h
> +++ b/gcc/wide-int.h
> @@ -3495,7 +3495,7 @@ wi::set_bit_in_zero (unsigned int bit)
>
>  /* Accumulate a set of overflows into OVERFLOW.  */
>
> -static inline void
> +inline void
>  wi::accumulate_overflow (wi::overflow_type &overflow,
>                          wi::overflow_type suboverflow)
>  {
> --
> 2.39.1.367.g5cc9858f1b
>

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

* Re: [PATCH] don't declare header-defined functions both static and inline
  2023-01-31  7:05 ` Richard Biener
@ 2023-01-31  8:42   ` Jakub Jelinek
  2023-01-31  9:09     ` Richard Biener
                       ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Jakub Jelinek @ 2023-01-31  8:42 UTC (permalink / raw)
  To: Richard Biener; +Cc: Patrick Palka, gcc-patches

On Tue, Jan 31, 2023 at 08:05:15AM +0100, Richard Biener via Gcc-patches wrote:
> On Tue, Jan 31, 2023 at 4:39 AM Patrick Palka via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
> >
> > Many functions defined in our headers are declared 'static inline' which
> > is a vestige from when GCC's implementation language was C.  But in C++
> > the inline keyword is more than just a compiler hint, and is sufficient
> > to give the function the intended semantics.  In fact declaring a
> > (namespace-scope) function both static and inline is a pessimization
> > since static effectively disables the intended definition merging
> > behavior that inline provides, and is also a source of (harmless) ODR
> > violations when a static inline function gets called from a non-static
> > inline one (such as tree_operand_length being called from
> > tree_operand_check).
> >
> > This patch mechanically fixes the vast majority of occurrences of this
> > anti-pattern throughout the compiler's headers via the command line
> >
> >   echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'
> >
> > Besides fixing the ODR violations, this speeds up stage1 cc1plus by
> > about 2% and reduces the size of its text segment by 1.5MB.
> >
> > Bootstrapped and regtested on x86_64-pc-linux-gnu, would this be OK to
> > push now or wait for stage1?
> 
> Speeding up and reducing the size of cc1plus improves on continued
> regression in this area.  So I'd vote +1 to do this now, let's see what others
> think.

I lean towards +1 too, but
1) we should make sure we don't do that for installed headers with the
   exception of headers meant for GCC plugins; in quick skimming I don't
   see ginclude/ headers among the changed ones, but perhaps doing all
   languages make install, then applying the patch, make and make install
   again into another tree and compare all the headers in those tree
   with the exception of paths with /plugin/include/ in it?
2) we should make sure we don't introduce ODR violations through this, if
   say 2 headers would define different static inline functions with the
   same name (or even one static inline and another without that).
   Don't know what would be best to catch that, get from the patch
   list of changed functions and then search for it in readelf -wi output
   using some script, or would LTO bootstrap detect that, or libabigail?
   What I'm worried about is 2 different headers defining the same
   function perhaps with different arguments/return values or content and
   that we happen to never include the two headers in the same TU
3) we have also gcc/ada/gcc-interface/*.h with
ada.h:#define INLINE static inline
gigi.h:static inline unsigned HOST_WIDE_INT
gigi.h:static inline bool
gigi.h:static inline bool
gigi.h:static inline bool
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
gigi.h:static inline tree
   I think we can defer that to Ada maintaners but we should tell them
   about it
4) there are some static inline also in
   gcc/config/*/*.h (and some in gcc/common/*/*.h - though in that case
   it is solely in installed header that shouldn't be changed)
avr/avr-protos.h:static inline unsigned
pru/pru-protos.h:static inline bool
rs6000/rs6000-internal.h:static inline bool
rs6000/rs6000-protos.h:static inline bool
s390/s390-builtins.h:static inline unsigned int
s390/s390-builtins.h:static inline unsigned int
s390/vecintrin.h:static inline int
   The last one is an installed header, so I think we shouldn't touch
   it, the rest should be considered.

	Jakub


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

* Re: [PATCH] don't declare header-defined functions both static and inline
  2023-01-31  8:42   ` Jakub Jelinek
@ 2023-01-31  9:09     ` Richard Biener
  2023-01-31 10:21     ` Eric Botcazou
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Richard Biener @ 2023-01-31  9:09 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Patrick Palka, gcc-patches

On Tue, Jan 31, 2023 at 9:43 AM Jakub Jelinek <jakub@redhat.com> wrote:
>
> On Tue, Jan 31, 2023 at 08:05:15AM +0100, Richard Biener via Gcc-patches wrote:
> > On Tue, Jan 31, 2023 at 4:39 AM Patrick Palka via Gcc-patches
> > <gcc-patches@gcc.gnu.org> wrote:
> > >
> > > Many functions defined in our headers are declared 'static inline' which
> > > is a vestige from when GCC's implementation language was C.  But in C++
> > > the inline keyword is more than just a compiler hint, and is sufficient
> > > to give the function the intended semantics.  In fact declaring a
> > > (namespace-scope) function both static and inline is a pessimization
> > > since static effectively disables the intended definition merging
> > > behavior that inline provides, and is also a source of (harmless) ODR
> > > violations when a static inline function gets called from a non-static
> > > inline one (such as tree_operand_length being called from
> > > tree_operand_check).
> > >
> > > This patch mechanically fixes the vast majority of occurrences of this
> > > anti-pattern throughout the compiler's headers via the command line
> > >
> > >   echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'
> > >
> > > Besides fixing the ODR violations, this speeds up stage1 cc1plus by
> > > about 2% and reduces the size of its text segment by 1.5MB.
> > >
> > > Bootstrapped and regtested on x86_64-pc-linux-gnu, would this be OK to
> > > push now or wait for stage1?
> >
> > Speeding up and reducing the size of cc1plus improves on continued
> > regression in this area.  So I'd vote +1 to do this now, let's see what others
> > think.
>
> I lean towards +1 too, but
> 1) we should make sure we don't do that for installed headers with the
>    exception of headers meant for GCC plugins; in quick skimming I don't
>    see ginclude/ headers among the changed ones, but perhaps doing all
>    languages make install, then applying the patch, make and make install
>    again into another tree and compare all the headers in those tree
>    with the exception of paths with /plugin/include/ in it?
> 2) we should make sure we don't introduce ODR violations through this, if
>    say 2 headers would define different static inline functions with the
>    same name (or even one static inline and another without that).
>    Don't know what would be best to catch that, get from the patch
>    list of changed functions and then search for it in readelf -wi output
>    using some script, or would LTO bootstrap detect that, or libabigail?
>    What I'm worried about is 2 different headers defining the same
>    function perhaps with different arguments/return values or content and
>    that we happen to never include the two headers in the same TU

Ah, didn't think of that - yes, I suppose it might be that LTO bootstrap
would warn about those?

> 3) we have also gcc/ada/gcc-interface/*.h with
> ada.h:#define INLINE static inline
> gigi.h:static inline unsigned HOST_WIDE_INT
> gigi.h:static inline bool
> gigi.h:static inline bool
> gigi.h:static inline bool
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
>    I think we can defer that to Ada maintaners but we should tell them
>    about it
> 4) there are some static inline also in
>    gcc/config/*/*.h (and some in gcc/common/*/*.h - though in that case
>    it is solely in installed header that shouldn't be changed)
> avr/avr-protos.h:static inline unsigned
> pru/pru-protos.h:static inline bool
> rs6000/rs6000-internal.h:static inline bool
> rs6000/rs6000-protos.h:static inline bool
> s390/s390-builtins.h:static inline unsigned int
> s390/s390-builtins.h:static inline unsigned int
> s390/vecintrin.h:static inline int
>    The last one is an installed header, so I think we shouldn't touch
>    it, the rest should be considered.

The above probably asks to split the patch up and separate gcc/*/*.h
into individual patches?

Richard.

>
>         Jakub
>

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

* Re: [PATCH] don't declare header-defined functions both static and inline
  2023-01-31  8:42   ` Jakub Jelinek
  2023-01-31  9:09     ` Richard Biener
@ 2023-01-31 10:21     ` Eric Botcazou
  2023-02-16 13:37     ` Patrick Palka
  2023-02-16 13:44     ` [PATCH] don't declare header-defined functions both static and inline, pt 2 Patrick Palka
  3 siblings, 0 replies; 9+ messages in thread
From: Eric Botcazou @ 2023-01-31 10:21 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Richard Biener, gcc-patches, Patrick Palka, gcc-patches

> 3) we have also gcc/ada/gcc-interface/*.h with
> ada.h:#define INLINE static inline
> gigi.h:static inline unsigned HOST_WIDE_INT
> gigi.h:static inline bool
> gigi.h:static inline bool
> gigi.h:static inline bool
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
>    I think we can defer that to Ada maintaners but we should tell them
>    about it

Removing all the above "static" is OK.

-- 
Eric Botcazou



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

* Re: [PATCH] don't declare header-defined functions both static and inline
  2023-01-31  8:42   ` Jakub Jelinek
  2023-01-31  9:09     ` Richard Biener
  2023-01-31 10:21     ` Eric Botcazou
@ 2023-02-16 13:37     ` Patrick Palka
  2023-02-16 13:50       ` Jakub Jelinek
  2023-02-16 13:44     ` [PATCH] don't declare header-defined functions both static and inline, pt 2 Patrick Palka
  3 siblings, 1 reply; 9+ messages in thread
From: Patrick Palka @ 2023-02-16 13:37 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Richard Biener, Patrick Palka, gcc-patches

On Tue, 31 Jan 2023, Jakub Jelinek wrote:

> On Tue, Jan 31, 2023 at 08:05:15AM +0100, Richard Biener via Gcc-patches wrote:
> > On Tue, Jan 31, 2023 at 4:39 AM Patrick Palka via Gcc-patches
> > <gcc-patches@gcc.gnu.org> wrote:
> > >
> > > Many functions defined in our headers are declared 'static inline' which
> > > is a vestige from when GCC's implementation language was C.  But in C++
> > > the inline keyword is more than just a compiler hint, and is sufficient
> > > to give the function the intended semantics.  In fact declaring a
> > > (namespace-scope) function both static and inline is a pessimization
> > > since static effectively disables the intended definition merging
> > > behavior that inline provides, and is also a source of (harmless) ODR
> > > violations when a static inline function gets called from a non-static
> > > inline one (such as tree_operand_length being called from
> > > tree_operand_check).
> > >
> > > This patch mechanically fixes the vast majority of occurrences of this
> > > anti-pattern throughout the compiler's headers via the command line
> > >
> > >   echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'
> > >
> > > Besides fixing the ODR violations, this speeds up stage1 cc1plus by
> > > about 2% and reduces the size of its text segment by 1.5MB.
> > >
> > > Bootstrapped and regtested on x86_64-pc-linux-gnu, would this be OK to
> > > push now or wait for stage1?
> > 
> > Speeding up and reducing the size of cc1plus improves on continued
> > regression in this area.  So I'd vote +1 to do this now, let's see what others
> > think.
> 
> I lean towards +1 too, but
> 1) we should make sure we don't do that for installed headers with the
>    exception of headers meant for GCC plugins; in quick skimming I don't
>    see ginclude/ headers among the changed ones, but perhaps doing all
>    languages make install, then applying the patch, make and make install
>    again into another tree and compare all the headers in those tree
>    with the exception of paths with /plugin/include/ in it?

I can confirm that this patch only modifies headers that reside in
$prefix/lib/gcc/x86_64-pc-linux-gnu/13.0.1/plugin/include/
(with --enable-languages=c,c++,fortran,objc,obj-c++ --enable-jit make install)

> 2) we should make sure we don't introduce ODR violations through this, if
>    say 2 headers would define different static inline functions with the
>    same name (or even one static inline and another without that).
>    Don't know what would be best to catch that, get from the patch
>    list of changed functions and then search for it in readelf -wi output
>    using some script, or would LTO bootstrap detect that, or libabigail?
>    What I'm worried about is 2 different headers defining the same
>    function perhaps with different arguments/return values or content and
>    that we happen to never include the two headers in the same TU

Good point, I was able to scrape the functions modified by this patch
with the below shell script which outputs the name of each function that
has at least two overloads/definitions (possibly in different headers),
followed by the headers in which it's defined:

  # Note: $PWD is the gcc git repo with this patch as HEAD
  git show | grep "^ \w\+ *(" | awk '{ print $1 }' | sort | uniq -d \
  | (while read fn; do
       echo $fn
       git grep -c -w "^$fn" gcc/*.h gcc/*/*.h | cat
       echo
     done)

According to this, the only modified functions that have >=2 overloads
across >=2 files are:

 bmp_iter_next
  gcc/bitmap.h:1
  gcc/sbitmap.h:1

 bmp_iter_set
  gcc/bitmap.h:1
  gcc/sbitmap.h:1

 bmp_iter_set_init
  gcc/bitmap.h:1
  gcc/sbitmap.h:1

 gt_ggc_mx
  gcc/ggc.h:1
  gcc/hash-map.h:1
  gcc/hash-set.h:1
  gcc/hash-table.h:1
  gcc/machmode.h:1
  gcc/poly-int.h:1
  gcc/symbol-summary.h:6
  gcc/value-range.h:2
  gcc/vec.h:2
  gcc/wide-int.h:2

 gt_pch_nx
  gcc/ggc.h:1
  gcc/hash-map.h:2
  gcc/hash-set.h:2
  gcc/hash-table.h:2
  gcc/machmode.h:2
  gcc/poly-int.h:2
  gcc/symbol-summary.h:12
  gcc/value-range.h:4
  gcc/vec.h:3
  gcc/wide-int.h:4

I manually verified that none of these function definitions conflict
with each other.

> 3) we have also gcc/ada/gcc-interface/*.h with
> ada.h:#define INLINE static inline
> gigi.h:static inline unsigned HOST_WIDE_INT
> gigi.h:static inline bool
> gigi.h:static inline bool
> gigi.h:static inline bool
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
> gigi.h:static inline tree
>    I think we can defer that to Ada maintaners but we should tell them
>    about it
> 4) there are some static inline also in
>    gcc/config/*/*.h (and some in gcc/common/*/*.h - though in that case
>    it is solely in installed header that shouldn't be changed)
> avr/avr-protos.h:static inline unsigned
> pru/pru-protos.h:static inline bool
> rs6000/rs6000-internal.h:static inline bool
> rs6000/rs6000-protos.h:static inline bool
> s390/s390-builtins.h:static inline unsigned int
> s390/s390-builtins.h:static inline unsigned int
> s390/vecintrin.h:static inline int
>    The last one is an installed header, so I think we shouldn't touch
>    it, the rest should be considered.

Those look like suitable candidates, but I'm not able to reliably test
Ada and these targets at the moment so I've omitted them for now.

Here's a patch that passes bootstrap + regtest with
--enable-languages=c,c++,fortran,objc,obj-c++ --enable-jit

Bootstrapping with objc enabled revealed a minor manual changed was
needed in gcc/objc/objc-act.cc to avoid a redeclaration mismatch error.

-- >8 --

Subject: [PATCH] don't declare header-defined functions both static and inline

Many functions defined in our headers are declared 'static inline' which
is a C idiom that predates GCC's move to C++ as the implementation
language.  But in C++ the inline keyword is more than just a compiler
hint, and is sufficient to give the function the intended semantics.
In fact declaring a function both static and inline is a pessimization
since static effectively disables the desired definition merging
behavior enabled by inline, and is also a source of (harmless) ODR
violations when a static inline function gets called from a non-static
inline one (such as tree_operand_check calling tree_operand_length).

This patch mechanically fixes the vast majority of occurrences of this
anti-pattern throughout the compiler's headers via the command line

  echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'

The patch also manually removes the redundant declarations of is_ivar
and lookup_category in gcc/objc/objc-act.cc which would otherwise
conflict with those in objc-act.h (due to the difference in staticness).

Besides fixing some ODR violations, this speeds up stage1 cc1plus by
about 2% and reduces the size of its text segment by 1.5MB.

gcc/ChangeLog:

	* addresses.h: Mechanically drop 'static' from 'static inline'
	functions via s/^static inline/inline/g.
	* asan.h: Likewise.
	* attribs.h: Likewise.
	* basic-block.h: Likewise.
	* bitmap.h: Likewise.
	* cfghooks.h: Likewise.
	* cfgloop.h: Likewise.
	* cgraph.h: Likewise.
	* cselib.h: Likewise.
	* data-streamer.h: Likewise.
	* debug.h: Likewise.
	* df.h: Likewise.
	* diagnostic.h: Likewise.
	* dominance.h: Likewise.
	* dumpfile.h: Likewise.
	* emit-rtl.h: Likewise.
	* except.h: Likewise.
	* expmed.h: Likewise.
	* expr.h: Likewise.
	* fixed-value.h: Likewise.
	* gengtype.h: Likewise.
	* gimple-expr.h: Likewise.
	* gimple-iterator.h: Likewise.
	* gimple-predict.h: Likewise.
	* gimple-range-fold.h: Likewise.
	* gimple-ssa.h: Likewise.
	* gimple.h: Likewise.
	* graphite.h: Likewise.
	* hard-reg-set.h: Likewise.
	* hash-map.h: Likewise.
	* hash-set.h: Likewise.
	* hash-table.h: Likewise.
	* hwint.h: Likewise.
	* input.h: Likewise.
	* insn-addr.h: Likewise.
	* internal-fn.h: Likewise.
	* ipa-fnsummary.h: Likewise.
	* ipa-icf-gimple.h: Likewise.
	* ipa-inline.h: Likewise.
	* ipa-modref.h: Likewise.
	* ipa-prop.h: Likewise.
	* ira-int.h: Likewise.
	* ira.h: Likewise.
	* lra-int.h: Likewise.
	* lra.h: Likewise.
	* lto-streamer.h: Likewise.
	* memmodel.h: Likewise.
	* omp-general.h: Likewise.
	* optabs-query.h: Likewise.
	* optabs.h: Likewise.
	* plugin.h: Likewise.
	* pretty-print.h: Likewise.
	* range.h: Likewise.
	* read-md.h: Likewise.
	* recog.h: Likewise.
	* regs.h: Likewise.
	* rtl-iter.h: Likewise.
	* rtl.h: Likewise.
	* sbitmap.h: Likewise.
	* sched-int.h: Likewise.
	* sel-sched-ir.h: Likewise.
	* sese.h: Likewise.
	* sparseset.h: Likewise.
	* ssa-iterators.h: Likewise.
	* system.h: Likewise.
	* target-globals.h: Likewise.
	* target.h: Likewise.
	* timevar.h: Likewise.
	* tree-chrec.h: Likewise.
	* tree-data-ref.h: Likewise.
	* tree-iterator.h: Likewise.
	* tree-outof-ssa.h: Likewise.
	* tree-phinodes.h: Likewise.
	* tree-scalar-evolution.h: Likewise.
	* tree-sra.h: Likewise.
	* tree-ssa-alias.h: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-ssa-loop-manip.h: Likewise.
	* tree-ssa-loop.h: Likewise.
	* tree-ssa-operands.h: Likewise.
	* tree-ssa-propagate.h: Likewise.
	* tree-ssa-sccvn.h: Likewise.
	* tree-ssa.h: Likewise.
	* tree-ssanames.h: Likewise.
	* tree-streamer.h: Likewise.
	* tree-switch-conversion.h: Likewise.
	* tree-vectorizer.h: Likewise.
	* tree.h: Likewise.
	* wide-int.h: Likewise.

gcc/c-family/ChangeLog:

	* c-common.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/c/ChangeLog:

	* c-parser.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/cp/ChangeLog:

	* cp-tree.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/fortran/ChangeLog:

	* gfortran.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.

gcc/jit/ChangeLog:

	* jit-dejagnu.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.
	* jit-recording.h: Likewise.

gcc/objc/ChangeLog:

	* objc-act.h: Mechanically drop static from static inline
	functions via s/^static inline/inline/g.
	* objc-map.h: Likewise.
	* objc-act.cc: Remove the redundant redeclarations of is_ivar
	and lookup_category.
---
 gcc/addresses.h              |    6 +-
 gcc/asan.h                   |   14 +-
 gcc/attribs.h                |   16 +-
 gcc/basic-block.h            |   54 +-
 gcc/bitmap.h                 |   20 +-
 gcc/c-family/c-common.h      |    4 +-
 gcc/c/c-parser.h             |    6 +-
 gcc/cfghooks.h               |    2 +-
 gcc/cfgloop.h                |   36 +-
 gcc/cgraph.h                 |    6 +-
 gcc/cp/cp-tree.h             |    2 +-
 gcc/cselib.h                 |    4 +-
 gcc/data-streamer.h          |   30 +-
 gcc/debug.h                  |    2 +-
 gcc/df.h                     |   26 +-
 gcc/diagnostic.h             |   12 +-
 gcc/dominance.h              |    2 +-
 gcc/dumpfile.h               |   16 +-
 gcc/emit-rtl.h               |   14 +-
 gcc/except.h                 |    2 +-
 gcc/expmed.h                 |  102 ++--
 gcc/expr.h                   |   14 +-
 gcc/fixed-value.h            |    2 +-
 gcc/fortran/gfortran.h       |    4 +-
 gcc/gengtype.h               |   12 +-
 gcc/gimple-expr.h            |   18 +-
 gcc/gimple-iterator.h        |   48 +-
 gcc/gimple-predict.h         |   10 +-
 gcc/gimple-range-fold.h      |    6 +-
 gcc/gimple-ssa.h             |   14 +-
 gcc/gimple.h                 | 1026 +++++++++++++++++-----------------
 gcc/graphite.h               |   24 +-
 gcc/hard-reg-set.h           |   18 +-
 gcc/hash-map.h               |    8 +-
 gcc/hash-set.h               |    6 +-
 gcc/hash-table.h             |    6 +-
 gcc/hwint.h                  |   26 +-
 gcc/input.h                  |   12 +-
 gcc/insn-addr.h              |    2 +-
 gcc/internal-fn.h            |    6 +-
 gcc/ipa-fnsummary.h          |    2 +-
 gcc/ipa-icf-gimple.h         |    6 +-
 gcc/ipa-inline.h             |   10 +-
 gcc/ipa-modref.h             |    2 +-
 gcc/ipa-prop.h               |   70 +--
 gcc/ira-int.h                |   50 +-
 gcc/ira.h                    |    2 +-
 gcc/jit/jit-dejagnu.h        |   16 +-
 gcc/jit/jit-recording.h      |    2 +-
 gcc/lra-int.h                |   14 +-
 gcc/lra.h                    |    2 +-
 gcc/lto-streamer.h           |   54 +-
 gcc/memmodel.h               |   18 +-
 gcc/objc/objc-act.cc         |    2 -
 gcc/objc/objc-act.h          |    6 +-
 gcc/objc/objc-map.h          |   12 +-
 gcc/omp-general.h            |    2 +-
 gcc/optabs-query.h           |    8 +-
 gcc/optabs.h                 |   14 +-
 gcc/plugin.h                 |    2 +-
 gcc/pretty-print.h           |   10 +-
 gcc/range.h                  |    6 +-
 gcc/read-md.h                |    4 +-
 gcc/recog.h                  |    8 +-
 gcc/regs.h                   |   22 +-
 gcc/rtl-iter.h               |    2 +-
 gcc/rtl.h                    |   34 +-
 gcc/sbitmap.h                |   16 +-
 gcc/sched-int.h              |    8 +-
 gcc/sel-sched-ir.h           |   48 +-
 gcc/sese.h                   |   30 +-
 gcc/sparseset.h              |   22 +-
 gcc/ssa-iterators.h          |   86 +--
 gcc/system.h                 |    6 +-
 gcc/target-globals.h         |    2 +-
 gcc/target.h                 |    6 +-
 gcc/timevar.h                |    4 +-
 gcc/tree-chrec.h             |   22 +-
 gcc/tree-data-ref.h          |   24 +-
 gcc/tree-iterator.h          |   16 +-
 gcc/tree-outof-ssa.h         |    4 +-
 gcc/tree-phinodes.h          |    4 +-
 gcc/tree-scalar-evolution.h  |    6 +-
 gcc/tree-sra.h               |    2 +-
 gcc/tree-ssa-alias.h         |    2 +-
 gcc/tree-ssa-live.h          |   24 +-
 gcc/tree-ssa-loop-manip.h    |    2 +-
 gcc/tree-ssa-loop.h          |    2 +-
 gcc/tree-ssa-operands.h      |    4 +-
 gcc/tree-ssa-propagate.h     |    4 +-
 gcc/tree-ssa-sccvn.h         |   10 +-
 gcc/tree-ssa.h               |   12 +-
 gcc/tree-ssanames.h          |   10 +-
 gcc/tree-streamer.h          |    8 +-
 gcc/tree-switch-conversion.h |    2 +-
 gcc/tree-vectorizer.h        |   64 +--
 gcc/tree.h                   |   88 +--
 gcc/wide-int.h               |    2 +-
 98 files changed, 1278 insertions(+), 1280 deletions(-)

diff --git a/gcc/addresses.h b/gcc/addresses.h
index 05a2401730d..3519c241c6d 100644
--- a/gcc/addresses.h
+++ b/gcc/addresses.h
@@ -24,7 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_ADDRESSES_H
 #define GCC_ADDRESSES_H
 
-static inline enum reg_class
+inline enum reg_class
 base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
 		addr_space_t as ATTRIBUTE_UNUSED,
 		enum rtx_code outer_code ATTRIBUTE_UNUSED,
@@ -51,7 +51,7 @@ base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
    REGNO_OK_FOR_BASE_P.
    Arguments as for the REGNO_MODE_CODE_OK_FOR_BASE_P macro.  */
 
-static inline bool
+inline bool
 ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
 		 machine_mode mode ATTRIBUTE_UNUSED,
 		 addr_space_t as ATTRIBUTE_UNUSED,
@@ -77,7 +77,7 @@ ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
 /* Wrapper around ok_for_base_p_1, for use after register allocation is
    complete.  Arguments as for the called function.  */
 
-static inline bool
+inline bool
 regno_ok_for_base_p (unsigned regno, machine_mode mode, addr_space_t as,
 		     enum rtx_code outer_code, enum rtx_code index_code)
 {
diff --git a/gcc/asan.h b/gcc/asan.h
index b049c8903a6..7d26b413ac5 100644
--- a/gcc/asan.h
+++ b/gcc/asan.h
@@ -140,7 +140,7 @@ extern bool asan_mark_p (gimple *stmt, enum asan_mark_flags flag);
 /* Return the size of padding needed to insert after a protected
    decl of SIZE.  */
 
-static inline unsigned int
+inline unsigned int
 asan_red_zone_size (unsigned int size)
 {
   unsigned int c = size & (ASAN_RED_ZONE_SIZE - 1);
@@ -150,7 +150,7 @@ asan_red_zone_size (unsigned int size)
 /* Return how much a stack variable occupis on a stack
    including a space for red zone.  */
 
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 asan_var_and_redzone_size (unsigned HOST_WIDE_INT size)
 {
   if (size <= 4)
@@ -182,7 +182,7 @@ extern hash_set<tree> *asan_handled_variables;
 /* Return TRUE if builtin with given FCODE will be intercepted by
    libasan.  */
 
-static inline bool
+inline bool
 asan_intercepted_p (enum built_in_function fcode)
 {
   if (hwasan_sanitize_p ())
@@ -213,7 +213,7 @@ asan_intercepted_p (enum built_in_function fcode)
 
 /* Return TRUE if we should instrument for use-after-scope sanity checking.  */
 
-static inline bool
+inline bool
 asan_sanitize_use_after_scope (void)
 {
   return (flag_sanitize_address_use_after_scope
@@ -222,7 +222,7 @@ asan_sanitize_use_after_scope (void)
 
 /* Return true if DECL should be guarded on the stack.  */
 
-static inline bool
+inline bool
 asan_protect_stack_decl (tree decl)
 {
   return DECL_P (decl)
@@ -233,7 +233,7 @@ asan_protect_stack_decl (tree decl)
 /* Return true when flag_sanitize & FLAG is non-zero.  If FN is non-null,
    remove all flags mentioned in "no_sanitize" of DECL_ATTRIBUTES.  */
 
-static inline bool
+inline bool
 sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
 {
   unsigned int result_flags = flag_sanitize & flag;
@@ -252,7 +252,7 @@ sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
 
 /* Return true when coverage sanitization should happend for FN function.  */
 
-static inline bool
+inline bool
 sanitize_coverage_p (const_tree fn = current_function_decl)
 {
   return (flag_sanitize_coverage
diff --git a/gcc/attribs.h b/gcc/attribs.h
index 140e70b64e0..84a43658a70 100644
--- a/gcc/attribs.h
+++ b/gcc/attribs.h
@@ -148,7 +148,7 @@ canonicalize_attr_name (const char *&s, T &l)
 /* For a given IDENTIFIER_NODE, strip leading and trailing '_' characters
    so that we have a canonical form of attribute names.  */
 
-static inline tree
+inline tree
 canonicalize_attr_name (tree attr_name)
 {
   size_t l = IDENTIFIER_LENGTH (attr_name);
@@ -163,7 +163,7 @@ canonicalize_attr_name (tree attr_name)
 /* Compare attribute identifiers ATTR1 and ATTR2 with length ATTR1_LEN and
    ATTR2_LEN.  */
 
-static inline bool
+inline bool
 cmp_attribs (const char *attr1, size_t attr1_len,
 	     const char *attr2, size_t attr2_len)
 {
@@ -172,7 +172,7 @@ cmp_attribs (const char *attr1, size_t attr1_len,
 
 /* Compare attribute identifiers ATTR1 and ATTR2.  */
 
-static inline bool
+inline bool
 cmp_attribs (const char *attr1, const char *attr2)
 {
   return cmp_attribs (attr1, strlen (attr1), attr2, strlen (attr2));
@@ -181,7 +181,7 @@ cmp_attribs (const char *attr1, const char *attr2)
 /* Given an identifier node IDENT and a string ATTR_NAME, return true
    if the identifier node is a valid attribute name for the string.  */
 
-static inline bool
+inline bool
 is_attribute_p (const char *attr_name, const_tree ident)
 {
   return cmp_attribs (attr_name, strlen (attr_name),
@@ -193,7 +193,7 @@ is_attribute_p (const char *attr_name, const_tree ident)
    for standard attribute (NULL get_attribute_namespace) or "gnu"
    namespace.  */
 
-static inline bool
+inline bool
 is_attribute_namespace_p (const char *attr_ns, const_tree attr)
 {
   tree ident = get_attribute_namespace (attr);
@@ -212,7 +212,7 @@ is_attribute_namespace_p (const char *attr_ns, const_tree attr)
    occurrences are wanted.  ATTR_NAME must be in the form 'text' (not
    '__text__').  */
 
-static inline tree
+inline tree
 lookup_attribute (const char *attr_name, tree list)
 {
   if (CHECKING_P && attr_name[0] != '_')
@@ -236,7 +236,7 @@ lookup_attribute (const char *attr_name, tree list)
 /* Similar to lookup_attribute, but also match the attribute namespace.
    ATTR_NS "" stands for either standard attribute or "gnu" namespace.  */
 
-static inline tree
+inline tree
 lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
 {
   if (CHECKING_P && attr_name[0] != '_')
@@ -269,7 +269,7 @@ lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
    starts with ATTR_NAME.  ATTR_NAME must be in the form 'text' (not
    '__text__').  */
 
-static inline tree
+inline tree
 lookup_attribute_by_prefix (const char *attr_name, tree list)
 {
   gcc_checking_assert (attr_name[0] != '_');
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 7c06a7db45d..29191e56720 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -309,7 +309,7 @@ enum cfg_bb_flags
 
 /* Returns true if BB has precisely one successor.  */
 
-static inline bool
+inline bool
 single_succ_p (const_basic_block bb)
 {
   return EDGE_COUNT (bb->succs) == 1;
@@ -317,7 +317,7 @@ single_succ_p (const_basic_block bb)
 
 /* Returns true if BB has precisely one predecessor.  */
 
-static inline bool
+inline bool
 single_pred_p (const_basic_block bb)
 {
   return EDGE_COUNT (bb->preds) == 1;
@@ -326,7 +326,7 @@ single_pred_p (const_basic_block bb)
 /* Returns the single successor edge of basic block BB.  Aborts if
    BB does not have exactly one successor.  */
 
-static inline edge
+inline edge
 single_succ_edge (const_basic_block bb)
 {
   gcc_checking_assert (single_succ_p (bb));
@@ -336,7 +336,7 @@ single_succ_edge (const_basic_block bb)
 /* Returns the single predecessor edge of basic block BB.  Aborts
    if BB does not have exactly one predecessor.  */
 
-static inline edge
+inline edge
 single_pred_edge (const_basic_block bb)
 {
   gcc_checking_assert (single_pred_p (bb));
@@ -346,7 +346,7 @@ single_pred_edge (const_basic_block bb)
 /* Returns the single successor block of basic block BB.  Aborts
    if BB does not have exactly one successor.  */
 
-static inline basic_block
+inline basic_block
 single_succ (const_basic_block bb)
 {
   return single_succ_edge (bb)->dest;
@@ -355,7 +355,7 @@ single_succ (const_basic_block bb)
 /* Returns the single predecessor block of basic block BB.  Aborts
    if BB does not have exactly one predecessor.*/
 
-static inline basic_block
+inline basic_block
 single_pred (const_basic_block bb)
 {
   return single_pred_edge (bb)->src;
@@ -368,7 +368,7 @@ struct edge_iterator {
   vec<edge, va_gc> **container;
 };
 
-static inline vec<edge, va_gc> *
+inline vec<edge, va_gc> *
 ei_container (edge_iterator i)
 {
   gcc_checking_assert (i.container);
@@ -379,7 +379,7 @@ ei_container (edge_iterator i)
 #define ei_last(iter) ei_last_1 (&(iter))
 
 /* Return an iterator pointing to the start of an edge vector.  */
-static inline edge_iterator
+inline edge_iterator
 ei_start_1 (vec<edge, va_gc> **ev)
 {
   edge_iterator i;
@@ -392,7 +392,7 @@ ei_start_1 (vec<edge, va_gc> **ev)
 
 /* Return an iterator pointing to the last element of an edge
    vector.  */
-static inline edge_iterator
+inline edge_iterator
 ei_last_1 (vec<edge, va_gc> **ev)
 {
   edge_iterator i;
@@ -404,7 +404,7 @@ ei_last_1 (vec<edge, va_gc> **ev)
 }
 
 /* Is the iterator `i' at the end of the sequence?  */
-static inline bool
+inline bool
 ei_end_p (edge_iterator i)
 {
   return (i.index == EDGE_COUNT (ei_container (i)));
@@ -412,14 +412,14 @@ ei_end_p (edge_iterator i)
 
 /* Is the iterator `i' at one position before the end of the
    sequence?  */
-static inline bool
+inline bool
 ei_one_before_end_p (edge_iterator i)
 {
   return (i.index + 1 == EDGE_COUNT (ei_container (i)));
 }
 
 /* Advance the iterator to the next element.  */
-static inline void
+inline void
 ei_next (edge_iterator *i)
 {
   gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i)));
@@ -427,7 +427,7 @@ ei_next (edge_iterator *i)
 }
 
 /* Move the iterator to the previous element.  */
-static inline void
+inline void
 ei_prev (edge_iterator *i)
 {
   gcc_checking_assert (i->index > 0);
@@ -435,7 +435,7 @@ ei_prev (edge_iterator *i)
 }
 
 /* Return the edge pointed to by the iterator `i'.  */
-static inline edge
+inline edge
 ei_edge (edge_iterator i)
 {
   return EDGE_I (ei_container (i), i.index);
@@ -444,7 +444,7 @@ ei_edge (edge_iterator i)
 /* Return an edge pointed to by the iterator.  Do it safely so that
    NULL is returned when the iterator is pointing at the end of the
    sequence.  */
-static inline edge
+inline edge
 ei_safe_edge (edge_iterator i)
 {
   return !ei_end_p (i) ? ei_edge (i) : NULL;
@@ -454,7 +454,7 @@ ei_safe_edge (edge_iterator i)
    *Edge P is set to the next edge if we are to continue to iterate
    and NULL otherwise.  */
 
-static inline bool
+inline bool
 ei_cond (edge_iterator ei, edge *p)
 {
   if (!ei_end_p (ei))
@@ -505,14 +505,14 @@ ei_cond (edge_iterator ei, edge *p)
 
 /* Return true if BB is in a transaction.  */
 
-static inline bool
+inline bool
 bb_in_transaction (basic_block bb)
 {
   return bb->flags & BB_IN_TRANSACTION;
 }
 
 /* Return true when one of the predecessor edges of BB is marked with EDGE_EH.  */
-static inline bool
+inline bool
 bb_has_eh_pred (basic_block bb)
 {
   edge e;
@@ -527,7 +527,7 @@ bb_has_eh_pred (basic_block bb)
 }
 
 /* Return true when one of the predecessor edges of BB is marked with EDGE_ABNORMAL.  */
-static inline bool
+inline bool
 bb_has_abnormal_pred (basic_block bb)
 {
   edge e;
@@ -542,7 +542,7 @@ bb_has_abnormal_pred (basic_block bb)
 }
 
 /* Return the fallthru edge in EDGES if it exists, NULL otherwise.  */
-static inline edge
+inline edge
 find_fallthru_edge (vec<edge, va_gc> *edges)
 {
   edge e;
@@ -557,7 +557,7 @@ find_fallthru_edge (vec<edge, va_gc> *edges)
 
 /* Check tha probability is sane.  */
 
-static inline void
+inline void
 check_probability (int prob)
 {
   gcc_checking_assert (prob >= 0 && prob <= REG_BR_PROB_BASE);
@@ -566,7 +566,7 @@ check_probability (int prob)
 /* Given PROB1 and PROB2, return PROB1*PROB2/REG_BR_PROB_BASE. 
    Used to combine BB probabilities.  */
 
-static inline int
+inline int
 combine_probabilities (int prob1, int prob2)
 {
   check_probability (prob1);
@@ -578,7 +578,7 @@ combine_probabilities (int prob1, int prob2)
    interface when potentially scaling up, so that SCALE is not
    constrained to be < REG_BR_PROB_BASE.  */
 
-static inline gcov_type
+inline gcov_type
 apply_scale (gcov_type freq, gcov_type scale)
 {
   return RDIV (freq * scale, REG_BR_PROB_BASE);
@@ -586,7 +586,7 @@ apply_scale (gcov_type freq, gcov_type scale)
 
 /* Apply probability PROB on frequency or count FREQ.  */
 
-static inline gcov_type
+inline gcov_type
 apply_probability (gcov_type freq, int prob)
 {
   check_probability (prob);
@@ -595,7 +595,7 @@ apply_probability (gcov_type freq, int prob)
 
 /* Return inverse probability for PROB.  */
 
-static inline int
+inline int
 inverse_probability (int prob1)
 {
   check_probability (prob1);
@@ -604,7 +604,7 @@ inverse_probability (int prob1)
 
 /* Return true if BB has at least one abnormal outgoing edge.  */
 
-static inline bool
+inline bool
 has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
 {
   edge e;
@@ -620,7 +620,7 @@ has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
 /* Return true when one of the predecessor edges of BB is marked with
    EDGE_ABNORMAL_CALL or EDGE_EH.  */
 
-static inline bool
+inline bool
 has_abnormal_call_or_eh_pred_edge_p (basic_block bb)
 {
   edge e;
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index a439f933867..43337d2e9d9 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -461,7 +461,7 @@ extern void dump_bitmap_statistics (void);
 /* Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
    to allocate from, NULL for GC'd bitmap.  */
 
-static inline void
+inline void
 bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
 {
   head->first = head->current = NULL;
@@ -476,7 +476,7 @@ bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
 /* Release a bitmap (but not its head).  This is suitable for pairing with
    bitmap_initialize.  */
 
-static inline void
+inline void
 bitmap_release (bitmap head)
 {
   bitmap_clear (head);
@@ -532,7 +532,7 @@ struct bitmap_iterator
 /* Initialize a single bitmap iterator.  START_BIT is the first bit to
    iterate from.  */
 
-static inline void
+inline void
 bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
 		   unsigned start_bit, unsigned *bit_no)
 {
@@ -576,7 +576,7 @@ bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
 /* Initialize an iterator to iterate over the intersection of two
    bitmaps.  START_BIT is the bit to commence from.  */
 
-static inline void
+inline void
 bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
 		   unsigned start_bit, unsigned *bit_no)
 {
@@ -645,7 +645,7 @@ bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
 
 /* Initialize an iterator to iterate over the bits in MAP1 & ~MAP2.  */
 
-static inline void
+inline void
 bmp_iter_and_compl_init (bitmap_iterator *bi,
 			 const_bitmap map1, const_bitmap map2,
 			 unsigned start_bit, unsigned *bit_no)
@@ -696,7 +696,7 @@ bmp_iter_and_compl_init (bitmap_iterator *bi,
 /* Advance to the next bit in BI.  We don't advance to the next
    nonzero bit yet.  */
 
-static inline void
+inline void
 bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 {
   bi->bits >>= 1;
@@ -705,7 +705,7 @@ bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 
 /* Advance to first set bit in BI.  */
 
-static inline void
+inline void
 bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
 {
 #if (GCC_VERSION >= 3004)
@@ -728,7 +728,7 @@ bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
    already advanced past the just iterated bit.  Return true if there
    is a bit to iterate.  */
 
-static inline bool
+inline bool
 bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
 {
   /* If our current word is nonzero, it contains the bit we want.  */
@@ -774,7 +774,7 @@ bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
    bitmaps.  We will have already advanced past the just iterated bit.
    Return true if there is a bit to iterate.  */
 
-static inline bool
+inline bool
 bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
 {
   /* If our current word is nonzero, it contains the bit we want.  */
@@ -843,7 +843,7 @@ bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
    complemented bitmaps.  We will have already advanced past the just
    iterated bit.  */
 
-static inline bool
+inline bool
 bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
 {
   /* If our current word is nonzero, it contains the bit we want.  */
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 2dadb33476c..3cf7df691d1 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -923,7 +923,7 @@ extern tree shorten_binary_op (tree result_type, tree op0, tree op1, bool bitwis
    minimum or op1 is not -1, because e.g. (long long) INT_MIN / -1 is
    well defined INT_MAX + 1LL if long long is wider than int, but INT_MIN / -1
    is UB.  */
-static inline bool
+inline bool
 may_shorten_divmod (tree op0, tree op1)
 {
   tree type0 = TREE_TYPE (op0);
@@ -1327,7 +1327,7 @@ extern const struct c_omp_directive *c_omp_categorize_directive (const char *,
 								 const char *);
 
 /* Return next tree in the chain for chain_next walking of tree nodes.  */
-static inline tree
+inline tree
 c_tree_chain_next (tree t)
 {
   /* TREE_CHAIN of a type is TYPE_STUB_DECL, which is different
diff --git a/gcc/c/c-parser.h b/gcc/c/c-parser.h
index 56924c0d83e..545f0f4d9eb 100644
--- a/gcc/c/c-parser.h
+++ b/gcc/c/c-parser.h
@@ -161,7 +161,7 @@ extern bool old_style_parameter_scope (void);
 /* Return true if the next token from PARSER has the indicated
    TYPE.  */
 
-static inline bool
+inline bool
 c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
 {
   return c_parser_peek_token (parser)->type == type;
@@ -170,7 +170,7 @@ c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
 /* Return true if the next token from PARSER does not have the
    indicated TYPE.  */
 
-static inline bool
+inline bool
 c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
 {
   return !c_parser_next_token_is (parser, type);
@@ -179,7 +179,7 @@ c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
 /* Return true if the next token from PARSER is the indicated
    KEYWORD.  */
 
-static inline bool
+inline bool
 c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword)
 {
   return c_parser_peek_token (parser)->keyword == keyword;
diff --git a/gcc/cfghooks.h b/gcc/cfghooks.h
index aebd080cf8b..7c87712c8d7 100644
--- a/gcc/cfghooks.h
+++ b/gcc/cfghooks.h
@@ -206,7 +206,7 @@ extern void verify_flow_info (void);
 /* Check control flow invariants, if internal consistency checks are
    enabled.  */
 
-static inline void
+inline void
 checking_verify_flow_info (void)
 {
   /* TODO: Add a separate option for -fchecking=cfg.  */
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index e98ad06f9b5..e7ac2b5f3db 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -280,21 +280,21 @@ public:
 #define LOOP_C_FINITE		(1 << 1)
 
 /* Set C to the LOOP constraint.  */
-static inline void
+inline void
 loop_constraint_set (class loop *loop, unsigned c)
 {
   loop->constraints |= c;
 }
 
 /* Clear C from the LOOP constraint.  */
-static inline void
+inline void
 loop_constraint_clear (class loop *loop, unsigned c)
 {
   loop->constraints &= ~c;
 }
 
 /* Check if C is set in the LOOP constraint.  */
-static inline bool
+inline bool
 loop_constraint_set_p (class loop *loop, unsigned c)
 {
   return (loop->constraints & c) == c;
@@ -508,7 +508,7 @@ extern void iv_analysis_done (void);
 extern class niter_desc *get_simple_loop_desc (class loop *loop);
 extern void free_simple_loop_desc (class loop *loop);
 
-static inline class niter_desc *
+inline class niter_desc *
 simple_loop_desc (class loop *loop)
 {
   return loop->simple_loop_desc;
@@ -518,7 +518,7 @@ simple_loop_desc (class loop *loop)
 
 /* Returns the loop with index NUM from FNs loop tree.  */
 
-static inline class loop *
+inline class loop *
 get_loop (struct function *fn, unsigned num)
 {
   return (*loops_for_fn (fn)->larray)[num];
@@ -526,7 +526,7 @@ get_loop (struct function *fn, unsigned num)
 
 /* Returns the number of superloops of LOOP.  */
 
-static inline unsigned
+inline unsigned
 loop_depth (const class loop *loop)
 {
   return vec_safe_length (loop->superloops);
@@ -535,7 +535,7 @@ loop_depth (const class loop *loop)
 /* Returns the immediate superloop of LOOP, or NULL if LOOP is the outermost
    loop.  */
 
-static inline class loop *
+inline class loop *
 loop_outer (const class loop *loop)
 {
   unsigned n = vec_safe_length (loop->superloops);
@@ -548,7 +548,7 @@ loop_outer (const class loop *loop)
 
 /* Returns true if LOOP has at least one exit edge.  */
 
-static inline bool
+inline bool
 loop_has_exit_edges (const class loop *loop)
 {
   return loop->exits->next->e != NULL;
@@ -569,7 +569,7 @@ get_loops (struct function *fn)
 /* Returns the number of loops in FN (including the removed
    ones and the fake loop that forms the root of the loop tree).  */
 
-static inline unsigned
+inline unsigned
 number_of_loops (struct function *fn)
 {
   struct loops *loops = loops_for_fn (fn);
@@ -582,13 +582,13 @@ number_of_loops (struct function *fn)
 /* Returns true if state of the loops satisfies all properties
    described by FLAGS.  */
 
-static inline bool
+inline bool
 loops_state_satisfies_p (function *fn, unsigned flags)
 {
   return (loops_for_fn (fn)->state & flags) == flags;
 }
 
-static inline bool
+inline bool
 loops_state_satisfies_p (unsigned flags)
 {
   return loops_state_satisfies_p (cfun, flags);
@@ -596,13 +596,13 @@ loops_state_satisfies_p (unsigned flags)
 
 /* Sets FLAGS to the loops state.  */
 
-static inline void
+inline void
 loops_state_set (function *fn, unsigned flags)
 {
   loops_for_fn (fn)->state |= flags;
 }
 
-static inline void
+inline void
 loops_state_set (unsigned flags)
 {
   loops_state_set (cfun, flags);
@@ -610,13 +610,13 @@ loops_state_set (unsigned flags)
 
 /* Clears FLAGS from the loops state.  */
 
-static inline void
+inline void
 loops_state_clear (function *fn, unsigned flags)
 {
   loops_for_fn (fn)->state &= ~flags;
 }
 
-static inline void
+inline void
 loops_state_clear (unsigned flags)
 {
   if (!current_loops)
@@ -627,7 +627,7 @@ loops_state_clear (unsigned flags)
 /* Check loop structure invariants, if internal consistency checks are
    enabled.  */
 
-static inline void
+inline void
 checking_verify_loop_structure (void)
 {
   /* VERIFY_LOOP_STRUCTURE essentially asserts that no loops need fixups.
@@ -897,7 +897,7 @@ extern void move_loop_invariants (void);
 extern auto_vec<basic_block> get_loop_hot_path (const class loop *loop);
 
 /* Returns the outermost loop of the loop nest that contains LOOP.*/
-static inline class loop *
+inline class loop *
 loop_outermost (class loop *loop)
 {
   unsigned n = vec_safe_length (loop->superloops);
@@ -919,7 +919,7 @@ extern int bb_loop_depth (const_basic_block);
 
 /* Converts VAL to widest_int.  */
 
-static inline widest_int
+inline widest_int
 gcov_type_to_wide_int (gcov_type val)
 {
   HOST_WIDE_INT a[2];
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 5d3ced1b5d5..b5fc739f1b0 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -2650,7 +2650,7 @@ symtab_node::real_symbol_p (void)
 /* Return true if DECL should have entry in symbol table if used.
    Those are functions and static & external variables.  */
 
-static inline bool
+inline bool
 decl_in_symtab_p (const_tree decl)
 {
   return (TREE_CODE (decl) == FUNCTION_DECL
@@ -3323,7 +3323,7 @@ cgraph_edge::frequency ()
 
 
 /* Return true if the TM_CLONE bit is set for a given FNDECL.  */
-static inline bool
+inline bool
 decl_is_tm_clone (const_tree fndecl)
 {
   cgraph_node *n = cgraph_node::get (fndecl);
@@ -3539,7 +3539,7 @@ ipa_polymorphic_call_context::useless_p () const
    the name documents the intent.  We require that no GC can occur
    within the fprintf call.  */
 
-static inline const char *
+inline const char *
 xstrdup_for_dump (const char *transient_str)
 {
   return ggc_strdup (transient_str);
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 06bc64a6b8d..be8775ed0f8 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4238,7 +4238,7 @@ more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
 /* We have an expression tree T that represents a call, either CALL_EXPR
    or AGGR_INIT_EXPR.  Return a reference to the Nth argument.  */
 
-static inline tree&
+inline tree&
 get_nth_callarg (tree t, int n)
 {
   switch (TREE_CODE (t))
diff --git a/gcc/cselib.h b/gcc/cselib.h
index 12e54a43d21..e2fa8e8c2c1 100644
--- a/gcc/cselib.h
+++ b/gcc/cselib.h
@@ -113,7 +113,7 @@ extern void dump_cselib_table (FILE *);
 /* Return the canonical value for VAL, following the equivalence chain
    towards the earliest (== lowest uid) equivalent value.  */
 
-static inline cselib_val *
+inline cselib_val *
 canonical_cselib_val (cselib_val *val)
 {
   cselib_val *canon;
@@ -131,7 +131,7 @@ canonical_cselib_val (cselib_val *val)
 /* Return nonzero if we can prove that X and Y contain the same value, taking
    our gathered information into account.  */
 
-static inline int
+inline int
 rtx_equal_for_cselib_p (rtx x, rtx y)
 {
   if (x == y)
diff --git a/gcc/data-streamer.h b/gcc/data-streamer.h
index c91c5ab75e8..d8c7e21dad9 100644
--- a/gcc/data-streamer.h
+++ b/gcc/data-streamer.h
@@ -91,7 +91,7 @@ wide_int streamer_read_wide_int (class lto_input_block *);
 widest_int streamer_read_widest_int (class lto_input_block *);
 
 /* Returns a new bit-packing context for bit-packing into S.  */
-static inline struct bitpack_d
+inline struct bitpack_d
 bitpack_create (struct lto_output_stream *s)
 {
   struct bitpack_d bp;
@@ -102,7 +102,7 @@ bitpack_create (struct lto_output_stream *s)
 }
 
 /* Pack the NBITS bit sized value VAL into the bit-packing context BP.  */
-static inline void
+inline void
 bp_pack_value (struct bitpack_d *bp, bitpack_word_t val, unsigned nbits)
 {
   bitpack_word_t word = bp->word;
@@ -132,7 +132,7 @@ bp_pack_value (struct bitpack_d *bp, bitpack_word_t val, unsigned nbits)
 
 /* Pack VAL into the bit-packing context BP, using NBITS for each
    coefficient.  */
-static inline void
+inline void
 bp_pack_poly_value (struct bitpack_d *bp,
 		    const poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t> &val,
 		    unsigned nbits)
@@ -142,7 +142,7 @@ bp_pack_poly_value (struct bitpack_d *bp,
 }
 
 /* Finishes bit-packing of BP.  */
-static inline void
+inline void
 streamer_write_bitpack (struct bitpack_d *bp)
 {
   streamer_write_uhwi_stream ((struct lto_output_stream *) bp->stream,
@@ -152,7 +152,7 @@ streamer_write_bitpack (struct bitpack_d *bp)
 }
 
 /* Returns a new bit-packing context for bit-unpacking from IB.  */
-static inline struct bitpack_d
+inline struct bitpack_d
 streamer_read_bitpack (class lto_input_block *ib)
 {
   struct bitpack_d bp;
@@ -163,7 +163,7 @@ streamer_read_bitpack (class lto_input_block *ib)
 }
 
 /* Unpacks NBITS bits from the bit-packing context BP and returns them.  */
-static inline bitpack_word_t
+inline bitpack_word_t
 bp_unpack_value (struct bitpack_d *bp, unsigned nbits)
 {
   bitpack_word_t mask, val;
@@ -191,7 +191,7 @@ bp_unpack_value (struct bitpack_d *bp, unsigned nbits)
 
 /* Unpacks a polynomial value from the bit-packing context BP in which each
    coefficient has NBITS bits.  */
-static inline poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t>
+inline poly_int<NUM_POLY_INT_COEFFS, bitpack_word_t>
 bp_unpack_poly_value (struct bitpack_d *bp, unsigned nbits)
 {
   poly_int_pod<NUM_POLY_INT_COEFFS, bitpack_word_t> x;
@@ -203,7 +203,7 @@ bp_unpack_poly_value (struct bitpack_d *bp, unsigned nbits)
 
 /* Write a character to the output block.  */
 
-static inline void
+inline void
 streamer_write_char_stream (struct lto_output_stream *obs, char c)
 {
   /* No space left.  */
@@ -221,7 +221,7 @@ streamer_write_char_stream (struct lto_output_stream *obs, char c)
 
 /* Read byte from the input block.  */
 
-static inline unsigned char
+inline unsigned char
 streamer_read_uchar (class lto_input_block *ib)
 {
   if (ib->p >= ib->len)
@@ -233,7 +233,7 @@ streamer_read_uchar (class lto_input_block *ib)
    to be compile time constant.
    Be host independent, limit range to 31bits.  */
 
-static inline void
+inline void
 streamer_write_hwi_in_range (struct lto_output_stream *obs,
 				  HOST_WIDE_INT min,
 				  HOST_WIDE_INT max,
@@ -251,7 +251,7 @@ streamer_write_hwi_in_range (struct lto_output_stream *obs,
 /* Input VAL into OBS and verify it is in range MIN...MAX that is supposed
    to be compile time constant.  PURPOSE is used for error reporting.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 streamer_read_hwi_in_range (class lto_input_block *ib,
 				 const char *purpose,
 				 HOST_WIDE_INT min,
@@ -272,7 +272,7 @@ streamer_read_hwi_in_range (class lto_input_block *ib,
    to be compile time constant.
    Be host independent, limit range to 31bits.  */
 
-static inline void
+inline void
 bp_pack_int_in_range (struct bitpack_d *bp,
 		      HOST_WIDE_INT min,
 		      HOST_WIDE_INT max,
@@ -291,7 +291,7 @@ bp_pack_int_in_range (struct bitpack_d *bp,
 /* Input VAL into BP and verify it is in range MIN...MAX that is supposed
    to be compile time constant.  PURPOSE is used for error reporting.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 bp_unpack_int_in_range (struct bitpack_d *bp,
 		        const char *purpose,
 		        HOST_WIDE_INT min,
@@ -332,7 +332,7 @@ bp_unpack_int_in_range (struct bitpack_d *bp,
 
 /* Output the start of a record with TAG to output block OB.  */
 
-static inline void
+inline void
 streamer_write_record_start (struct output_block *ob, enum LTO_tags tag)
 {
   streamer_write_enum (ob->main_stream, LTO_tags, LTO_NUM_TAGS, tag);
@@ -340,7 +340,7 @@ streamer_write_record_start (struct output_block *ob, enum LTO_tags tag)
 
 /* Return the next tag in the input block IB.  */
 
-static inline enum LTO_tags
+inline enum LTO_tags
 streamer_read_record_start (class lto_input_block *ib)
 {
   return streamer_read_enum (ib, LTO_tags, LTO_NUM_TAGS);
diff --git a/gcc/debug.h b/gcc/debug.h
index 799d5e316a2..05512bce48c 100644
--- a/gcc/debug.h
+++ b/gcc/debug.h
@@ -270,7 +270,7 @@ extern decl_to_instance_map_t *decl_to_instance_map;
 /* Allocate decl_to_instance_map with COUNT slots to begin wtih, if it
  * hasn't been allocated yet.  */
 
-static inline decl_to_instance_map_t *
+inline decl_to_instance_map_t *
 maybe_create_decl_to_instance_map (int count = 13)
 {
   if (!decl_to_instance_map)
diff --git a/gcc/df.h b/gcc/df.h
index b2d1300f6d4..aec2223591a 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -1097,7 +1097,7 @@ extern void df_scan_verify (void);
    Public functions access functions for the dataflow problems.
 ----------------------------------------------------------------------------*/
 
-static inline struct df_scan_bb_info *
+inline struct df_scan_bb_info *
 df_scan_get_bb_info (unsigned int index)
 {
   if (index < df_scan->block_info_size)
@@ -1106,7 +1106,7 @@ df_scan_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_rd_bb_info *
+inline class df_rd_bb_info *
 df_rd_get_bb_info (unsigned int index)
 {
   if (index < df_rd->block_info_size)
@@ -1115,7 +1115,7 @@ df_rd_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_lr_bb_info *
+inline class df_lr_bb_info *
 df_lr_get_bb_info (unsigned int index)
 {
   if (index < df_lr->block_info_size)
@@ -1124,7 +1124,7 @@ df_lr_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_md_bb_info *
+inline class df_md_bb_info *
 df_md_get_bb_info (unsigned int index)
 {
   if (index < df_md->block_info_size)
@@ -1133,7 +1133,7 @@ df_md_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_live_bb_info *
+inline class df_live_bb_info *
 df_live_get_bb_info (unsigned int index)
 {
   if (index < df_live->block_info_size)
@@ -1142,7 +1142,7 @@ df_live_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_word_lr_bb_info *
+inline class df_word_lr_bb_info *
 df_word_lr_get_bb_info (unsigned int index)
 {
   if (index < df_word_lr->block_info_size)
@@ -1151,7 +1151,7 @@ df_word_lr_get_bb_info (unsigned int index)
     return NULL;
 }
 
-static inline class df_mir_bb_info *
+inline class df_mir_bb_info *
 df_mir_get_bb_info (unsigned int index)
 {
   if (index < df_mir->block_info_size)
@@ -1165,7 +1165,7 @@ df_mir_get_bb_info (unsigned int index)
    choose different dataflow problems depending on the optimization
    level.  */
 
-static inline bitmap
+inline bitmap
 df_get_live_out (basic_block bb)
 {
   gcc_checking_assert (df_lr);
@@ -1181,7 +1181,7 @@ df_get_live_out (basic_block bb)
    choose different dataflow problems depending on the optimization
    level.  */
 
-static inline bitmap
+inline bitmap
 df_get_live_in (basic_block bb)
 {
   gcc_checking_assert (df_lr);
@@ -1195,7 +1195,7 @@ df_get_live_in (basic_block bb)
 /* Get basic block info.  */
 /* Get the artificial defs for a basic block.  */
 
-static inline df_ref
+inline df_ref
 df_get_artificial_defs (unsigned int bb_index)
 {
   return df_scan_get_bb_info (bb_index)->artificial_defs;
@@ -1204,7 +1204,7 @@ df_get_artificial_defs (unsigned int bb_index)
 
 /* Get the artificial uses for a basic block.  */
 
-static inline df_ref
+inline df_ref
 df_get_artificial_uses (unsigned int bb_index)
 {
   return df_scan_get_bb_info (bb_index)->artificial_uses;
@@ -1213,7 +1213,7 @@ df_get_artificial_uses (unsigned int bb_index)
 /* If INSN defines exactly one register, return the associated reference,
    otherwise return null.  */
 
-static inline df_ref
+inline df_ref
 df_single_def (const df_insn_info *info)
 {
   df_ref defs = DF_INSN_INFO_DEFS (info);
@@ -1223,7 +1223,7 @@ df_single_def (const df_insn_info *info)
 /* If INSN uses exactly one register, return the associated reference,
    otherwise return null.  */
 
-static inline df_ref
+inline df_ref
 df_single_use (const df_insn_info *info)
 {
   df_ref uses = DF_INSN_INFO_USES (info);
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index e20f6edfc81..e7390e49554 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -416,7 +416,7 @@ struct diagnostic_context
   diagnostic_client_data_hooks *m_client_data_hooks;
 };
 
-static inline void
+inline void
 diagnostic_inhibit_notes (diagnostic_context * context)
 {
   context->inhibit_notes_p = true;
@@ -474,7 +474,7 @@ extern diagnostic_context *global_dc;
 /* Override the option index to be used for reporting a
    diagnostic.  */
 
-static inline void
+inline void
 diagnostic_override_option_index (diagnostic_info *info, int optidx)
 {
   info->option_index = optidx;
@@ -546,7 +546,7 @@ int get_terminal_width (void);
 /* Return the location associated to this diagnostic. Parameter WHICH
    specifies which location. By default, expand the first one.  */
 
-static inline location_t
+inline location_t
 diagnostic_location (const diagnostic_info * diagnostic, int which = 0)
 {
   return diagnostic->message.get_location (which);
@@ -554,7 +554,7 @@ diagnostic_location (const diagnostic_info * diagnostic, int which = 0)
 
 /* Return the number of locations to be printed in DIAGNOSTIC.  */
 
-static inline unsigned int
+inline unsigned int
 diagnostic_num_locations (const diagnostic_info * diagnostic)
 {
   return diagnostic->message.m_richloc->get_num_locations ();
@@ -564,7 +564,7 @@ diagnostic_num_locations (const diagnostic_info * diagnostic)
    consistency.  Parameter WHICH specifies which location. By default,
    expand the first one.  */
 
-static inline expanded_location
+inline expanded_location
 diagnostic_expand_location (const diagnostic_info * diagnostic, int which = 0)
 {
   return diagnostic->richloc->get_expanded_location (which);
@@ -579,7 +579,7 @@ const int CARET_LINE_MARGIN = 10;
    caret line.  This is used to build a prefix and also to determine
    whether to print one or two caret lines.  */
 
-static inline bool
+inline bool
 diagnostic_same_line (const diagnostic_context *context,
 		       expanded_location s1, expanded_location s2)
 {
diff --git a/gcc/dominance.h b/gcc/dominance.h
index 3c5a345f478..ddac0f58050 100644
--- a/gcc/dominance.h
+++ b/gcc/dominance.h
@@ -69,7 +69,7 @@ extern void verify_dominators (enum cdi_direction);
 /* Verify invariants of computed dominance information, if internal consistency
    checks are enabled.  */
 
-static inline void
+inline void
 checking_verify_dominators (cdi_direction dir)
 {
   if (flag_checking)
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index 5b97c5ca8b5..7d5eca899dc 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -208,27 +208,27 @@ enum dump_flag : uint32_t
 
 typedef enum dump_flag dump_flags_t;
 
-static inline dump_flags_t
+inline dump_flags_t
 operator| (dump_flags_t lhs, dump_flags_t rhs)
 {
   return (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
 			| (std::underlying_type<dump_flags_t>::type)rhs);
 }
 
-static inline dump_flags_t
+inline dump_flags_t
 operator& (dump_flags_t lhs, dump_flags_t rhs)
 {
   return (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
 			& (std::underlying_type<dump_flags_t>::type)rhs);
 }
 
-static inline dump_flags_t
+inline dump_flags_t
 operator~ (dump_flags_t flags)
 {
   return (dump_flags_t)~((std::underlying_type<dump_flags_t>::type)flags);
 }
 
-static inline dump_flags_t &
+inline dump_flags_t &
 operator|= (dump_flags_t &lhs, dump_flags_t rhs)
 {
   lhs = (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
@@ -236,7 +236,7 @@ operator|= (dump_flags_t &lhs, dump_flags_t rhs)
   return lhs;
 }
 
-static inline dump_flags_t &
+inline dump_flags_t &
 operator&= (dump_flags_t &lhs, dump_flags_t rhs)
 {
   lhs = (dump_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
@@ -276,14 +276,14 @@ enum optgroup_flag
 
 typedef enum optgroup_flag optgroup_flags_t;
 
-static inline optgroup_flags_t
+inline optgroup_flags_t
 operator| (optgroup_flags_t lhs, optgroup_flags_t rhs)
 {
   return (optgroup_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
 			    | (std::underlying_type<dump_flags_t>::type)rhs);
 }
 
-static inline optgroup_flags_t &
+inline optgroup_flags_t &
 operator|= (optgroup_flags_t &lhs, optgroup_flags_t rhs)
 {
   lhs = (optgroup_flags_t)((std::underlying_type<dump_flags_t>::type)lhs
@@ -528,7 +528,7 @@ extern bool dumps_are_enabled;
 extern void set_dump_file (FILE *new_dump_file);
 
 /* Return true if any of the dumps is enabled, false otherwise. */
-static inline bool
+inline bool
 dump_enabled_p (void)
 {
   return dumps_are_enabled;
diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
index 483e0bb96ee..c472c736cb6 100644
--- a/gcc/emit-rtl.h
+++ b/gcc/emit-rtl.h
@@ -400,7 +400,7 @@ extern bool need_atomic_barrier_p (enum memmodel, bool);
 
 /* Return the current sequence.  */
 
-static inline struct sequence_stack *
+inline struct sequence_stack *
 get_current_sequence (void)
 {
   return &crtl->emit.seq;
@@ -408,7 +408,7 @@ get_current_sequence (void)
 
 /* Return the outermost sequence.  */
 
-static inline struct sequence_stack *
+inline struct sequence_stack *
 get_topmost_sequence (void)
 {
   struct sequence_stack *seq, *top;
@@ -424,7 +424,7 @@ get_topmost_sequence (void)
 
 /* Return the first insn of the current sequence or current function.  */
 
-static inline rtx_insn *
+inline rtx_insn *
 get_insns (void)
 {
   return get_current_sequence ()->first;
@@ -432,7 +432,7 @@ get_insns (void)
 
 /* Specify a new insn as the first in the chain.  */
 
-static inline void
+inline void
 set_first_insn (rtx_insn *insn)
 {
   gcc_checking_assert (!insn || !PREV_INSN (insn));
@@ -441,7 +441,7 @@ set_first_insn (rtx_insn *insn)
 
 /* Return the last insn emitted in current sequence or current function.  */
 
-static inline rtx_insn *
+inline rtx_insn *
 get_last_insn (void)
 {
   return get_current_sequence ()->last;
@@ -449,7 +449,7 @@ get_last_insn (void)
 
 /* Specify a new insn as the last in the chain.  */
 
-static inline void
+inline void
 set_last_insn (rtx_insn *insn)
 {
   gcc_checking_assert (!insn || !NEXT_INSN (insn));
@@ -458,7 +458,7 @@ set_last_insn (rtx_insn *insn)
 
 /* Return a number larger than any instruction's uid in this function.  */
 
-static inline int
+inline int
 get_max_uid (void)
 {
   return crtl->emit.x_cur_insn_uid;
diff --git a/gcc/except.h b/gcc/except.h
index 2b5c9feb705..5ecdbc0d1dc 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -302,7 +302,7 @@ function_needs_eh_personality (struct function *);
 
 /* Pre-order iteration within the eh_region tree.  */
 
-static inline eh_region
+inline eh_region
 ehr_next (eh_region r, eh_region start)
 {
   if (r->inner)
diff --git a/gcc/expmed.h b/gcc/expmed.h
index 0419e2dac85..c1aee00c616 100644
--- a/gcc/expmed.h
+++ b/gcc/expmed.h
@@ -191,7 +191,7 @@ extern struct target_expmed *this_target_expmed;
 
 /* Return a pointer to the alg_hash_entry at IDX.  */
 
-static inline struct alg_hash_entry *
+inline struct alg_hash_entry *
 alg_hash_entry_ptr (int idx)
 {
   return &this_target_expmed->x_alg_hash[idx];
@@ -199,7 +199,7 @@ alg_hash_entry_ptr (int idx)
 
 /* Return true if the x_alg_hash field might have been used.  */
 
-static inline bool
+inline bool
 alg_hash_used_p (void)
 {
   return this_target_expmed->x_alg_hash_used_p;
@@ -207,7 +207,7 @@ alg_hash_used_p (void)
 
 /* Set whether the x_alg_hash field might have been used.  */
 
-static inline void
+inline void
 set_alg_hash_used_p (bool usedp)
 {
   this_target_expmed->x_alg_hash_used_p = usedp;
@@ -215,7 +215,7 @@ set_alg_hash_used_p (bool usedp)
 
 /* Compute an index into the cost arrays by mode class.  */
 
-static inline int
+inline int
 expmed_mode_index (machine_mode mode)
 {
   switch (GET_MODE_CLASS (mode))
@@ -244,7 +244,7 @@ expmed_mode_index (machine_mode mode)
    a particular operation performed in MODE is cheap when optimizing
    for SPEED.  */
 
-static inline bool *
+inline bool *
 expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
 		     machine_mode mode)
 {
@@ -255,7 +255,7 @@ expmed_op_cheap_ptr (struct expmed_op_cheap *eoc, bool speed,
 /* Return a pointer to a cost contained in COSTS when a particular
    operation is performed in MODE when optimizing for SPEED.  */
 
-static inline int *
+inline int *
 expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
 		    machine_mode mode)
 {
@@ -265,7 +265,7 @@ expmed_op_cost_ptr (struct expmed_op_costs *costs, bool speed,
 
 /* Subroutine of {set_,}sdiv_pow2_cheap.  Not to be used otherwise.  */
 
-static inline bool *
+inline bool *
 sdiv_pow2_cheap_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cheap_ptr (&this_target_expmed->x_sdiv_pow2_cheap,
@@ -275,7 +275,7 @@ sdiv_pow2_cheap_ptr (bool speed, machine_mode mode)
 /* Set whether a signed division by a power of 2 is cheap in MODE
    when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_sdiv_pow2_cheap (bool speed, machine_mode mode, bool cheap_p)
 {
   *sdiv_pow2_cheap_ptr (speed, mode) = cheap_p;
@@ -284,7 +284,7 @@ set_sdiv_pow2_cheap (bool speed, machine_mode mode, bool cheap_p)
 /* Return whether a signed division by a power of 2 is cheap in MODE
    when optimizing for SPEED.  */
 
-static inline bool
+inline bool
 sdiv_pow2_cheap (bool speed, machine_mode mode)
 {
   return *sdiv_pow2_cheap_ptr (speed, mode);
@@ -292,7 +292,7 @@ sdiv_pow2_cheap (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}smod_pow2_cheap.  Not to be used otherwise.  */
 
-static inline bool *
+inline bool *
 smod_pow2_cheap_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cheap_ptr (&this_target_expmed->x_smod_pow2_cheap,
@@ -302,7 +302,7 @@ smod_pow2_cheap_ptr (bool speed, machine_mode mode)
 /* Set whether a signed modulo by a power of 2 is CHEAP in MODE when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_smod_pow2_cheap (bool speed, machine_mode mode, bool cheap)
 {
   *smod_pow2_cheap_ptr (speed, mode) = cheap;
@@ -311,7 +311,7 @@ set_smod_pow2_cheap (bool speed, machine_mode mode, bool cheap)
 /* Return whether a signed modulo by a power of 2 is cheap in MODE
    when optimizing for SPEED.  */
 
-static inline bool
+inline bool
 smod_pow2_cheap (bool speed, machine_mode mode)
 {
   return *smod_pow2_cheap_ptr (speed, mode);
@@ -319,7 +319,7 @@ smod_pow2_cheap (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}zero_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 zero_cost_ptr (bool speed)
 {
   return &this_target_expmed->x_zero_cost[speed];
@@ -327,7 +327,7 @@ zero_cost_ptr (bool speed)
 
 /* Set the COST of loading zero when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_zero_cost (bool speed, int cost)
 {
   *zero_cost_ptr (speed) = cost;
@@ -335,7 +335,7 @@ set_zero_cost (bool speed, int cost)
 
 /* Return the COST of loading zero when optimizing for SPEED.  */
 
-static inline int
+inline int
 zero_cost (bool speed)
 {
   return *zero_cost_ptr (speed);
@@ -343,7 +343,7 @@ zero_cost (bool speed)
 
 /* Subroutine of {set_,}add_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 add_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_add_cost, speed, mode);
@@ -351,7 +351,7 @@ add_cost_ptr (bool speed, machine_mode mode)
 
 /* Set the COST of computing an add in MODE when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_add_cost (bool speed, machine_mode mode, int cost)
 {
   *add_cost_ptr (speed, mode) = cost;
@@ -359,7 +359,7 @@ set_add_cost (bool speed, machine_mode mode, int cost)
 
 /* Return the cost of computing an add in MODE when optimizing for SPEED.  */
 
-static inline int
+inline int
 add_cost (bool speed, machine_mode mode)
 {
   return *add_cost_ptr (speed, mode);
@@ -367,7 +367,7 @@ add_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}neg_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 neg_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_neg_cost, speed, mode);
@@ -375,7 +375,7 @@ neg_cost_ptr (bool speed, machine_mode mode)
 
 /* Set the COST of computing a negation in MODE when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_neg_cost (bool speed, machine_mode mode, int cost)
 {
   *neg_cost_ptr (speed, mode) = cost;
@@ -384,7 +384,7 @@ set_neg_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of computing a negation in MODE when optimizing for
    SPEED.  */
 
-static inline int
+inline int
 neg_cost (bool speed, machine_mode mode)
 {
   return *neg_cost_ptr (speed, mode);
@@ -392,7 +392,7 @@ neg_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}shift_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shift_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shift_cost[bits],
@@ -401,7 +401,7 @@ shift_cost_ptr (bool speed, machine_mode mode, int bits)
 
 /* Set the COST of doing a shift in MODE by BITS when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shift_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shift_cost_ptr (speed, mode, bits) = cost;
@@ -410,7 +410,7 @@ set_shift_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of doing a shift in MODE by BITS when optimizing for
    SPEED.  */
 
-static inline int
+inline int
 shift_cost (bool speed, machine_mode mode, int bits)
 {
   return *shift_cost_ptr (speed, mode, bits);
@@ -418,7 +418,7 @@ shift_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}shiftadd_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shiftadd_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shiftadd_cost[bits],
@@ -428,7 +428,7 @@ shiftadd_cost_ptr (bool speed, machine_mode mode, int bits)
 /* Set the COST of doing a shift in MODE by BITS followed by an add when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shiftadd_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shiftadd_cost_ptr (speed, mode, bits) = cost;
@@ -437,7 +437,7 @@ set_shiftadd_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of doing a shift in MODE by BITS followed by an add
    when optimizing for SPEED.  */
 
-static inline int
+inline int
 shiftadd_cost (bool speed, machine_mode mode, int bits)
 {
   return *shiftadd_cost_ptr (speed, mode, bits);
@@ -445,7 +445,7 @@ shiftadd_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}shiftsub0_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shiftsub0_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub0_cost[bits],
@@ -455,7 +455,7 @@ shiftsub0_cost_ptr (bool speed, machine_mode mode, int bits)
 /* Set the COST of doing a shift in MODE by BITS and then subtracting a
    value when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shiftsub0_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shiftsub0_cost_ptr (speed, mode, bits) = cost;
@@ -464,7 +464,7 @@ set_shiftsub0_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of doing a shift in MODE by BITS and then subtracting
    a value when optimizing for SPEED.  */
 
-static inline int
+inline int
 shiftsub0_cost (bool speed, machine_mode mode, int bits)
 {
   return *shiftsub0_cost_ptr (speed, mode, bits);
@@ -472,7 +472,7 @@ shiftsub0_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}shiftsub1_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 shiftsub1_cost_ptr (bool speed, machine_mode mode, int bits)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_shiftsub1_cost[bits],
@@ -482,7 +482,7 @@ shiftsub1_cost_ptr (bool speed, machine_mode mode, int bits)
 /* Set the COST of subtracting a shift in MODE by BITS from a value when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_shiftsub1_cost (bool speed, machine_mode mode, int bits, int cost)
 {
   *shiftsub1_cost_ptr (speed, mode, bits) = cost;
@@ -491,7 +491,7 @@ set_shiftsub1_cost (bool speed, machine_mode mode, int bits, int cost)
 /* Return the cost of subtracting a shift in MODE by BITS from a value
    when optimizing for SPEED.  */
 
-static inline int
+inline int
 shiftsub1_cost (bool speed, machine_mode mode, int bits)
 {
   return *shiftsub1_cost_ptr (speed, mode, bits);
@@ -499,7 +499,7 @@ shiftsub1_cost (bool speed, machine_mode mode, int bits)
 
 /* Subroutine of {set_,}mul_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 mul_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_mul_cost, speed, mode);
@@ -508,7 +508,7 @@ mul_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST of doing a multiplication in MODE when optimizing for
    SPEED.  */
 
-static inline void
+inline void
 set_mul_cost (bool speed, machine_mode mode, int cost)
 {
   *mul_cost_ptr (speed, mode) = cost;
@@ -517,7 +517,7 @@ set_mul_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of doing a multiplication in MODE when optimizing
    for SPEED.  */
 
-static inline int
+inline int
 mul_cost (bool speed, machine_mode mode)
 {
   return *mul_cost_ptr (speed, mode);
@@ -525,7 +525,7 @@ mul_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}sdiv_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 sdiv_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_sdiv_cost, speed, mode);
@@ -534,7 +534,7 @@ sdiv_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST of doing a signed division in MODE when optimizing
    for SPEED.  */
 
-static inline void
+inline void
 set_sdiv_cost (bool speed, machine_mode mode, int cost)
 {
   *sdiv_cost_ptr (speed, mode) = cost;
@@ -543,7 +543,7 @@ set_sdiv_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of doing a signed division in MODE when optimizing
    for SPEED.  */
 
-static inline int
+inline int
 sdiv_cost (bool speed, machine_mode mode)
 {
   return *sdiv_cost_ptr (speed, mode);
@@ -551,7 +551,7 @@ sdiv_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}udiv_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 udiv_cost_ptr (bool speed, machine_mode mode)
 {
   return expmed_op_cost_ptr (&this_target_expmed->x_udiv_cost, speed, mode);
@@ -560,7 +560,7 @@ udiv_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST of doing an unsigned division in MODE when optimizing
    for SPEED.  */
 
-static inline void
+inline void
 set_udiv_cost (bool speed, machine_mode mode, int cost)
 {
   *udiv_cost_ptr (speed, mode) = cost;
@@ -569,7 +569,7 @@ set_udiv_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost of doing an unsigned division in MODE when
    optimizing for SPEED.  */
 
-static inline int
+inline int
 udiv_cost (bool speed, machine_mode mode)
 {
   return *udiv_cost_ptr (speed, mode);
@@ -577,7 +577,7 @@ udiv_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}mul_widen_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 mul_widen_cost_ptr (bool speed, machine_mode mode)
 {
   gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
@@ -588,7 +588,7 @@ mul_widen_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST for computing a widening multiplication in MODE when
    optimizing for SPEED.  */
 
-static inline void
+inline void
 set_mul_widen_cost (bool speed, machine_mode mode, int cost)
 {
   *mul_widen_cost_ptr (speed, mode) = cost;
@@ -597,7 +597,7 @@ set_mul_widen_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost for computing a widening multiplication in MODE when
    optimizing for SPEED.  */
 
-static inline int
+inline int
 mul_widen_cost (bool speed, machine_mode mode)
 {
   return *mul_widen_cost_ptr (speed, mode);
@@ -605,7 +605,7 @@ mul_widen_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}mul_highpart_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 mul_highpart_cost_ptr (bool speed, machine_mode mode)
 {
   gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
@@ -618,7 +618,7 @@ mul_highpart_cost_ptr (bool speed, machine_mode mode)
 /* Set the COST for computing the high part of a multiplication in MODE
    when optimizing for SPEED.  */
 
-static inline void
+inline void
 set_mul_highpart_cost (bool speed, machine_mode mode, int cost)
 {
   *mul_highpart_cost_ptr (speed, mode) = cost;
@@ -627,7 +627,7 @@ set_mul_highpart_cost (bool speed, machine_mode mode, int cost)
 /* Return the cost for computing the high part of a multiplication in MODE
    when optimizing for SPEED.  */
 
-static inline int
+inline int
 mul_highpart_cost (bool speed, machine_mode mode)
 {
   return *mul_highpart_cost_ptr (speed, mode);
@@ -635,7 +635,7 @@ mul_highpart_cost (bool speed, machine_mode mode)
 
 /* Subroutine of {set_,}convert_cost.  Not to be used otherwise.  */
 
-static inline int *
+inline int *
 convert_cost_ptr (machine_mode to_mode, machine_mode from_mode,
 		  bool speed)
 {
@@ -651,7 +651,7 @@ convert_cost_ptr (machine_mode to_mode, machine_mode from_mode,
 /* Set the COST for converting from FROM_MODE to TO_MODE when optimizing
    for SPEED.  */
 
-static inline void
+inline void
 set_convert_cost (machine_mode to_mode, machine_mode from_mode,
 		  bool speed, int cost)
 {
@@ -661,7 +661,7 @@ set_convert_cost (machine_mode to_mode, machine_mode from_mode,
 /* Return the cost for converting from FROM_MODE to TO_MODE when optimizing
    for SPEED.  */
 
-static inline int
+inline int
 convert_cost (machine_mode to_mode, machine_mode from_mode,
 	      bool speed)
 {
diff --git a/gcc/expr.h b/gcc/expr.h
index e3ba9eb5370..0c059ed9023 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -84,19 +84,19 @@ extern rtx convert_wider_int_to_float (machine_mode mode, machine_mode imode,
 extern rtx emit_block_op_via_libcall (enum built_in_function, rtx, rtx, rtx,
 				      bool);
 
-static inline rtx
+inline rtx
 emit_block_copy_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
 {
   return emit_block_op_via_libcall (BUILT_IN_MEMCPY, dst, src, size, tailcall);
 }
 
-static inline rtx
+inline rtx
 emit_block_move_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
 {
   return emit_block_op_via_libcall (BUILT_IN_MEMMOVE, dst, src, size, tailcall);
 }
 
-static inline rtx
+inline rtx
 emit_block_comp_via_libcall (rtx dst, rtx src, rtx size, bool tailcall = false)
 {
   return emit_block_op_via_libcall (BUILT_IN_MEMCMP, dst, src, size, tailcall);
@@ -178,14 +178,14 @@ extern void clobber_reg_mode (rtx *, rtx, machine_mode);
 extern rtx copy_blkmode_to_reg (machine_mode, tree);
 
 /* Mark REG as holding a parameter for the next CALL_INSN.  */
-static inline void
+inline void
 use_reg (rtx *fusage, rtx reg)
 {
   use_reg_mode (fusage, reg, VOIDmode);
 }
 
 /* Mark REG as clobbered by the call with FUSAGE as CALL_INSN_FUNCTION_USAGE.  */
-static inline void
+inline void
 clobber_reg (rtx *fusage, rtx reg)
 {
   clobber_reg_mode (fusage, reg, VOIDmode);
@@ -303,14 +303,14 @@ extern rtx expand_expr_real_2 (sepops, rtx, machine_mode,
 /* Generate code for computing expression EXP.
    An rtx for the computed value is returned.  The value is never null.
    In the case of a void EXP, const0_rtx is returned.  */
-static inline rtx
+inline rtx
 expand_expr (tree exp, rtx target, machine_mode mode,
 	     enum expand_modifier modifier)
 {
   return expand_expr_real (exp, target, mode, modifier, NULL, false);
 }
 
-static inline rtx
+inline rtx
 expand_normal (tree exp)
 {
   return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL, false);
diff --git a/gcc/fixed-value.h b/gcc/fixed-value.h
index f16e41a32fa..8d1002ac6f0 100644
--- a/gcc/fixed-value.h
+++ b/gcc/fixed-value.h
@@ -51,7 +51,7 @@ extern FIXED_VALUE_TYPE fixed_from_double_int (double_int, scalar_mode);
 
 /* Return a CONST_FIXED from a bit payload and machine mode MODE.
    The bits in PAYLOAD are sign-extended/zero-extended according to MODE.  */
-static inline rtx
+inline rtx
 const_fixed_from_double_int (double_int payload,
 			     scalar_mode mode)
 {
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index a893ee06f3d..fea25312cf4 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -3276,7 +3276,7 @@ void gfc_done_2 (void);
 int get_c_kind (const char *, CInteropKind_t *);
 
 const char *gfc_closest_fuzzy_match (const char *, char **);
-static inline void
+inline void
 vec_push (char **&optr, size_t &osz, const char *elt)
 {
   /* {auto,}vec.safe_push () replacement.  Don't ask..  */
@@ -3552,7 +3552,7 @@ void gfc_intrinsic_done_1 (void);
 
 char gfc_type_letter (bt, bool logical_equals_int = false);
 int gfc_type_abi_kind (bt, int);
-static inline int
+inline int
 gfc_type_abi_kind (gfc_typespec *ts)
 {
   return gfc_type_abi_kind (ts->type, ts->kind);
diff --git a/gcc/gengtype.h b/gcc/gengtype.h
index 03264feb623..4e5df544fbf 100644
--- a/gcc/gengtype.h
+++ b/gcc/gengtype.h
@@ -77,7 +77,7 @@ input_file* input_file_by_name (const char* name);
 const char *get_file_srcdir_relative_path (const input_file *inpf);
 
 /* Get the name of an input file.  */
-static inline const char*
+inline const char*
 get_input_file_name (const input_file *inpf)
 {
   if (inpf)
@@ -94,7 +94,7 @@ get_input_file_name (const input_file *inpf)
    some GC roots may be missed, which is a much harder-to-debug problem.
   */
 
-static inline lang_bitmap
+inline lang_bitmap
 get_lang_bitmap (const input_file* inpf)
 {
   if (inpf == NULL)
@@ -104,7 +104,7 @@ get_lang_bitmap (const input_file* inpf)
 
 /* Set the bitmap returned by get_lang_bitmap.  The only legitimate
    callers of this function are read_input_list & read_state_*.  */
-static inline void
+inline void
 set_lang_bitmap (input_file* inpf, lang_bitmap n)
 {
   gcc_assert (inpf);
@@ -346,7 +346,7 @@ extern struct type callback_type;
 
 /* Test if a type is a union or a structure, perhaps a language
    specific one.  */
-static inline bool
+inline bool
 union_or_struct_p (enum typekind kind)
 {
   return (kind == TYPE_UNION
@@ -355,14 +355,14 @@ union_or_struct_p (enum typekind kind)
 	  || kind == TYPE_USER_STRUCT);
 }
 
-static inline bool
+inline bool
 union_or_struct_p (const_type_p x)
 {
   return union_or_struct_p (x->kind);
 }
 
 /* Give the file location of a type, if any. */
-static inline struct fileloc* 
+inline struct fileloc* 
 type_fileloc (type_p t)
 {
   if (!t) 
diff --git a/gcc/gimple-expr.h b/gcc/gimple-expr.h
index 42a16764be9..e89f7e20fc8 100644
--- a/gcc/gimple-expr.h
+++ b/gcc/gimple-expr.h
@@ -60,7 +60,7 @@ extern tree canonicalize_cond_expr_cond (tree);
 /* Return true if a conversion from either type of TYPE1 and TYPE2
    to the other is not required.  Otherwise return false.  */
 
-static inline bool
+inline bool
 types_compatible_p (tree type1, tree type2)
 {
   return (type1 == type2
@@ -70,7 +70,7 @@ types_compatible_p (tree type1, tree type2)
 
 /* Return true if TYPE is a suitable type for a scalar register variable.  */
 
-static inline bool
+inline bool
 is_gimple_reg_type (tree type)
 {
   return !AGGREGATE_TYPE_P (type);
@@ -78,7 +78,7 @@ is_gimple_reg_type (tree type)
 
 /* Return true if T is a variable.  */
 
-static inline bool
+inline bool
 is_gimple_variable (tree t)
 {
   return (TREE_CODE (t) == VAR_DECL
@@ -89,7 +89,7 @@ is_gimple_variable (tree t)
 
 /*  Return true if T is a GIMPLE identifier (something with an address).  */
 
-static inline bool
+inline bool
 is_gimple_id (tree t)
 {
   return (is_gimple_variable (t)
@@ -102,7 +102,7 @@ is_gimple_id (tree t)
 
 /* Return true if OP, an SSA name or a DECL is a virtual operand.  */
 
-static inline bool
+inline bool
 virtual_operand_p (tree op)
 {
   if (TREE_CODE (op) == SSA_NAME)
@@ -116,7 +116,7 @@ virtual_operand_p (tree op)
 
 /*  Return true if T is something whose address can be taken.  */
 
-static inline bool
+inline bool
 is_gimple_addressable (tree t)
 {
   return (is_gimple_id (t) || handled_component_p (t)
@@ -126,7 +126,7 @@ is_gimple_addressable (tree t)
 
 /* Return true if T is a valid gimple constant.  */
 
-static inline bool
+inline bool
 is_gimple_constant (const_tree t)
 {
   switch (TREE_CODE (t))
@@ -148,7 +148,7 @@ is_gimple_constant (const_tree t)
 /* A wrapper around extract_ops_from_tree with 3 ops, for callers which
    expect to see only a maximum of two operands.  */
 
-static inline void
+inline void
 extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
 		       tree *op1)
 {
@@ -160,7 +160,7 @@ extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
 /* Given a valid GIMPLE_CALL function address return the FUNCTION_DECL
    associated with the callee if known.  Otherwise return NULL_TREE.  */
 
-static inline tree
+inline tree
 gimple_call_addr_fndecl (const_tree fn)
 {
   if (fn && TREE_CODE (fn) == ADDR_EXPR)
diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h
index 8857a7e94bc..38352aa95af 100644
--- a/gcc/gimple-iterator.h
+++ b/gcc/gimple-iterator.h
@@ -95,7 +95,7 @@ extern void update_modified_stmts (gimple_seq);
 
 /* Return a new iterator pointing to GIMPLE_SEQ's first statement.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start (gimple_seq &seq)
 {
   gimple_stmt_iterator i;
@@ -107,7 +107,7 @@ gsi_start (gimple_seq &seq)
   return i;
 }
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_none (void)
 {
   gimple_stmt_iterator i;
@@ -119,7 +119,7 @@ gsi_none (void)
 
 /* Return a new iterator pointing to the first statement in basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_bb (basic_block bb)
 {
   gimple_stmt_iterator i;
@@ -137,7 +137,7 @@ gimple_stmt_iterator gsi_start_edge (edge e);
 
 /* Return a new iterator initially pointing to GIMPLE_SEQ's last statement.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_last (gimple_seq &seq)
 {
   gimple_stmt_iterator i;
@@ -151,7 +151,7 @@ gsi_last (gimple_seq &seq)
 
 /* Return a new iterator pointing to the last statement in basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_last_bb (basic_block bb)
 {
   gimple_stmt_iterator i;
@@ -167,7 +167,7 @@ gsi_last_bb (basic_block bb)
 
 /* Return true if I is at the end of its sequence.  */
 
-static inline bool
+inline bool
 gsi_end_p (gimple_stmt_iterator i)
 {
   return i.ptr == NULL;
@@ -175,7 +175,7 @@ gsi_end_p (gimple_stmt_iterator i)
 
 /* Return true if I is one statement before the end of its sequence.  */
 
-static inline bool
+inline bool
 gsi_one_before_end_p (gimple_stmt_iterator i)
 {
   return i.ptr != NULL && i.ptr->next == NULL;
@@ -183,7 +183,7 @@ gsi_one_before_end_p (gimple_stmt_iterator i)
 
 /* Advance the iterator to the next gimple statement.  */
 
-static inline void
+inline void
 gsi_next (gimple_stmt_iterator *i)
 {
   i->ptr = i->ptr->next;
@@ -191,7 +191,7 @@ gsi_next (gimple_stmt_iterator *i)
 
 /* Advance the iterator to the previous gimple statement.  */
 
-static inline void
+inline void
 gsi_prev (gimple_stmt_iterator *i)
 {
   gimple *prev = i->ptr->prev;
@@ -203,7 +203,7 @@ gsi_prev (gimple_stmt_iterator *i)
 
 /* Return the current stmt.  */
 
-static inline gimple *
+inline gimple *
 gsi_stmt (gimple_stmt_iterator i)
 {
   return i.ptr;
@@ -212,7 +212,7 @@ gsi_stmt (gimple_stmt_iterator i)
 /* Return a block statement iterator that points to the first
    non-label statement in block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_after_labels (basic_block bb)
 {
   gimple_stmt_iterator gsi = gsi_start_bb (bb);
@@ -231,7 +231,7 @@ gsi_after_labels (basic_block bb)
 /* Return a statement iterator that points to the first
    non-label statement in sequence SEQ.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_after_labels (gimple_seq &seq)
 {
   gimple_stmt_iterator gsi = gsi_start (seq);
@@ -249,7 +249,7 @@ gsi_after_labels (gimple_seq &seq)
 
 /* Advance the iterator to the next non-debug gimple statement.  */
 
-static inline void
+inline void
 gsi_next_nondebug (gimple_stmt_iterator *i)
 {
   do
@@ -261,7 +261,7 @@ gsi_next_nondebug (gimple_stmt_iterator *i)
 
 /* Advance the iterator to the previous non-debug gimple statement.  */
 
-static inline void
+inline void
 gsi_prev_nondebug (gimple_stmt_iterator *i)
 {
   do
@@ -274,7 +274,7 @@ gsi_prev_nondebug (gimple_stmt_iterator *i)
 /* Return a new iterator pointing to the first non-debug statement in
    SEQ.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_nondebug (gimple_seq seq)
 {
   gimple_stmt_iterator gsi = gsi_start (seq);
@@ -287,7 +287,7 @@ gsi_start_nondebug (gimple_seq seq)
 /* Return a new iterator pointing to the first non-debug statement in
    basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_nondebug_bb (basic_block bb)
 {
   gimple_stmt_iterator i = gsi_start_bb (bb);
@@ -301,7 +301,7 @@ gsi_start_nondebug_bb (basic_block bb)
 /* Return a new iterator pointing to the first non-debug non-label statement in
    basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_start_nondebug_after_labels_bb (basic_block bb)
 {
   gimple_stmt_iterator i = gsi_after_labels (bb);
@@ -315,7 +315,7 @@ gsi_start_nondebug_after_labels_bb (basic_block bb)
 /* Return a new iterator pointing to the last non-debug statement in
    basic block BB.  */
 
-static inline gimple_stmt_iterator
+inline gimple_stmt_iterator
 gsi_last_nondebug_bb (basic_block bb)
 {
   gimple_stmt_iterator i = gsi_last_bb (bb);
@@ -329,7 +329,7 @@ gsi_last_nondebug_bb (basic_block bb)
 /* Return true if I is followed only by debug statements in its
    sequence.  */
 
-static inline bool
+inline bool
 gsi_one_nondebug_before_end_p (gimple_stmt_iterator i)
 {
   if (gsi_one_before_end_p (i))
@@ -343,7 +343,7 @@ gsi_one_nondebug_before_end_p (gimple_stmt_iterator i)
 /* Advance I statement iterator to the next non-virtual GIMPLE_PHI
    statement.  */
 
-static inline void
+inline void
 gsi_next_nonvirtual_phi (gphi_iterator *i)
 {
   do
@@ -356,7 +356,7 @@ gsi_next_nonvirtual_phi (gphi_iterator *i)
 /* Return a new iterator pointing to the first non-virtual phi statement in
    basic block BB.  */
 
-static inline gphi_iterator
+inline gphi_iterator
 gsi_start_nonvirtual_phis (basic_block bb)
 {
   gphi_iterator i = gsi_start_phis (bb);
@@ -369,7 +369,7 @@ gsi_start_nonvirtual_phis (basic_block bb)
 
 /* Return the basic block associated with this iterator.  */
 
-static inline basic_block
+inline basic_block
 gsi_bb (gimple_stmt_iterator i)
 {
   return i.bb;
@@ -377,7 +377,7 @@ gsi_bb (gimple_stmt_iterator i)
 
 /* Return the sequence associated with this iterator.  */
 
-static inline gimple_seq
+inline gimple_seq
 gsi_seq (gimple_stmt_iterator i)
 {
   return *i.seq;
@@ -385,7 +385,7 @@ gsi_seq (gimple_stmt_iterator i)
 
 /* Determine whether SEQ is a nondebug singleton.  */
 
-static inline bool
+inline bool
 gimple_seq_nondebug_singleton_p (gimple_seq seq)
 {
   gimple_stmt_iterator gsi;
diff --git a/gcc/gimple-predict.h b/gcc/gimple-predict.h
index c557b76f17b..6c085a93ea7 100644
--- a/gcc/gimple-predict.h
+++ b/gcc/gimple-predict.h
@@ -25,7 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Return the predictor of GIMPLE_PREDICT statement GS.  */
 
-static inline enum br_predictor
+inline enum br_predictor
 gimple_predict_predictor (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -35,7 +35,7 @@ gimple_predict_predictor (const gimple *gs)
 
 /* Set the predictor of GIMPLE_PREDICT statement GS to PREDICT.  */
 
-static inline void
+inline void
 gimple_predict_set_predictor (gimple *gs, enum br_predictor predictor)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -46,7 +46,7 @@ gimple_predict_set_predictor (gimple *gs, enum br_predictor predictor)
 
 /* Return the outcome of GIMPLE_PREDICT statement GS.  */
 
-static inline enum prediction
+inline enum prediction
 gimple_predict_outcome (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -56,7 +56,7 @@ gimple_predict_outcome (const gimple *gs)
 
 /* Set the outcome of GIMPLE_PREDICT statement GS to OUTCOME.  */
 
-static inline void
+inline void
 gimple_predict_set_outcome (gimple *gs, enum prediction outcome)
 {
   GIMPLE_CHECK (gs, GIMPLE_PREDICT);
@@ -82,7 +82,7 @@ gimple_build_predict (enum br_predictor predictor, enum prediction outcome)
 
 /* Return true if GS is a GIMPLE_PREDICT statement.  */
 
-static inline bool
+inline bool
 is_gimple_predict (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_PREDICT;
diff --git a/gcc/gimple-range-fold.h b/gcc/gimple-range-fold.h
index b7098c22b7b..10b5c18b858 100644
--- a/gcc/gimple-range-fold.h
+++ b/gcc/gimple-range-fold.h
@@ -44,7 +44,7 @@ bool fold_range (vrange &r, gimple *s, unsigned num_elements, vrange **vector);
 // Return the type of range which statement S calculates.  If the type is
 // unsupported or no type can be determined, return NULL_TREE.
 
-static inline tree
+inline tree
 gimple_range_type (const gimple *s)
 {
   tree lhs = gimple_get_lhs (s);
@@ -73,7 +73,7 @@ gimple_range_type (const gimple *s)
 
 // Return EXP if it is an SSA_NAME with a type supported by gimple ranges.
 
-static inline tree
+inline tree
 gimple_range_ssa_p (tree exp)
 {
   if (exp && TREE_CODE (exp) == SSA_NAME &&
@@ -86,7 +86,7 @@ gimple_range_ssa_p (tree exp)
 
 // Return true if TYPE1 and TYPE2 are compatible range types.
 
-static inline bool
+inline bool
 range_compatible_p (tree type1, tree type2)
 {
   // types_compatible_p requires conversion in both directions to be useless.
diff --git a/gcc/gimple-ssa.h b/gcc/gimple-ssa.h
index 98d5bc6d47d..604af8b96b7 100644
--- a/gcc/gimple-ssa.h
+++ b/gcc/gimple-ssa.h
@@ -119,14 +119,14 @@ struct GTY(()) gimple_df {
    gimple_in_ssa_p is queried by gimplifier in various early stages before SSA
    infrastructure is initialized.  Check for presence of the datastructures
    at first place.  */
-static inline bool
+inline bool
 gimple_in_ssa_p (const struct function *fun)
 {
   return fun && fun->gimple_df && fun->gimple_df->in_ssa_p;
 }
 
 /* Artificial variable used for the virtual operand FUD chain.  */
-static inline tree
+inline tree
 gimple_vop (const struct function *fun)
 {
   gcc_checking_assert (fun && fun->gimple_df);
@@ -135,7 +135,7 @@ gimple_vop (const struct function *fun)
 
 /* Return the set of VUSE operand for statement G.  */
 
-static inline use_operand_p
+inline use_operand_p
 gimple_vuse_op (const gimple *g)
 {
   struct use_optype_d *ops;
@@ -152,7 +152,7 @@ gimple_vuse_op (const gimple *g)
 
 /* Return the set of VDEF operand for statement G.  */
 
-static inline def_operand_p
+inline def_operand_p
 gimple_vdef_op (gimple *g)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -166,7 +166,7 @@ gimple_vdef_op (gimple *g)
 
 /* Mark statement S as modified, and update it.  */
 
-static inline void
+inline void
 update_stmt (gimple *s)
 {
   if (gimple_has_ops (s))
@@ -178,7 +178,7 @@ update_stmt (gimple *s)
 
 /* Update statement S if it has been optimized.  */
 
-static inline void
+inline void
 update_stmt_if_modified (gimple *s)
 {
   if (gimple_modified_p (s))
@@ -187,7 +187,7 @@ update_stmt_if_modified (gimple *s)
 
 /* Mark statement S as modified, and update it.  */
 
-static inline void
+inline void
 update_stmt_fn (struct function *fn, gimple *s)
 {
   if (gimple_has_ops (s))
diff --git a/gcc/gimple.h b/gcc/gimple.h
index ddb9a4c0f5f..081d18e425a 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -57,7 +57,7 @@ extern void gimple_check_failed (const gimple *, const char *, int,        \
 	  		   (CODE), ERROR_MARK);				\
   } while (0)
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(const gimple *gs,
 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 	      const char *file = __builtin_FILE (),
@@ -76,7 +76,7 @@ GIMPLE_CHECK2(const gimple *gs,
   return ret;
 }
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(gimple *gs,
 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 	      const char *file = __builtin_FILE (),
@@ -98,13 +98,13 @@ GIMPLE_CHECK2(gimple *gs,
 #define gcc_gimple_checking_assert(EXPR) ((void)(0 && (EXPR)))
 #define GIMPLE_CHECK(GS, CODE)			(void)0
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(gimple *gs)
 {
   return as_a <T> (gs);
 }
 template <typename T>
-static inline T
+inline T
 GIMPLE_CHECK2(const gimple *gs)
 {
   return as_a <T> (gs);
@@ -1701,21 +1701,21 @@ typedef struct gimple_temp_hash_elt
 } elt_t;
 
 /* Get the number of the next statement uid to be allocated.  */
-static inline unsigned int
+inline unsigned int
 gimple_stmt_max_uid (struct function *fn)
 {
   return fn->last_stmt_uid;
 }
 
 /* Set the number of the next statement uid to be allocated.  */
-static inline void
+inline void
 set_gimple_stmt_max_uid (struct function *fn, unsigned int maxid)
 {
   fn->last_stmt_uid = maxid;
 }
 
 /* Set the number of the next statement uid to be allocated.  */
-static inline unsigned int
+inline unsigned int
 inc_gimple_stmt_max_uid (struct function *fn)
 {
   return fn->last_stmt_uid++;
@@ -1723,7 +1723,7 @@ inc_gimple_stmt_max_uid (struct function *fn)
 
 /* Return the first node in GIMPLE sequence S.  */
 
-static inline gimple_seq_node
+inline gimple_seq_node
 gimple_seq_first (gimple_seq s)
 {
   return s;
@@ -1732,7 +1732,7 @@ gimple_seq_first (gimple_seq s)
 
 /* Return the first statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_first_stmt (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_first (s);
@@ -1742,7 +1742,7 @@ gimple_seq_first_stmt (gimple_seq s)
 /* Return the first statement in GIMPLE sequence S as a gbind *,
    verifying that it has code GIMPLE_BIND in a checked build.  */
 
-static inline gbind *
+inline gbind *
 gimple_seq_first_stmt_as_a_bind (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_first (s);
@@ -1752,7 +1752,7 @@ gimple_seq_first_stmt_as_a_bind (gimple_seq s)
 
 /* Return the last node in GIMPLE sequence S.  */
 
-static inline gimple_seq_node
+inline gimple_seq_node
 gimple_seq_last (gimple_seq s)
 {
   return s ? s->prev : NULL;
@@ -1761,7 +1761,7 @@ gimple_seq_last (gimple_seq s)
 
 /* Return the last statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_last_stmt (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_last (s);
@@ -1771,7 +1771,7 @@ gimple_seq_last_stmt (gimple_seq s)
 
 /* Set the last node in GIMPLE sequence *PS to LAST.  */
 
-static inline void
+inline void
 gimple_seq_set_last (gimple_seq *ps, gimple_seq_node last)
 {
   (*ps)->prev = last;
@@ -1780,7 +1780,7 @@ gimple_seq_set_last (gimple_seq *ps, gimple_seq_node last)
 
 /* Set the first node in GIMPLE sequence *PS to FIRST.  */
 
-static inline void
+inline void
 gimple_seq_set_first (gimple_seq *ps, gimple_seq_node first)
 {
   *ps = first;
@@ -1789,7 +1789,7 @@ gimple_seq_set_first (gimple_seq *ps, gimple_seq_node first)
 
 /* Return true if GIMPLE sequence S is empty.  */
 
-static inline bool
+inline bool
 gimple_seq_empty_p (gimple_seq s)
 {
   return s == NULL;
@@ -1797,7 +1797,7 @@ gimple_seq_empty_p (gimple_seq s)
 
 /* Allocate a new sequence and initialize its first element with STMT.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_seq_alloc_with_stmt (gimple *stmt)
 {
   gimple_seq seq = NULL;
@@ -1808,13 +1808,13 @@ gimple_seq_alloc_with_stmt (gimple *stmt)
 
 /* Returns the sequence of statements in BB.  */
 
-static inline gimple_seq
+inline gimple_seq
 bb_seq (const_basic_block bb)
 {
   return (!(bb->flags & BB_RTL)) ? bb->il.gimple.seq : NULL;
 }
 
-static inline gimple_seq *
+inline gimple_seq *
 bb_seq_addr (basic_block bb)
 {
   return (!(bb->flags & BB_RTL)) ? &bb->il.gimple.seq : NULL;
@@ -1822,7 +1822,7 @@ bb_seq_addr (basic_block bb)
 
 /* Sets the sequence of statements in BB to SEQ.  */
 
-static inline void
+inline void
 set_bb_seq (basic_block bb, gimple_seq seq)
 {
   gcc_checking_assert (!(bb->flags & BB_RTL));
@@ -1832,7 +1832,7 @@ set_bb_seq (basic_block bb, gimple_seq seq)
 
 /* Return the code for GIMPLE statement G.  */
 
-static inline enum gimple_code
+inline enum gimple_code
 gimple_code (const gimple *g)
 {
   return g->code;
@@ -1841,7 +1841,7 @@ gimple_code (const gimple *g)
 
 /* Return the GSS code used by a GIMPLE code.  */
 
-static inline enum gimple_statement_structure_enum
+inline enum gimple_statement_structure_enum
 gss_for_code (enum gimple_code code)
 {
   gcc_gimple_checking_assert ((unsigned int)code < LAST_AND_UNUSED_GIMPLE_CODE);
@@ -1851,7 +1851,7 @@ gss_for_code (enum gimple_code code)
 
 /* Return which GSS code is used by GS.  */
 
-static inline enum gimple_statement_structure_enum
+inline enum gimple_statement_structure_enum
 gimple_statement_structure (gimple *gs)
 {
   return gss_for_code (gimple_code (gs));
@@ -1861,7 +1861,7 @@ gimple_statement_structure (gimple *gs)
 /* Return true if statement G has sub-statements.  This is only true for
    High GIMPLE statements.  */
 
-static inline bool
+inline bool
 gimple_has_substatements (gimple *g)
 {
   switch (gimple_code (g))
@@ -1898,7 +1898,7 @@ gimple_has_substatements (gimple *g)
 
 /* Return the basic block holding statement G.  */
 
-static inline basic_block
+inline basic_block
 gimple_bb (const gimple *g)
 {
   return g->bb;
@@ -1907,18 +1907,18 @@ gimple_bb (const gimple *g)
 
 /* Return the lexical scope block holding statement G.  */
 
-static inline tree
+inline tree
 gimple_block (const gimple *g)
 {
   return LOCATION_BLOCK (g->location);
 }
 
 /* Forward declare.  */
-static inline void gimple_set_location (gimple *, location_t);
+inline void gimple_set_location (gimple *, location_t);
 
 /* Set BLOCK to be the lexical scope block holding statement G.  */
 
-static inline void
+inline void
 gimple_set_block (gimple *g, tree block)
 {
   gimple_set_location (g, set_block (g->location, block));
@@ -1926,7 +1926,7 @@ gimple_set_block (gimple *g, tree block)
 
 /* Return location information for statement G.  */
 
-static inline location_t
+inline location_t
 gimple_location (const gimple *g)
 {
   return g->location;
@@ -1935,7 +1935,7 @@ gimple_location (const gimple *g)
 /* Return location information for statement G if g is not NULL.
    Otherwise, UNKNOWN_LOCATION is returned.  */
 
-static inline location_t
+inline location_t
 gimple_location_safe (const gimple *g)
 {
   return g ? gimple_location (g) : UNKNOWN_LOCATION;
@@ -1943,7 +1943,7 @@ gimple_location_safe (const gimple *g)
 
 /* Set location information for statement G.  */
 
-static inline void
+inline void
 gimple_set_location (gimple *g, location_t location)
 {
   /* Copy the no-warning data to the statement location.  */
@@ -1954,7 +1954,7 @@ gimple_set_location (gimple *g, location_t location)
 
 /* Return address of the location information for statement G.  */
 
-static inline location_t *
+inline location_t *
 gimple_location_ptr (gimple *g)
 {
   return &g->location;
@@ -1963,7 +1963,7 @@ gimple_location_ptr (gimple *g)
 
 /* Return true if G contains location information.  */
 
-static inline bool
+inline bool
 gimple_has_location (const gimple *g)
 {
   return LOCATION_LOCUS (gimple_location (g)) != UNKNOWN_LOCATION;
@@ -1972,7 +1972,7 @@ gimple_has_location (const gimple *g)
 
 /* Return non-artificial location information for statement G.  */
 
-static inline location_t
+inline location_t
 gimple_nonartificial_location (const gimple *g)
 {
   location_t *ploc = NULL;
@@ -1986,7 +1986,7 @@ gimple_nonartificial_location (const gimple *g)
 
 /* Return the file name of the location of STMT.  */
 
-static inline const char *
+inline const char *
 gimple_filename (const gimple *stmt)
 {
   return LOCATION_FILE (gimple_location (stmt));
@@ -1995,7 +1995,7 @@ gimple_filename (const gimple *stmt)
 
 /* Return the line number of the location of STMT.  */
 
-static inline int
+inline int
 gimple_lineno (const gimple *stmt)
 {
   return LOCATION_LINE (gimple_location (stmt));
@@ -2004,7 +2004,7 @@ gimple_lineno (const gimple *stmt)
 
 /* Determine whether SEQ is a singleton. */
 
-static inline bool
+inline bool
 gimple_seq_singleton_p (gimple_seq seq)
 {
   return ((gimple_seq_first (seq) != NULL)
@@ -2013,7 +2013,7 @@ gimple_seq_singleton_p (gimple_seq seq)
 
 /* Return true if no warnings should be emitted for statement STMT.  */
 
-static inline bool
+inline bool
 gimple_no_warning_p (const gimple *stmt)
 {
   return stmt->no_warning;
@@ -2021,7 +2021,7 @@ gimple_no_warning_p (const gimple *stmt)
 
 /* Set the no_warning flag of STMT to NO_WARNING.  */
 
-static inline void
+inline void
 gimple_set_no_warning (gimple *stmt, bool no_warning)
 {
   stmt->no_warning = (unsigned) no_warning;
@@ -2039,7 +2039,7 @@ gimple_set_no_warning (gimple *stmt, bool no_warning)
    struct gimple.
  */
 
-static inline void
+inline void
 gimple_set_visited (gimple *stmt, bool visited_p)
 {
   stmt->visited = (unsigned) visited_p;
@@ -2057,7 +2057,7 @@ gimple_set_visited (gimple *stmt, bool visited_p)
    statement by reading the comments of the 'visited' data member of
    struct gimple.  */
 
-static inline bool
+inline bool
 gimple_visited_p (gimple *stmt)
 {
   return stmt->visited;
@@ -2074,7 +2074,7 @@ gimple_visited_p (gimple *stmt)
    You can learn more about the PLF property by reading the comment of
    the 'plf' data member of struct gimple_statement_structure.  */
 
-static inline void
+inline void
 gimple_set_plf (gimple *stmt, enum plf_mask plf, bool val_p)
 {
   if (val_p)
@@ -2094,7 +2094,7 @@ gimple_set_plf (gimple *stmt, enum plf_mask plf, bool val_p)
    You can learn more about the plf property by reading the comment of
    the 'plf' data member of struct gimple_statement_structure.  */
 
-static inline unsigned int
+inline unsigned int
 gimple_plf (gimple *stmt, enum plf_mask plf)
 {
   return stmt->plf & ((unsigned int) plf);
@@ -2108,7 +2108,7 @@ gimple_plf (gimple *stmt, enum plf_mask plf)
    contains any useful value when the pass starts and thus can set it
    to any value it sees fit.  */
 
-static inline void
+inline void
 gimple_set_uid (gimple *g, unsigned uid)
 {
   g->uid = uid;
@@ -2122,7 +2122,7 @@ gimple_set_uid (gimple *g, unsigned uid)
    contains any useful value when the pass starts and thus can set it
    to any value it sees fit.  */
 
-static inline unsigned
+inline unsigned
 gimple_uid (const gimple *g)
 {
   return g->uid;
@@ -2131,7 +2131,7 @@ gimple_uid (const gimple *g)
 
 /* Make statement G a singleton sequence.  */
 
-static inline void
+inline void
 gimple_init_singleton (gimple *g)
 {
   g->next = NULL;
@@ -2141,7 +2141,7 @@ gimple_init_singleton (gimple *g)
 
 /* Return true if GIMPLE statement G has register or memory operands.  */
 
-static inline bool
+inline bool
 gimple_has_ops (const gimple *g)
 {
   return gimple_code (g) >= GIMPLE_COND && gimple_code (g) <= GIMPLE_RETURN;
@@ -2165,7 +2165,7 @@ is_a_helper <gimple_statement_with_ops *>::test (gimple *gs)
 
 /* Return true if GIMPLE statement G has memory operands.  */
 
-static inline bool
+inline bool
 gimple_has_mem_ops (const gimple *g)
 {
   return gimple_code (g) >= GIMPLE_ASSIGN && gimple_code (g) <= GIMPLE_RETURN;
@@ -2189,7 +2189,7 @@ is_a_helper <gimple_statement_with_memory_ops *>::test (gimple *gs)
 
 /* Return the set of USE operands for statement G.  */
 
-static inline struct use_optype_d *
+inline struct use_optype_d *
 gimple_use_ops (const gimple *g)
 {
   const gimple_statement_with_ops *ops_stmt =
@@ -2202,7 +2202,7 @@ gimple_use_ops (const gimple *g)
 
 /* Set USE to be the set of USE operands for statement G.  */
 
-static inline void
+inline void
 gimple_set_use_ops (gimple *g, struct use_optype_d *use)
 {
   gimple_statement_with_ops *ops_stmt =
@@ -2213,7 +2213,7 @@ gimple_set_use_ops (gimple *g, struct use_optype_d *use)
 
 /* Return the single VUSE operand of the statement G.  */
 
-static inline tree
+inline tree
 gimple_vuse (const gimple *g)
 {
   const gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2225,7 +2225,7 @@ gimple_vuse (const gimple *g)
 
 /* Return the single VDEF operand of the statement G.  */
 
-static inline tree
+inline tree
 gimple_vdef (const gimple *g)
 {
   const gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2237,7 +2237,7 @@ gimple_vdef (const gimple *g)
 
 /* Return the single VUSE operand of the statement G.  */
 
-static inline tree *
+inline tree *
 gimple_vuse_ptr (gimple *g)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2249,7 +2249,7 @@ gimple_vuse_ptr (gimple *g)
 
 /* Return the single VDEF operand of the statement G.  */
 
-static inline tree *
+inline tree *
 gimple_vdef_ptr (gimple *g)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2261,7 +2261,7 @@ gimple_vdef_ptr (gimple *g)
 
 /* Set the single VUSE operand of the statement G.  */
 
-static inline void
+inline void
 gimple_set_vuse (gimple *g, tree vuse)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2271,7 +2271,7 @@ gimple_set_vuse (gimple *g, tree vuse)
 
 /* Set the single VDEF operand of the statement G.  */
 
-static inline void
+inline void
 gimple_set_vdef (gimple *g, tree vdef)
 {
   gimple_statement_with_memory_ops *mem_ops_stmt =
@@ -2283,7 +2283,7 @@ gimple_set_vdef (gimple *g, tree vdef)
 /* Return true if statement G has operands and the modified field has
    been set.  */
 
-static inline bool
+inline bool
 gimple_modified_p (const gimple *g)
 {
   return (gimple_has_ops (g)) ? (bool) g->modified : false;
@@ -2293,7 +2293,7 @@ gimple_modified_p (const gimple *g)
 /* Set the MODIFIED flag to MODIFIEDP, iff the gimple statement G has
    a MODIFIED field.  */
 
-static inline void
+inline void
 gimple_set_modified (gimple *s, bool modifiedp)
 {
   if (gimple_has_ops (s))
@@ -2303,7 +2303,7 @@ gimple_set_modified (gimple *s, bool modifiedp)
 
 /* Return true if statement STMT contains volatile operands.  */
 
-static inline bool
+inline bool
 gimple_has_volatile_ops (const gimple *stmt)
 {
   if (gimple_has_mem_ops (stmt))
@@ -2315,7 +2315,7 @@ gimple_has_volatile_ops (const gimple *stmt)
 
 /* Set the HAS_VOLATILE_OPS flag to VOLATILEP.  */
 
-static inline void
+inline void
 gimple_set_has_volatile_ops (gimple *stmt, bool volatilep)
 {
   if (gimple_has_mem_ops (stmt))
@@ -2324,7 +2324,7 @@ gimple_set_has_volatile_ops (gimple *stmt, bool volatilep)
 
 /* Return true if STMT is in a transaction.  */
 
-static inline bool
+inline bool
 gimple_in_transaction (const gimple *stmt)
 {
   return bb_in_transaction (gimple_bb (stmt));
@@ -2332,7 +2332,7 @@ gimple_in_transaction (const gimple *stmt)
 
 /* Return true if statement STMT may access memory.  */
 
-static inline bool
+inline bool
 gimple_references_memory_p (gimple *stmt)
 {
   return gimple_has_mem_ops (stmt) && gimple_vuse (stmt);
@@ -2341,7 +2341,7 @@ gimple_references_memory_p (gimple *stmt)
 
 /* Return the subcode for OMP statement S.  */
 
-static inline unsigned
+inline unsigned
 gimple_omp_subcode (const gimple *s)
 {
   gcc_gimple_checking_assert (gimple_code (s) >= GIMPLE_OMP_ATOMIC_LOAD
@@ -2351,7 +2351,7 @@ gimple_omp_subcode (const gimple *s)
 
 /* Set the subcode for OMP statement S to SUBCODE.  */
 
-static inline void
+inline void
 gimple_omp_set_subcode (gimple *s, unsigned int subcode)
 {
   /* We only have 16 bits for the subcode.  Assert that we are not
@@ -2362,7 +2362,7 @@ gimple_omp_set_subcode (gimple *s, unsigned int subcode)
 
 /* Set the nowait flag on OMP_RETURN statement S.  */
 
-static inline void
+inline void
 gimple_omp_return_set_nowait (gimple *s)
 {
   GIMPLE_CHECK (s, GIMPLE_OMP_RETURN);
@@ -2373,7 +2373,7 @@ gimple_omp_return_set_nowait (gimple *s)
 /* Return true if OMP return statement G has the GF_OMP_RETURN_NOWAIT
    flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_return_nowait_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_RETURN);
@@ -2383,7 +2383,7 @@ gimple_omp_return_nowait_p (const gimple *g)
 
 /* Set the LHS of OMP return.  */
 
-static inline void
+inline void
 gimple_omp_return_set_lhs (gimple *g, tree lhs)
 {
   gimple_statement_omp_return *omp_return_stmt =
@@ -2394,7 +2394,7 @@ gimple_omp_return_set_lhs (gimple *g, tree lhs)
 
 /* Get the LHS of OMP return.  */
 
-static inline tree
+inline tree
 gimple_omp_return_lhs (const gimple *g)
 {
   const gimple_statement_omp_return *omp_return_stmt =
@@ -2405,7 +2405,7 @@ gimple_omp_return_lhs (const gimple *g)
 
 /* Return a pointer to the LHS of OMP return.  */
 
-static inline tree *
+inline tree *
 gimple_omp_return_lhs_ptr (gimple *g)
 {
   gimple_statement_omp_return *omp_return_stmt =
@@ -2417,7 +2417,7 @@ gimple_omp_return_lhs_ptr (gimple *g)
 /* Return true if OMP section statement G has the GF_OMP_SECTION_LAST
    flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_section_last_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
@@ -2427,7 +2427,7 @@ gimple_omp_section_last_p (const gimple *g)
 
 /* Set the GF_OMP_SECTION_LAST flag on G.  */
 
-static inline void
+inline void
 gimple_omp_section_set_last (gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_SECTION);
@@ -2438,7 +2438,7 @@ gimple_omp_section_set_last (gimple *g)
 /* Return true if OMP ordered construct is stand-alone
    (G has the GF_OMP_ORDERED_STANDALONE flag set).  */
 
-static inline bool
+inline bool
 gimple_omp_ordered_standalone_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_ORDERED);
@@ -2448,7 +2448,7 @@ gimple_omp_ordered_standalone_p (const gimple *g)
 
 /* Set the GF_OMP_ORDERED_STANDALONE flag on G.  */
 
-static inline void
+inline void
 gimple_omp_ordered_standalone (gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_ORDERED);
@@ -2459,7 +2459,7 @@ gimple_omp_ordered_standalone (gimple *g)
 /* Return true if OMP parallel statement G has the
    GF_OMP_PARALLEL_COMBINED flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_parallel_combined_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
@@ -2470,7 +2470,7 @@ gimple_omp_parallel_combined_p (const gimple *g)
 /* Set the GF_OMP_PARALLEL_COMBINED field in G depending on the boolean
    value of COMBINED_P.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_combined_p (gimple *g, bool combined_p)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_PARALLEL);
@@ -2484,7 +2484,7 @@ gimple_omp_parallel_set_combined_p (gimple *g, bool combined_p)
 /* Return true if OMP atomic load/store statement G has the
    GF_OMP_ATOMIC_NEED_VALUE flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_atomic_need_value_p (const gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2495,7 +2495,7 @@ gimple_omp_atomic_need_value_p (const gimple *g)
 
 /* Set the GF_OMP_ATOMIC_NEED_VALUE flag on G.  */
 
-static inline void
+inline void
 gimple_omp_atomic_set_need_value (gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2507,7 +2507,7 @@ gimple_omp_atomic_set_need_value (gimple *g)
 /* Return true if OMP atomic load/store statement G has the
    GF_OMP_ATOMIC_WEAK flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_atomic_weak_p (const gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2518,7 +2518,7 @@ gimple_omp_atomic_weak_p (const gimple *g)
 
 /* Set the GF_OMP_ATOMIC_WEAK flag on G.  */
 
-static inline void
+inline void
 gimple_omp_atomic_set_weak (gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2529,7 +2529,7 @@ gimple_omp_atomic_set_weak (gimple *g)
 
 /* Return the memory order of the OMP atomic load/store statement G.  */
 
-static inline enum omp_memory_order
+inline enum omp_memory_order
 gimple_omp_atomic_memory_order (const gimple *g)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2541,7 +2541,7 @@ gimple_omp_atomic_memory_order (const gimple *g)
 
 /* Set the memory order on G.  */
 
-static inline void
+inline void
 gimple_omp_atomic_set_memory_order (gimple *g, enum omp_memory_order mo)
 {
   if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
@@ -2553,7 +2553,7 @@ gimple_omp_atomic_set_memory_order (gimple *g, enum omp_memory_order mo)
 
 /* Return the number of operands for statement GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_num_ops (const gimple *gs)
 {
   return gs->num_ops;
@@ -2562,7 +2562,7 @@ gimple_num_ops (const gimple *gs)
 
 /* Set the number of operands for statement GS.  */
 
-static inline void
+inline void
 gimple_set_num_ops (gimple *gs, unsigned num_ops)
 {
   gs->num_ops = num_ops;
@@ -2571,7 +2571,7 @@ gimple_set_num_ops (gimple *gs, unsigned num_ops)
 
 /* Return the array of operands for statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_ops (gimple *gs)
 {
   size_t off;
@@ -2588,7 +2588,7 @@ gimple_ops (gimple *gs)
 
 /* Return operand I for statement GS.  */
 
-static inline tree
+inline tree
 gimple_op (const gimple *gs, unsigned i)
 {
   if (gimple_has_ops (gs))
@@ -2602,7 +2602,7 @@ gimple_op (const gimple *gs, unsigned i)
 
 /* Return a pointer to operand I for statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_op_ptr (gimple *gs, unsigned i)
 {
   if (gimple_has_ops (gs))
@@ -2616,7 +2616,7 @@ gimple_op_ptr (gimple *gs, unsigned i)
 
 /* Set operand I of statement GS to OP.  */
 
-static inline void
+inline void
 gimple_set_op (gimple *gs, unsigned i, tree op)
 {
   gcc_gimple_checking_assert (gimple_has_ops (gs) && i < gimple_num_ops (gs));
@@ -2630,7 +2630,7 @@ gimple_set_op (gimple *gs, unsigned i, tree op)
 
 /* Return true if GS is a GIMPLE_ASSIGN.  */
 
-static inline bool
+inline bool
 is_gimple_assign (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_ASSIGN;
@@ -2639,7 +2639,7 @@ is_gimple_assign (const gimple *gs)
 /* Determine if expression CODE is one of the valid expressions that can
    be used on the RHS of GIMPLE assignments.  */
 
-static inline enum gimple_rhs_class
+inline enum gimple_rhs_class
 get_gimple_rhs_class (enum tree_code code)
 {
   return (enum gimple_rhs_class) gimple_rhs_class_table[(int) code];
@@ -2647,13 +2647,13 @@ get_gimple_rhs_class (enum tree_code code)
 
 /* Return the LHS of assignment statement GS.  */
 
-static inline tree
+inline tree
 gimple_assign_lhs (const gassign *gs)
 {
   return gs->op[0];
 }
 
-static inline tree
+inline tree
 gimple_assign_lhs (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2663,13 +2663,13 @@ gimple_assign_lhs (const gimple *gs)
 
 /* Return a pointer to the LHS of assignment statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_lhs_ptr (gassign *gs)
 {
   return &gs->op[0];
 }
 
-static inline tree *
+inline tree *
 gimple_assign_lhs_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2679,7 +2679,7 @@ gimple_assign_lhs_ptr (gimple *gs)
 
 /* Set LHS to be the LHS operand of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_lhs (gassign *gs, tree lhs)
 {
   gs->op[0] = lhs;
@@ -2688,7 +2688,7 @@ gimple_assign_set_lhs (gassign *gs, tree lhs)
     SSA_NAME_DEF_STMT (lhs) = gs;
 }
 
-static inline void
+inline void
 gimple_assign_set_lhs (gimple *gs, tree lhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2698,13 +2698,13 @@ gimple_assign_set_lhs (gimple *gs, tree lhs)
 
 /* Return the first operand on the RHS of assignment statement GS.  */
 
-static inline tree
+inline tree
 gimple_assign_rhs1 (const gassign *gs)
 {
   return gs->op[1];
 }
 
-static inline tree
+inline tree
 gimple_assign_rhs1 (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2715,13 +2715,13 @@ gimple_assign_rhs1 (const gimple *gs)
 /* Return a pointer to the first operand on the RHS of assignment
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_rhs1_ptr (gassign *gs)
 {
   return &gs->op[1];
 }
 
-static inline tree *
+inline tree *
 gimple_assign_rhs1_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2730,13 +2730,13 @@ gimple_assign_rhs1_ptr (gimple *gs)
 
 /* Set RHS to be the first operand on the RHS of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs1 (gassign *gs, tree rhs)
 {
   gs->op[1] = rhs;
 }
 
-static inline void
+inline void
 gimple_assign_set_rhs1 (gimple *gs, tree rhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2747,7 +2747,7 @@ gimple_assign_set_rhs1 (gimple *gs, tree rhs)
 /* Return the second operand on the RHS of assignment statement GS.
    If GS does not have two operands, NULL is returned instead.  */
 
-static inline tree
+inline tree
 gimple_assign_rhs2 (const gassign *gs)
 {
   if (gimple_num_ops (gs) >= 3)
@@ -2756,7 +2756,7 @@ gimple_assign_rhs2 (const gassign *gs)
     return NULL_TREE;
 }
 
-static inline tree
+inline tree
 gimple_assign_rhs2 (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2767,14 +2767,14 @@ gimple_assign_rhs2 (const gimple *gs)
 /* Return a pointer to the second operand on the RHS of assignment
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_rhs2_ptr (gassign *gs)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) >= 3);
   return &gs->op[2];
 }
 
-static inline tree *
+inline tree *
 gimple_assign_rhs2_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2784,14 +2784,14 @@ gimple_assign_rhs2_ptr (gimple *gs)
 
 /* Set RHS to be the second operand on the RHS of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs2 (gassign *gs, tree rhs)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) >= 3);
   gs->op[2] = rhs;
 }
 
-static inline void
+inline void
 gimple_assign_set_rhs2 (gimple *gs, tree rhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2801,7 +2801,7 @@ gimple_assign_set_rhs2 (gimple *gs, tree rhs)
 /* Return the third operand on the RHS of assignment statement GS.
    If GS does not have two operands, NULL is returned instead.  */
 
-static inline tree
+inline tree
 gimple_assign_rhs3 (const gassign *gs)
 {
   if (gimple_num_ops (gs) >= 4)
@@ -2810,7 +2810,7 @@ gimple_assign_rhs3 (const gassign *gs)
     return NULL_TREE;
 }
 
-static inline tree
+inline tree
 gimple_assign_rhs3 (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2820,7 +2820,7 @@ gimple_assign_rhs3 (const gimple *gs)
 /* Return a pointer to the third operand on the RHS of assignment
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_assign_rhs3_ptr (gimple *gs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2831,14 +2831,14 @@ gimple_assign_rhs3_ptr (gimple *gs)
 
 /* Set RHS to be the third operand on the RHS of assignment statement GS.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs3 (gassign *gs, tree rhs)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) >= 4);
   gs->op[3] = rhs;
 }
 
-static inline void
+inline void
 gimple_assign_set_rhs3 (gimple *gs, tree rhs)
 {
   gassign *ass = GIMPLE_CHECK2<gassign *> (gs);
@@ -2849,7 +2849,7 @@ gimple_assign_set_rhs3 (gimple *gs, tree rhs)
 /* A wrapper around 3 operand gimple_assign_set_rhs_with_ops, for callers
    which expect to see only two operands.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 				tree op1, tree op2)
 {
@@ -2859,7 +2859,7 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 /* A wrapper around 3 operand gimple_assign_set_rhs_with_ops, for callers
    which expect to see only one operands.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 				tree op1)
 {
@@ -2868,7 +2868,7 @@ gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
 
 /* Returns true if GS is a nontemporal move.  */
 
-static inline bool
+inline bool
 gimple_assign_nontemporal_move_p (const gassign *gs)
 {
   return gs->nontemporal_move;
@@ -2876,7 +2876,7 @@ gimple_assign_nontemporal_move_p (const gassign *gs)
 
 /* Sets nontemporal move flag of GS to NONTEMPORAL.  */
 
-static inline void
+inline void
 gimple_assign_set_nontemporal_move (gimple *gs, bool nontemporal)
 {
   GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
@@ -2888,7 +2888,7 @@ gimple_assign_set_nontemporal_move (gimple *gs, bool nontemporal)
    statement GS.  In case that the RHS is a single object, returns the
    tree code of the object.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_assign_rhs_code (const gassign *gs)
 {
   enum tree_code code = (enum tree_code) gs->subcode;
@@ -2901,7 +2901,7 @@ gimple_assign_rhs_code (const gassign *gs)
   return code;
 }
 
-static inline enum tree_code
+inline enum tree_code
 gimple_assign_rhs_code (const gimple *gs)
 {
   const gassign *ass = GIMPLE_CHECK2<const gassign *> (gs);
@@ -2912,7 +2912,7 @@ gimple_assign_rhs_code (const gimple *gs)
 /* Set CODE to be the code for the expression computed on the RHS of
    assignment S.  */
 
-static inline void
+inline void
 gimple_assign_set_rhs_code (gimple *s, enum tree_code code)
 {
   GIMPLE_CHECK (s, GIMPLE_ASSIGN);
@@ -2924,7 +2924,7 @@ gimple_assign_set_rhs_code (gimple *s, enum tree_code code)
    the rhs of assignment statement GS.
    This will never return GIMPLE_INVALID_RHS.  */
 
-static inline enum gimple_rhs_class
+inline enum gimple_rhs_class
 gimple_assign_rhs_class (const gimple *gs)
 {
   return get_gimple_rhs_class (gimple_assign_rhs_code (gs));
@@ -2936,7 +2936,7 @@ gimple_assign_rhs_class (const gimple *gs)
    any RHS operand, including those that perform an operation
    and do not have the semantics of a copy, such as COND_EXPR.  */
 
-static inline bool
+inline bool
 gimple_assign_single_p (const gimple *gs)
 {
   return (is_gimple_assign (gs)
@@ -2945,7 +2945,7 @@ gimple_assign_single_p (const gimple *gs)
 
 /* Return true if GS performs a store to its lhs.  */
 
-static inline bool
+inline bool
 gimple_store_p (const gimple *gs)
 {
   tree lhs = gimple_get_lhs (gs);
@@ -2954,7 +2954,7 @@ gimple_store_p (const gimple *gs)
 
 /* Return true if GS is an assignment that loads from its rhs1.  */
 
-static inline bool
+inline bool
 gimple_assign_load_p (const gimple *gs)
 {
   tree rhs;
@@ -2971,7 +2971,7 @@ gimple_assign_load_p (const gimple *gs)
 
 /* Return true if S is a type-cast assignment.  */
 
-static inline bool
+inline bool
 gimple_assign_cast_p (const gimple *s)
 {
   if (is_gimple_assign (s))
@@ -2987,7 +2987,7 @@ gimple_assign_cast_p (const gimple *s)
 
 /* Return true if S is a clobber statement.  */
 
-static inline bool
+inline bool
 gimple_clobber_p (const gimple *s)
 {
   return gimple_assign_single_p (s)
@@ -2996,7 +2996,7 @@ gimple_clobber_p (const gimple *s)
 
 /* Return true if S is a clobber statement.  */
 
-static inline bool
+inline bool
 gimple_clobber_p (const gimple *s, enum clobber_kind kind)
 {
   return gimple_clobber_p (s)
@@ -3005,7 +3005,7 @@ gimple_clobber_p (const gimple *s, enum clobber_kind kind)
 
 /* Return true if GS is a GIMPLE_CALL.  */
 
-static inline bool
+inline bool
 is_gimple_call (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_CALL;
@@ -3013,13 +3013,13 @@ is_gimple_call (const gimple *gs)
 
 /* Return the LHS of call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_lhs (const gcall *gs)
 {
   return gs->op[0];
 }
 
-static inline tree
+inline tree
 gimple_call_lhs (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3029,13 +3029,13 @@ gimple_call_lhs (const gimple *gs)
 
 /* Return a pointer to the LHS of call statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_call_lhs_ptr (gcall *gs)
 {
   return &gs->op[0];
 }
 
-static inline tree *
+inline tree *
 gimple_call_lhs_ptr (gimple *gs)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3045,7 +3045,7 @@ gimple_call_lhs_ptr (gimple *gs)
 
 /* Set LHS to be the LHS operand of call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_lhs (gcall *gs, tree lhs)
 {
   gs->op[0] = lhs;
@@ -3053,7 +3053,7 @@ gimple_call_set_lhs (gcall *gs, tree lhs)
     SSA_NAME_DEF_STMT (lhs) = gs;
 }
 
-static inline void
+inline void
 gimple_call_set_lhs (gimple *gs, tree lhs)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3064,13 +3064,13 @@ gimple_call_set_lhs (gimple *gs, tree lhs)
 /* Return true if call GS calls an internal-only function, as enumerated
    by internal_fn.  */
 
-static inline bool
+inline bool
 gimple_call_internal_p (const gcall *gs)
 {
   return (gs->subcode & GF_CALL_INTERNAL) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_internal_p (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3079,7 +3079,7 @@ gimple_call_internal_p (const gimple *gs)
 
 /* Return true if call GS is marked as nocf_check.  */
 
-static inline bool
+inline bool
 gimple_call_nocf_check_p (const gcall *gs)
 {
   return (gs->subcode & GF_CALL_NOCF_CHECK) != 0;
@@ -3087,7 +3087,7 @@ gimple_call_nocf_check_p (const gcall *gs)
 
 /* Mark statement GS as nocf_check call.  */
 
-static inline void
+inline void
 gimple_call_set_nocf_check (gcall *gs, bool nocf_check)
 {
   if (nocf_check)
@@ -3098,14 +3098,14 @@ gimple_call_set_nocf_check (gcall *gs, bool nocf_check)
 
 /* Return the target of internal call GS.  */
 
-static inline enum internal_fn
+inline enum internal_fn
 gimple_call_internal_fn (const gcall *gs)
 {
   gcc_gimple_checking_assert (gimple_call_internal_p (gs));
   return gs->u.internal_fn;
 }
 
-static inline enum internal_fn
+inline enum internal_fn
 gimple_call_internal_fn (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3114,13 +3114,13 @@ gimple_call_internal_fn (const gimple *gs)
 
 /* Return true, if this internal gimple call is unique.  */
 
-static inline bool
+inline bool
 gimple_call_internal_unique_p (const gcall *gs)
 {
   return gimple_call_internal_fn (gs) == IFN_UNIQUE;
 }
 
-static inline bool
+inline bool
 gimple_call_internal_unique_p (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3129,7 +3129,7 @@ gimple_call_internal_unique_p (const gimple *gs)
 
 /* Return true if GS is an internal function FN.  */
 
-static inline bool
+inline bool
 gimple_call_internal_p (const gimple *gs, internal_fn fn)
 {
   return (is_gimple_call (gs)
@@ -3140,7 +3140,7 @@ gimple_call_internal_p (const gimple *gs, internal_fn fn)
 /* If CTRL_ALTERING_P is true, mark GIMPLE_CALL S to be a stmt
    that could alter control flow.  */
 
-static inline void
+inline void
 gimple_call_set_ctrl_altering (gcall *s, bool ctrl_altering_p)
 {
   if (ctrl_altering_p)
@@ -3149,7 +3149,7 @@ gimple_call_set_ctrl_altering (gcall *s, bool ctrl_altering_p)
     s->subcode &= ~GF_CALL_CTRL_ALTERING;
 }
 
-static inline void
+inline void
 gimple_call_set_ctrl_altering (gimple *s, bool ctrl_altering_p)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (s);
@@ -3159,13 +3159,13 @@ gimple_call_set_ctrl_altering (gimple *s, bool ctrl_altering_p)
 /* Return true if call GS calls an func whose GF_CALL_CTRL_ALTERING
    flag is set. Such call could not be a stmt in the middle of a bb.  */
 
-static inline bool
+inline bool
 gimple_call_ctrl_altering_p (const gcall *gs)
 {
   return (gs->subcode & GF_CALL_CTRL_ALTERING) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_ctrl_altering_p (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3175,7 +3175,7 @@ gimple_call_ctrl_altering_p (const gimple *gs)
 
 /* Return the function type of the function called by GS.  */
 
-static inline tree
+inline tree
 gimple_call_fntype (const gcall *gs)
 {
   if (gimple_call_internal_p (gs))
@@ -3183,7 +3183,7 @@ gimple_call_fntype (const gcall *gs)
   return gs->u.fntype;
 }
 
-static inline tree
+inline tree
 gimple_call_fntype (const gimple *gs)
 {
   const gcall *call_stmt = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3192,7 +3192,7 @@ gimple_call_fntype (const gimple *gs)
 
 /* Set the type of the function called by CALL_STMT to FNTYPE.  */
 
-static inline void
+inline void
 gimple_call_set_fntype (gcall *call_stmt, tree fntype)
 {
   gcc_gimple_checking_assert (!gimple_call_internal_p (call_stmt));
@@ -3203,13 +3203,13 @@ gimple_call_set_fntype (gcall *call_stmt, tree fntype)
 /* Return the tree node representing the function called by call
    statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_fn (const gcall *gs)
 {
   return gs->op[1];
 }
 
-static inline tree
+inline tree
 gimple_call_fn (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3219,13 +3219,13 @@ gimple_call_fn (const gimple *gs)
 /* Return a pointer to the tree node representing the function called by call
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_call_fn_ptr (gcall *gs)
 {
   return &gs->op[1];
 }
 
-static inline tree *
+inline tree *
 gimple_call_fn_ptr (gimple *gs)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3235,7 +3235,7 @@ gimple_call_fn_ptr (gimple *gs)
 
 /* Set FN to be the function called by call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_fn (gcall *gs, tree fn)
 {
   gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
@@ -3245,7 +3245,7 @@ gimple_call_set_fn (gcall *gs, tree fn)
 
 /* Set FNDECL to be the function called by call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_fndecl (gcall *gs, tree decl)
 {
   gcc_gimple_checking_assert (!gimple_call_internal_p (gs));
@@ -3253,7 +3253,7 @@ gimple_call_set_fndecl (gcall *gs, tree decl)
 			  build_pointer_type (TREE_TYPE (decl)), decl);
 }
 
-static inline void
+inline void
 gimple_call_set_fndecl (gimple *gs, tree decl)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3263,7 +3263,7 @@ gimple_call_set_fndecl (gimple *gs, tree decl)
 
 /* Set internal function FN to be the function called by call statement CALL_STMT.  */
 
-static inline void
+inline void
 gimple_call_set_internal_fn (gcall *call_stmt, enum internal_fn fn)
 {
   gcc_gimple_checking_assert (gimple_call_internal_p (call_stmt));
@@ -3275,13 +3275,13 @@ gimple_call_set_internal_fn (gcall *call_stmt, enum internal_fn fn)
    Otherwise return NULL.  This function is analogous to
    get_callee_fndecl in tree land.  */
 
-static inline tree
+inline tree
 gimple_call_fndecl (const gcall *gs)
 {
   return gimple_call_addr_fndecl (gimple_call_fn (gs));
 }
 
-static inline tree
+inline tree
 gimple_call_fndecl (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3291,7 +3291,7 @@ gimple_call_fndecl (const gimple *gs)
 
 /* Return the type returned by call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_return_type (const gcall *gs)
 {
   tree type = gimple_call_fntype (gs);
@@ -3307,13 +3307,13 @@ gimple_call_return_type (const gcall *gs)
 
 /* Return the static chain for call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_chain (const gcall *gs)
 {
   return gs->op[2];
 }
 
-static inline tree
+inline tree
 gimple_call_chain (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3323,7 +3323,7 @@ gimple_call_chain (const gimple *gs)
 
 /* Return a pointer to the static chain for call statement CALL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_call_chain_ptr (gcall *call_stmt)
 {
   return &call_stmt->op[2];
@@ -3331,7 +3331,7 @@ gimple_call_chain_ptr (gcall *call_stmt)
 
 /* Set CHAIN to be the static chain for call statement CALL_STMT.  */
 
-static inline void
+inline void
 gimple_call_set_chain (gcall *call_stmt, tree chain)
 {
   call_stmt->op[2] = chain;
@@ -3340,13 +3340,13 @@ gimple_call_set_chain (gcall *call_stmt, tree chain)
 
 /* Return the number of arguments used by call statement GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_call_num_args (const gcall *gs)
 {
   return gimple_num_ops (gs) - 3;
 }
 
-static inline unsigned
+inline unsigned
 gimple_call_num_args (const gimple *gs)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3356,14 +3356,14 @@ gimple_call_num_args (const gimple *gs)
 
 /* Return the argument at position INDEX for call statement GS.  */
 
-static inline tree
+inline tree
 gimple_call_arg (const gcall *gs, unsigned index)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
   return gs->op[index + 3];
 }
 
-static inline tree
+inline tree
 gimple_call_arg (const gimple *gs, unsigned index)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (gs);
@@ -3374,14 +3374,14 @@ gimple_call_arg (const gimple *gs, unsigned index)
 /* Return a pointer to the argument at position INDEX for call
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_call_arg_ptr (gcall *gs, unsigned index)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
   return &gs->op[index + 3];
 }
 
-static inline tree *
+inline tree *
 gimple_call_arg_ptr (gimple *gs, unsigned index)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3391,14 +3391,14 @@ gimple_call_arg_ptr (gimple *gs, unsigned index)
 
 /* Set ARG to be the argument at position INDEX for call statement GS.  */
 
-static inline void
+inline void
 gimple_call_set_arg (gcall *gs, unsigned index, tree arg)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 3);
   gs->op[index + 3] = arg;
 }
 
-static inline void
+inline void
 gimple_call_set_arg (gimple *gs, unsigned index, tree arg)
 {
   gcall *gc = GIMPLE_CHECK2<gcall *> (gs);
@@ -3410,7 +3410,7 @@ gimple_call_set_arg (gimple *gs, unsigned index, tree arg)
    (i.e., a call just before the exit of a function).  These calls are
    candidate for tail call optimization.  */
 
-static inline void
+inline void
 gimple_call_set_tail (gcall *s, bool tail_p)
 {
   if (tail_p)
@@ -3422,7 +3422,7 @@ gimple_call_set_tail (gcall *s, bool tail_p)
 
 /* Return true if GIMPLE_CALL S is marked as a tail call.  */
 
-static inline bool
+inline bool
 gimple_call_tail_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_TAILCALL) != 0;
@@ -3430,7 +3430,7 @@ gimple_call_tail_p (const gcall *s)
 
 /* Mark (or clear) call statement S as requiring tail call optimization.  */
 
-static inline void
+inline void
 gimple_call_set_must_tail (gcall *s, bool must_tail_p)
 {
   if (must_tail_p)
@@ -3442,7 +3442,7 @@ gimple_call_set_must_tail (gcall *s, bool must_tail_p)
 /* Return true if call statement has been marked as requiring
    tail call optimization.  */
 
-static inline bool
+inline bool
 gimple_call_must_tail_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_MUST_TAIL_CALL) != 0;
@@ -3452,7 +3452,7 @@ gimple_call_must_tail_p (const gcall *s)
    slot optimization.  This transformation uses the target of the call
    expansion as the return slot for calls that return in memory.  */
 
-static inline void
+inline void
 gimple_call_set_return_slot_opt (gcall *s, bool return_slot_opt_p)
 {
   if (return_slot_opt_p)
@@ -3464,7 +3464,7 @@ gimple_call_set_return_slot_opt (gcall *s, bool return_slot_opt_p)
 
 /* Return true if S is marked for return slot optimization.  */
 
-static inline bool
+inline bool
 gimple_call_return_slot_opt_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_RETURN_SLOT_OPT) != 0;
@@ -3474,7 +3474,7 @@ gimple_call_return_slot_opt_p (const gcall *s)
 /* If FROM_THUNK_P is true, mark GIMPLE_CALL S as being the jump from a
    thunk to the thunked-to function.  */
 
-static inline void
+inline void
 gimple_call_set_from_thunk (gcall *s, bool from_thunk_p)
 {
   if (from_thunk_p)
@@ -3486,7 +3486,7 @@ gimple_call_set_from_thunk (gcall *s, bool from_thunk_p)
 
 /* Return true if GIMPLE_CALL S is a jump from a thunk.  */
 
-static inline bool
+inline bool
 gimple_call_from_thunk_p (gcall *s)
 {
   return (s->subcode & GF_CALL_FROM_THUNK) != 0;
@@ -3496,7 +3496,7 @@ gimple_call_from_thunk_p (gcall *s)
 /* If FROM_NEW_OR_DELETE_P is true, mark GIMPLE_CALL S as being a call
    to operator new or delete created from a new or delete expression.  */
 
-static inline void
+inline void
 gimple_call_set_from_new_or_delete (gcall *s, bool from_new_or_delete_p)
 {
   if (from_new_or_delete_p)
@@ -3509,7 +3509,7 @@ gimple_call_set_from_new_or_delete (gcall *s, bool from_new_or_delete_p)
 /* Return true if GIMPLE_CALL S is a call to operator new or delete from
    from a new or delete expression.  */
 
-static inline bool
+inline bool
 gimple_call_from_new_or_delete (const gcall *s)
 {
   return (s->subcode & GF_CALL_FROM_NEW_OR_DELETE) != 0;
@@ -3519,7 +3519,7 @@ gimple_call_from_new_or_delete (const gcall *s)
 /* If PASS_ARG_PACK_P is true, GIMPLE_CALL S is a stdarg call that needs the
    argument pack in its argument list.  */
 
-static inline void
+inline void
 gimple_call_set_va_arg_pack (gcall *s, bool pass_arg_pack_p)
 {
   if (pass_arg_pack_p)
@@ -3532,7 +3532,7 @@ gimple_call_set_va_arg_pack (gcall *s, bool pass_arg_pack_p)
 /* Return true if GIMPLE_CALL S is a stdarg call that needs the
    argument pack in its argument list.  */
 
-static inline bool
+inline bool
 gimple_call_va_arg_pack_p (const gcall *s)
 {
   return (s->subcode & GF_CALL_VA_ARG_PACK) != 0;
@@ -3541,13 +3541,13 @@ gimple_call_va_arg_pack_p (const gcall *s)
 
 /* Return true if S is a noreturn call.  */
 
-static inline bool
+inline bool
 gimple_call_noreturn_p (const gcall *s)
 {
   return (gimple_call_flags (s) & ECF_NORETURN) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_noreturn_p (const gimple *s)
 {
   const gcall *gc = GIMPLE_CHECK2<const gcall *> (s);
@@ -3558,7 +3558,7 @@ gimple_call_noreturn_p (const gimple *s)
 /* If NOTHROW_P is true, GIMPLE_CALL S is a call that is known to not throw
    even if the called function can throw in other cases.  */
 
-static inline void
+inline void
 gimple_call_set_nothrow (gcall *s, bool nothrow_p)
 {
   if (nothrow_p)
@@ -3569,7 +3569,7 @@ gimple_call_set_nothrow (gcall *s, bool nothrow_p)
 
 /* Return true if S is a nothrow call.  */
 
-static inline bool
+inline bool
 gimple_call_nothrow_p (gcall *s)
 {
   return (gimple_call_flags (s) & ECF_NOTHROW) != 0;
@@ -3580,7 +3580,7 @@ gimple_call_nothrow_p (gcall *s)
    stack_save/stack_restore calls and hence can't lead to unbounded
    stack growth even when they occur in loops.  */
 
-static inline void
+inline void
 gimple_call_set_alloca_for_var (gcall *s, bool for_var)
 {
   if (for_var)
@@ -3591,13 +3591,13 @@ gimple_call_set_alloca_for_var (gcall *s, bool for_var)
 
 /* Return true of S is a call to builtin_alloca emitted for VLA objects.  */
 
-static inline bool
+inline bool
 gimple_call_alloca_for_var_p (gcall *s)
 {
   return (s->subcode & GF_CALL_ALLOCA_FOR_VAR) != 0;
 }
 
-static inline bool
+inline bool
 gimple_call_alloca_for_var_p (gimple *s)
 {
   const gcall *gc = GIMPLE_CHECK2<gcall *> (s);
@@ -3607,7 +3607,7 @@ gimple_call_alloca_for_var_p (gimple *s)
 /* If BY_DESCRIPTOR_P is true, GIMPLE_CALL S is an indirect call for which
    pointers to nested function are descriptors instead of trampolines.  */
 
-static inline void
+inline void
 gimple_call_set_by_descriptor (gcall  *s, bool by_descriptor_p)
 {
   if (by_descriptor_p)
@@ -3618,7 +3618,7 @@ gimple_call_set_by_descriptor (gcall  *s, bool by_descriptor_p)
 
 /* Return true if S is a by-descriptor call.  */
 
-static inline bool
+inline bool
 gimple_call_by_descriptor_p (gcall *s)
 {
   return (s->subcode & GF_CALL_BY_DESCRIPTOR) != 0;
@@ -3626,7 +3626,7 @@ gimple_call_by_descriptor_p (gcall *s)
 
 /* Copy all the GF_CALL_* flags from ORIG_CALL to DEST_CALL.  */
 
-static inline void
+inline void
 gimple_call_copy_flags (gcall *dest_call, gcall *orig_call)
 {
   dest_call->subcode = orig_call->subcode;
@@ -3636,7 +3636,7 @@ gimple_call_copy_flags (gcall *dest_call, gcall *orig_call)
 /* Return a pointer to the points-to solution for the set of call-used
    variables of the call CALL_STMT.  */
 
-static inline struct pt_solution *
+inline struct pt_solution *
 gimple_call_use_set (gcall *call_stmt)
 {
   return &call_stmt->call_used;
@@ -3644,7 +3644,7 @@ gimple_call_use_set (gcall *call_stmt)
 
 /* As above, but const.  */
 
-static inline const pt_solution *
+inline const pt_solution *
 gimple_call_use_set (const gcall *call_stmt)
 {
   return &call_stmt->call_used;
@@ -3653,7 +3653,7 @@ gimple_call_use_set (const gcall *call_stmt)
 /* Return a pointer to the points-to solution for the set of call-used
    variables of the call CALL_STMT.  */
 
-static inline struct pt_solution *
+inline struct pt_solution *
 gimple_call_clobber_set (gcall *call_stmt)
 {
   return &call_stmt->call_clobbered;
@@ -3661,7 +3661,7 @@ gimple_call_clobber_set (gcall *call_stmt)
 
 /* As above, but const.  */
 
-static inline const pt_solution *
+inline const pt_solution *
 gimple_call_clobber_set (const gcall *call_stmt)
 {
   return &call_stmt->call_clobbered;
@@ -3671,7 +3671,7 @@ gimple_call_clobber_set (const gcall *call_stmt)
 /* Returns true if this is a GIMPLE_ASSIGN or a GIMPLE_CALL with a
    non-NULL lhs.  */
 
-static inline bool
+inline bool
 gimple_has_lhs (const gimple *stmt)
 {
   if (is_gimple_assign (stmt))
@@ -3684,13 +3684,13 @@ gimple_has_lhs (const gimple *stmt)
 
 /* Return the code of the predicate computed by conditional statement GS.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_cond_code (const gcond *gs)
 {
   return (enum tree_code) gs->subcode;
 }
 
-static inline enum tree_code
+inline enum tree_code
 gimple_cond_code (const gimple *gs)
 {
   const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
@@ -3700,7 +3700,7 @@ gimple_cond_code (const gimple *gs)
 
 /* Set CODE to be the predicate code for the conditional statement GS.  */
 
-static inline void
+inline void
 gimple_cond_set_code (gcond *gs, enum tree_code code)
 {
   gs->subcode = code;
@@ -3709,13 +3709,13 @@ gimple_cond_set_code (gcond *gs, enum tree_code code)
 
 /* Return the LHS of the predicate computed by conditional statement GS.  */
 
-static inline tree
+inline tree
 gimple_cond_lhs (const gcond *gs)
 {
   return gs->op[0];
 }
 
-static inline tree
+inline tree
 gimple_cond_lhs (const gimple *gs)
 {
   const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
@@ -3725,7 +3725,7 @@ gimple_cond_lhs (const gimple *gs)
 /* Return the pointer to the LHS of the predicate computed by conditional
    statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_cond_lhs_ptr (gcond *gs)
 {
   return &gs->op[0];
@@ -3734,7 +3734,7 @@ gimple_cond_lhs_ptr (gcond *gs)
 /* Set LHS to be the LHS operand of the predicate computed by
    conditional statement GS.  */
 
-static inline void
+inline void
 gimple_cond_set_lhs (gcond *gs, tree lhs)
 {
   gs->op[0] = lhs;
@@ -3743,13 +3743,13 @@ gimple_cond_set_lhs (gcond *gs, tree lhs)
 
 /* Return the RHS operand of the predicate computed by conditional GS.  */
 
-static inline tree
+inline tree
 gimple_cond_rhs (const gcond *gs)
 {
   return gs->op[1];
 }
 
-static inline tree
+inline tree
 gimple_cond_rhs (const gimple *gs)
 {
   const gcond *gc = GIMPLE_CHECK2<const gcond *> (gs);
@@ -3759,7 +3759,7 @@ gimple_cond_rhs (const gimple *gs)
 /* Return the pointer to the RHS operand of the predicate computed by
    conditional GS.  */
 
-static inline tree *
+inline tree *
 gimple_cond_rhs_ptr (gcond *gs)
 {
   return &gs->op[1];
@@ -3769,7 +3769,7 @@ gimple_cond_rhs_ptr (gcond *gs)
 /* Set RHS to be the RHS operand of the predicate computed by
    conditional statement GS.  */
 
-static inline void
+inline void
 gimple_cond_set_rhs (gcond *gs, tree rhs)
 {
   gs->op[1] = rhs;
@@ -3779,7 +3779,7 @@ gimple_cond_set_rhs (gcond *gs, tree rhs)
 /* Return the label used by conditional statement GS when its
    predicate evaluates to true.  */
 
-static inline tree
+inline tree
 gimple_cond_true_label (const gcond *gs)
 {
   return gs->op[2];
@@ -3789,7 +3789,7 @@ gimple_cond_true_label (const gcond *gs)
 /* Set LABEL to be the label used by conditional statement GS when its
    predicate evaluates to true.  */
 
-static inline void
+inline void
 gimple_cond_set_true_label (gcond *gs, tree label)
 {
   gs->op[2] = label;
@@ -3799,7 +3799,7 @@ gimple_cond_set_true_label (gcond *gs, tree label)
 /* Set LABEL to be the label used by conditional statement GS when its
    predicate evaluates to false.  */
 
-static inline void
+inline void
 gimple_cond_set_false_label (gcond *gs, tree label)
 {
   gs->op[3] = label;
@@ -3809,7 +3809,7 @@ gimple_cond_set_false_label (gcond *gs, tree label)
 /* Return the label used by conditional statement GS when its
    predicate evaluates to false.  */
 
-static inline tree
+inline tree
 gimple_cond_false_label (const gcond *gs)
 {
   return gs->op[3];
@@ -3818,7 +3818,7 @@ gimple_cond_false_label (const gcond *gs)
 
 /* Set the conditional COND_STMT to be of the form 'if (1 == 0)'.  */
 
-static inline void
+inline void
 gimple_cond_make_false (gcond *gs)
 {
   gimple_cond_set_lhs (gs, boolean_false_node);
@@ -3829,7 +3829,7 @@ gimple_cond_make_false (gcond *gs)
 
 /* Set the conditional COND_STMT to be of the form 'if (1 == 1)'.  */
 
-static inline void
+inline void
 gimple_cond_make_true (gcond *gs)
 {
   gimple_cond_set_lhs (gs, boolean_true_node);
@@ -3840,7 +3840,7 @@ gimple_cond_make_true (gcond *gs)
 /* Check if conditional statemente GS is of the form 'if (1 == 1)',
   'if (0 == 0)', 'if (1 != 0)' or 'if (0 != 1)' */
 
-static inline bool
+inline bool
 gimple_cond_true_p (const gcond *gs)
 {
   tree lhs = gimple_cond_lhs (gs);
@@ -3865,7 +3865,7 @@ gimple_cond_true_p (const gcond *gs)
 /* Check if conditional statement GS is of the form 'if (1 != 1)',
    'if (0 != 0)', 'if (1 == 0)' or 'if (0 == 1)' */
 
-static inline bool
+inline bool
 gimple_cond_false_p (const gcond *gs)
 {
   tree lhs = gimple_cond_lhs (gs);
@@ -3889,7 +3889,7 @@ gimple_cond_false_p (const gcond *gs)
 
 /* Set the code, LHS and RHS of GIMPLE_COND STMT from CODE, LHS and RHS.  */
 
-static inline void
+inline void
 gimple_cond_set_condition (gcond *stmt, enum tree_code code, tree lhs,
 			   tree rhs)
 {
@@ -3905,7 +3905,7 @@ gimple_cond_set_condition (gcond *stmt, enum tree_code code, tree lhs,
    consistency.  This is useful when the caller needs to deal with the
    three kinds of computation that GIMPLE supports.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_expr_code (const gimple *stmt)
 {
   if (const gassign *ass = dyn_cast<const gassign *> (stmt))
@@ -3922,7 +3922,7 @@ gimple_expr_code (const gimple *stmt)
 
 /* Return the LABEL_DECL node used by GIMPLE_LABEL statement GS.  */
 
-static inline tree
+inline tree
 gimple_label_label (const glabel *gs)
 {
   return gs->op[0];
@@ -3932,7 +3932,7 @@ gimple_label_label (const glabel *gs)
 /* Set LABEL to be the LABEL_DECL node used by GIMPLE_LABEL statement
    GS.  */
 
-static inline void
+inline void
 gimple_label_set_label (glabel *gs, tree label)
 {
   gs->op[0] = label;
@@ -3941,7 +3941,7 @@ gimple_label_set_label (glabel *gs, tree label)
 
 /* Return the destination of the unconditional jump GS.  */
 
-static inline tree
+inline tree
 gimple_goto_dest (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_GOTO);
@@ -3951,7 +3951,7 @@ gimple_goto_dest (const gimple *gs)
 
 /* Set DEST to be the destination of the unconditonal jump GS.  */
 
-static inline void
+inline void
 gimple_goto_set_dest (ggoto *gs, tree dest)
 {
   gs->op[0] = dest;
@@ -3960,7 +3960,7 @@ gimple_goto_set_dest (ggoto *gs, tree dest)
 
 /* Return the variables declared in the GIMPLE_BIND statement GS.  */
 
-static inline tree
+inline tree
 gimple_bind_vars (const gbind *bind_stmt)
 {
   return bind_stmt->vars;
@@ -3970,7 +3970,7 @@ gimple_bind_vars (const gbind *bind_stmt)
 /* Set VARS to be the set of variables declared in the GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_set_vars (gbind *bind_stmt, tree vars)
 {
   bind_stmt->vars = vars;
@@ -3980,14 +3980,14 @@ gimple_bind_set_vars (gbind *bind_stmt, tree vars)
 /* Append VARS to the set of variables declared in the GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_append_vars (gbind *bind_stmt, tree vars)
 {
   bind_stmt->vars = chainon (bind_stmt->vars, vars);
 }
 
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_bind_body_ptr (gbind *bind_stmt)
 {
   return &bind_stmt->body;
@@ -3995,7 +3995,7 @@ gimple_bind_body_ptr (gbind *bind_stmt)
 
 /* Return the GIMPLE sequence contained in the GIMPLE_BIND statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_bind_body (const gbind *gs)
 {
   return *gimple_bind_body_ptr (const_cast <gbind *> (gs));
@@ -4005,7 +4005,7 @@ gimple_bind_body (const gbind *gs)
 /* Set SEQ to be the GIMPLE sequence contained in the GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_set_body (gbind *bind_stmt, gimple_seq seq)
 {
   bind_stmt->body = seq;
@@ -4014,7 +4014,7 @@ gimple_bind_set_body (gbind *bind_stmt, gimple_seq seq)
 
 /* Append a statement to the end of a GIMPLE_BIND's body.  */
 
-static inline void
+inline void
 gimple_bind_add_stmt (gbind *bind_stmt, gimple *stmt)
 {
   gimple_seq_add_stmt (&bind_stmt->body, stmt);
@@ -4023,7 +4023,7 @@ gimple_bind_add_stmt (gbind *bind_stmt, gimple *stmt)
 
 /* Append a sequence of statements to the end of a GIMPLE_BIND's body.  */
 
-static inline void
+inline void
 gimple_bind_add_seq (gbind *bind_stmt, gimple_seq seq)
 {
   gimple_seq_add_seq (&bind_stmt->body, seq);
@@ -4033,7 +4033,7 @@ gimple_bind_add_seq (gbind *bind_stmt, gimple_seq seq)
 /* Return the TREE_BLOCK node associated with GIMPLE_BIND statement
    GS.  This is analogous to the BIND_EXPR_BLOCK field in trees.  */
 
-static inline tree
+inline tree
 gimple_bind_block (const gbind *bind_stmt)
 {
   return bind_stmt->block;
@@ -4043,7 +4043,7 @@ gimple_bind_block (const gbind *bind_stmt)
 /* Set BLOCK to be the TREE_BLOCK node associated with GIMPLE_BIND
    statement GS.  */
 
-static inline void
+inline void
 gimple_bind_set_block (gbind *bind_stmt, tree block)
 {
   gcc_gimple_checking_assert (block == NULL_TREE
@@ -4054,7 +4054,7 @@ gimple_bind_set_block (gbind *bind_stmt, tree block)
 
 /* Return the number of input operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_ninputs (const gasm *asm_stmt)
 {
   return asm_stmt->ni;
@@ -4063,7 +4063,7 @@ gimple_asm_ninputs (const gasm *asm_stmt)
 
 /* Return the number of output operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_noutputs (const gasm *asm_stmt)
 {
   return asm_stmt->no;
@@ -4072,7 +4072,7 @@ gimple_asm_noutputs (const gasm *asm_stmt)
 
 /* Return the number of clobber operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_nclobbers (const gasm *asm_stmt)
 {
   return asm_stmt->nc;
@@ -4080,7 +4080,7 @@ gimple_asm_nclobbers (const gasm *asm_stmt)
 
 /* Return the number of label operands for GIMPLE_ASM ASM_STMT.  */
 
-static inline unsigned
+inline unsigned
 gimple_asm_nlabels (const gasm *asm_stmt)
 {
   return asm_stmt->nl;
@@ -4088,7 +4088,7 @@ gimple_asm_nlabels (const gasm *asm_stmt)
 
 /* Return input operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_input_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->ni);
@@ -4097,7 +4097,7 @@ gimple_asm_input_op (const gasm *asm_stmt, unsigned index)
 
 /* Set IN_OP to be input operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_input_op (gasm *asm_stmt, unsigned index, tree in_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->ni
@@ -4108,7 +4108,7 @@ gimple_asm_set_input_op (gasm *asm_stmt, unsigned index, tree in_op)
 
 /* Return output operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_output_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->no);
@@ -4117,7 +4117,7 @@ gimple_asm_output_op (const gasm *asm_stmt, unsigned index)
 
 /* Set OUT_OP to be output operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_output_op (gasm *asm_stmt, unsigned index, tree out_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->no
@@ -4128,7 +4128,7 @@ gimple_asm_set_output_op (gasm *asm_stmt, unsigned index, tree out_op)
 
 /* Return clobber operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_clobber_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nc);
@@ -4138,7 +4138,7 @@ gimple_asm_clobber_op (const gasm *asm_stmt, unsigned index)
 
 /* Set CLOBBER_OP to be clobber operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_clobber_op (gasm *asm_stmt, unsigned index, tree clobber_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nc
@@ -4148,7 +4148,7 @@ gimple_asm_set_clobber_op (gasm *asm_stmt, unsigned index, tree clobber_op)
 
 /* Return label operand INDEX of GIMPLE_ASM ASM_STMT.  */
 
-static inline tree
+inline tree
 gimple_asm_label_op (const gasm *asm_stmt, unsigned index)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nl);
@@ -4157,7 +4157,7 @@ gimple_asm_label_op (const gasm *asm_stmt, unsigned index)
 
 /* Set LABEL_OP to be label operand INDEX in GIMPLE_ASM ASM_STMT.  */
 
-static inline void
+inline void
 gimple_asm_set_label_op (gasm *asm_stmt, unsigned index, tree label_op)
 {
   gcc_gimple_checking_assert (index < asm_stmt->nl
@@ -4168,7 +4168,7 @@ gimple_asm_set_label_op (gasm *asm_stmt, unsigned index, tree label_op)
 /* Return the string representing the assembly instruction in
    GIMPLE_ASM ASM_STMT.  */
 
-static inline const char *
+inline const char *
 gimple_asm_string (const gasm *asm_stmt)
 {
   return asm_stmt->string;
@@ -4177,7 +4177,7 @@ gimple_asm_string (const gasm *asm_stmt)
 
 /* Return true if ASM_STMT is marked volatile.  */
 
-static inline bool
+inline bool
 gimple_asm_volatile_p (const gasm *asm_stmt)
 {
   return (asm_stmt->subcode & GF_ASM_VOLATILE) != 0;
@@ -4186,7 +4186,7 @@ gimple_asm_volatile_p (const gasm *asm_stmt)
 
 /* If VOLATILE_P is true, mark asm statement ASM_STMT as volatile.  */
 
-static inline void
+inline void
 gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
 {
   if (volatile_p)
@@ -4198,7 +4198,7 @@ gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p)
 
 /* Return true if ASM_STMT is marked inline.  */
 
-static inline bool
+inline bool
 gimple_asm_inline_p (const gasm *asm_stmt)
 {
   return (asm_stmt->subcode & GF_ASM_INLINE) != 0;
@@ -4207,7 +4207,7 @@ gimple_asm_inline_p (const gasm *asm_stmt)
 
 /* If INLINE_P is true, mark asm statement ASM_STMT as inline.  */
 
-static inline void
+inline void
 gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
 {
   if (inline_p)
@@ -4219,7 +4219,7 @@ gimple_asm_set_inline (gasm *asm_stmt, bool inline_p)
 
 /* If INPUT_P is true, mark asm ASM_STMT as an ASM_INPUT.  */
 
-static inline void
+inline void
 gimple_asm_set_input (gasm *asm_stmt, bool input_p)
 {
   if (input_p)
@@ -4231,7 +4231,7 @@ gimple_asm_set_input (gasm *asm_stmt, bool input_p)
 
 /* Return true if asm ASM_STMT is an ASM_INPUT.  */
 
-static inline bool
+inline bool
 gimple_asm_input_p (const gasm *asm_stmt)
 {
   return (asm_stmt->subcode & GF_ASM_INPUT) != 0;
@@ -4240,7 +4240,7 @@ gimple_asm_input_p (const gasm *asm_stmt)
 
 /* Return the types handled by GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline tree
+inline tree
 gimple_catch_types (const gcatch *catch_stmt)
 {
   return catch_stmt->types;
@@ -4249,7 +4249,7 @@ gimple_catch_types (const gcatch *catch_stmt)
 
 /* Return a pointer to the types handled by GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_catch_types_ptr (gcatch *catch_stmt)
 {
   return &catch_stmt->types;
@@ -4259,7 +4259,7 @@ gimple_catch_types_ptr (gcatch *catch_stmt)
 /* Return a pointer to the GIMPLE sequence representing the body of
    the handler of GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_catch_handler_ptr (gcatch *catch_stmt)
 {
   return &catch_stmt->handler;
@@ -4269,7 +4269,7 @@ gimple_catch_handler_ptr (gcatch *catch_stmt)
 /* Return the GIMPLE sequence representing the body of the handler of
    GIMPLE_CATCH statement CATCH_STMT.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_catch_handler (const gcatch *catch_stmt)
 {
   return *gimple_catch_handler_ptr (const_cast <gcatch *> (catch_stmt));
@@ -4278,7 +4278,7 @@ gimple_catch_handler (const gcatch *catch_stmt)
 
 /* Set T to be the set of types handled by GIMPLE_CATCH CATCH_STMT.  */
 
-static inline void
+inline void
 gimple_catch_set_types (gcatch *catch_stmt, tree t)
 {
   catch_stmt->types = t;
@@ -4287,7 +4287,7 @@ gimple_catch_set_types (gcatch *catch_stmt, tree t)
 
 /* Set HANDLER to be the body of GIMPLE_CATCH CATCH_STMT.  */
 
-static inline void
+inline void
 gimple_catch_set_handler (gcatch *catch_stmt, gimple_seq handler)
 {
   catch_stmt->handler = handler;
@@ -4296,7 +4296,7 @@ gimple_catch_set_handler (gcatch *catch_stmt, gimple_seq handler)
 
 /* Return the types handled by GIMPLE_EH_FILTER statement GS.  */
 
-static inline tree
+inline tree
 gimple_eh_filter_types (const gimple *gs)
 {
   const geh_filter *eh_filter_stmt = as_a <const geh_filter *> (gs);
@@ -4307,7 +4307,7 @@ gimple_eh_filter_types (const gimple *gs)
 /* Return a pointer to the types handled by GIMPLE_EH_FILTER statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_eh_filter_types_ptr (gimple *gs)
 {
   geh_filter *eh_filter_stmt = as_a <geh_filter *> (gs);
@@ -4318,7 +4318,7 @@ gimple_eh_filter_types_ptr (gimple *gs)
 /* Return a pointer to the sequence of statement to execute when
    GIMPLE_EH_FILTER statement fails.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_eh_filter_failure_ptr (gimple *gs)
 {
   geh_filter *eh_filter_stmt = as_a <geh_filter *> (gs);
@@ -4329,7 +4329,7 @@ gimple_eh_filter_failure_ptr (gimple *gs)
 /* Return the sequence of statement to execute when GIMPLE_EH_FILTER
    statement fails.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_eh_filter_failure (const gimple *gs)
 {
   return *gimple_eh_filter_failure_ptr (const_cast <gimple *> (gs));
@@ -4339,7 +4339,7 @@ gimple_eh_filter_failure (const gimple *gs)
 /* Set TYPES to be the set of types handled by GIMPLE_EH_FILTER
    EH_FILTER_STMT.  */
 
-static inline void
+inline void
 gimple_eh_filter_set_types (geh_filter *eh_filter_stmt, tree types)
 {
   eh_filter_stmt->types = types;
@@ -4349,7 +4349,7 @@ gimple_eh_filter_set_types (geh_filter *eh_filter_stmt, tree types)
 /* Set FAILURE to be the sequence of statements to execute on failure
    for GIMPLE_EH_FILTER EH_FILTER_STMT.  */
 
-static inline void
+inline void
 gimple_eh_filter_set_failure (geh_filter *eh_filter_stmt,
 			      gimple_seq failure)
 {
@@ -4358,7 +4358,7 @@ gimple_eh_filter_set_failure (geh_filter *eh_filter_stmt,
 
 /* Get the function decl to be called by the MUST_NOT_THROW region.  */
 
-static inline tree
+inline tree
 gimple_eh_must_not_throw_fndecl (const geh_mnt *eh_mnt_stmt)
 {
   return eh_mnt_stmt->fndecl;
@@ -4366,7 +4366,7 @@ gimple_eh_must_not_throw_fndecl (const geh_mnt *eh_mnt_stmt)
 
 /* Set the function decl to be called by GS to DECL.  */
 
-static inline void
+inline void
 gimple_eh_must_not_throw_set_fndecl (geh_mnt *eh_mnt_stmt,
 				     tree decl)
 {
@@ -4375,37 +4375,37 @@ gimple_eh_must_not_throw_set_fndecl (geh_mnt *eh_mnt_stmt,
 
 /* GIMPLE_EH_ELSE accessors.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_eh_else_n_body_ptr (geh_else *eh_else_stmt)
 {
   return &eh_else_stmt->n_body;
 }
 
-static inline gimple_seq
+inline gimple_seq
 gimple_eh_else_n_body (const geh_else *eh_else_stmt)
 {
   return *gimple_eh_else_n_body_ptr (const_cast <geh_else *> (eh_else_stmt));
 }
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_eh_else_e_body_ptr (geh_else *eh_else_stmt)
 {
   return &eh_else_stmt->e_body;
 }
 
-static inline gimple_seq
+inline gimple_seq
 gimple_eh_else_e_body (const geh_else *eh_else_stmt)
 {
   return *gimple_eh_else_e_body_ptr (const_cast <geh_else *> (eh_else_stmt));
 }
 
-static inline void
+inline void
 gimple_eh_else_set_n_body (geh_else *eh_else_stmt, gimple_seq seq)
 {
   eh_else_stmt->n_body = seq;
 }
 
-static inline void
+inline void
 gimple_eh_else_set_e_body (geh_else *eh_else_stmt, gimple_seq seq)
 {
   eh_else_stmt->e_body = seq;
@@ -4416,7 +4416,7 @@ gimple_eh_else_set_e_body (geh_else *eh_else_stmt, gimple_seq seq)
 /* Return the kind of try block represented by GIMPLE_TRY GS.  This is
    either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY.  */
 
-static inline enum gimple_try_flags
+inline enum gimple_try_flags
 gimple_try_kind (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_TRY);
@@ -4426,7 +4426,7 @@ gimple_try_kind (const gimple *gs)
 
 /* Set the kind of try block represented by GIMPLE_TRY GS.  */
 
-static inline void
+inline void
 gimple_try_set_kind (gtry *gs, enum gimple_try_flags kind)
 {
   gcc_gimple_checking_assert (kind == GIMPLE_TRY_CATCH
@@ -4438,7 +4438,7 @@ gimple_try_set_kind (gtry *gs, enum gimple_try_flags kind)
 
 /* Return the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
 
-static inline bool
+inline bool
 gimple_try_catch_is_cleanup (const gimple *gs)
 {
   gcc_gimple_checking_assert (gimple_try_kind (gs) == GIMPLE_TRY_CATCH);
@@ -4449,7 +4449,7 @@ gimple_try_catch_is_cleanup (const gimple *gs)
 /* Return a pointer to the sequence of statements used as the
    body for GIMPLE_TRY GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_try_eval_ptr (gimple *gs)
 {
   gtry *try_stmt = as_a <gtry *> (gs);
@@ -4459,7 +4459,7 @@ gimple_try_eval_ptr (gimple *gs)
 
 /* Return the sequence of statements used as the body for GIMPLE_TRY GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_try_eval (const gimple *gs)
 {
   return *gimple_try_eval_ptr (const_cast <gimple *> (gs));
@@ -4469,7 +4469,7 @@ gimple_try_eval (const gimple *gs)
 /* Return a pointer to the sequence of statements used as the cleanup body for
    GIMPLE_TRY GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_try_cleanup_ptr (gimple *gs)
 {
   gtry *try_stmt = as_a <gtry *> (gs);
@@ -4480,7 +4480,7 @@ gimple_try_cleanup_ptr (gimple *gs)
 /* Return the sequence of statements used as the cleanup body for
    GIMPLE_TRY GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_try_cleanup (const gimple *gs)
 {
   return *gimple_try_cleanup_ptr (const_cast <gimple *> (gs));
@@ -4489,7 +4489,7 @@ gimple_try_cleanup (const gimple *gs)
 
 /* Set the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  */
 
-static inline void
+inline void
 gimple_try_set_catch_is_cleanup (gtry *g, bool catch_is_cleanup)
 {
   gcc_gimple_checking_assert (gimple_try_kind (g) == GIMPLE_TRY_CATCH);
@@ -4503,7 +4503,7 @@ gimple_try_set_catch_is_cleanup (gtry *g, bool catch_is_cleanup)
 /* Set EVAL to be the sequence of statements to use as the body for
    GIMPLE_TRY TRY_STMT.  */
 
-static inline void
+inline void
 gimple_try_set_eval (gtry *try_stmt, gimple_seq eval)
 {
   try_stmt->eval = eval;
@@ -4513,7 +4513,7 @@ gimple_try_set_eval (gtry *try_stmt, gimple_seq eval)
 /* Set CLEANUP to be the sequence of statements to use as the cleanup
    body for GIMPLE_TRY TRY_STMT.  */
 
-static inline void
+inline void
 gimple_try_set_cleanup (gtry *try_stmt, gimple_seq cleanup)
 {
   try_stmt->cleanup = cleanup;
@@ -4522,7 +4522,7 @@ gimple_try_set_cleanup (gtry *try_stmt, gimple_seq cleanup)
 
 /* Return a pointer to the cleanup sequence for cleanup statement GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_wce_cleanup_ptr (gimple *gs)
 {
   gimple_statement_wce *wce_stmt = as_a <gimple_statement_wce *> (gs);
@@ -4532,7 +4532,7 @@ gimple_wce_cleanup_ptr (gimple *gs)
 
 /* Return the cleanup sequence for cleanup statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_wce_cleanup (gimple *gs)
 {
   return *gimple_wce_cleanup_ptr (gs);
@@ -4541,7 +4541,7 @@ gimple_wce_cleanup (gimple *gs)
 
 /* Set CLEANUP to be the cleanup sequence for GS.  */
 
-static inline void
+inline void
 gimple_wce_set_cleanup (gimple *gs, gimple_seq cleanup)
 {
   gimple_statement_wce *wce_stmt = as_a <gimple_statement_wce *> (gs);
@@ -4551,7 +4551,7 @@ gimple_wce_set_cleanup (gimple *gs, gimple_seq cleanup)
 
 /* Return the CLEANUP_EH_ONLY flag for a WCE tuple.  */
 
-static inline bool
+inline bool
 gimple_wce_cleanup_eh_only (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
@@ -4561,7 +4561,7 @@ gimple_wce_cleanup_eh_only (const gimple *gs)
 
 /* Set the CLEANUP_EH_ONLY flag for a WCE tuple.  */
 
-static inline void
+inline void
 gimple_wce_set_cleanup_eh_only (gimple *gs, bool eh_only_p)
 {
   GIMPLE_CHECK (gs, GIMPLE_WITH_CLEANUP_EXPR);
@@ -4571,7 +4571,7 @@ gimple_wce_set_cleanup_eh_only (gimple *gs, bool eh_only_p)
 
 /* Return the maximum number of arguments supported by GIMPLE_PHI GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_phi_capacity (const gimple *gs)
 {
   const gphi *phi_stmt = as_a <const gphi *> (gs);
@@ -4583,7 +4583,7 @@ gimple_phi_capacity (const gimple *gs)
    be exactly the number of incoming edges for the basic block holding
    GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_phi_num_args (const gimple *gs)
 {
   const gphi *phi_stmt = as_a <const gphi *> (gs);
@@ -4593,13 +4593,13 @@ gimple_phi_num_args (const gimple *gs)
 
 /* Return the SSA name created by GIMPLE_PHI GS.  */
 
-static inline tree
+inline tree
 gimple_phi_result (const gphi *gs)
 {
   return gs->result;
 }
 
-static inline tree
+inline tree
 gimple_phi_result (const gimple *gs)
 {
   const gphi *phi_stmt = as_a <const gphi *> (gs);
@@ -4608,13 +4608,13 @@ gimple_phi_result (const gimple *gs)
 
 /* Return a pointer to the SSA name created by GIMPLE_PHI GS.  */
 
-static inline tree *
+inline tree *
 gimple_phi_result_ptr (gphi *gs)
 {
   return &gs->result;
 }
 
-static inline tree *
+inline tree *
 gimple_phi_result_ptr (gimple *gs)
 {
   gphi *phi_stmt = as_a <gphi *> (gs);
@@ -4623,7 +4623,7 @@ gimple_phi_result_ptr (gimple *gs)
 
 /* Set RESULT to be the SSA name created by GIMPLE_PHI PHI.  */
 
-static inline void
+inline void
 gimple_phi_set_result (gphi *phi, tree result)
 {
   phi->result = result;
@@ -4635,21 +4635,21 @@ gimple_phi_set_result (gphi *phi, tree result)
 /* Return the PHI argument corresponding to incoming edge INDEX for
    GIMPLE_PHI GS.  */
 
-static inline struct phi_arg_d *
+inline struct phi_arg_d *
 gimple_phi_arg (gphi *gs, unsigned index)
 {
   gcc_gimple_checking_assert (index < gs->nargs);
   return &(gs->args[index]);
 }
 
-static inline const phi_arg_d *
+inline const phi_arg_d *
 gimple_phi_arg (const gphi *gs, unsigned index)
 {
   gcc_gimple_checking_assert (index < gs->nargs);
   return &(gs->args[index]);
 }
 
-static inline struct phi_arg_d *
+inline struct phi_arg_d *
 gimple_phi_arg (gimple *gs, unsigned index)
 {
   gphi *phi_stmt = as_a <gphi *> (gs);
@@ -4659,7 +4659,7 @@ gimple_phi_arg (gimple *gs, unsigned index)
 /* Set PHIARG to be the argument corresponding to incoming edge INDEX
    for GIMPLE_PHI PHI.  */
 
-static inline void
+inline void
 gimple_phi_set_arg (gphi *phi, unsigned index, struct phi_arg_d * phiarg)
 {
   gcc_gimple_checking_assert (index < phi->nargs);
@@ -4669,7 +4669,7 @@ gimple_phi_set_arg (gphi *phi, unsigned index, struct phi_arg_d * phiarg)
 /* Return the PHI nodes for basic block BB, or NULL if there are no
    PHI nodes.  */
 
-static inline gimple_seq
+inline gimple_seq
 phi_nodes (const_basic_block bb)
 {
   gcc_checking_assert (!(bb->flags & BB_RTL));
@@ -4678,7 +4678,7 @@ phi_nodes (const_basic_block bb)
 
 /* Return a pointer to the PHI nodes for basic block BB.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 phi_nodes_ptr (basic_block bb)
 {
   gcc_checking_assert (!(bb->flags & BB_RTL));
@@ -4687,13 +4687,13 @@ phi_nodes_ptr (basic_block bb)
 
 /* Return the tree operand for argument I of PHI node GS.  */
 
-static inline tree
+inline tree
 gimple_phi_arg_def (const gphi *gs, size_t index)
 {
   return gimple_phi_arg (gs, index)->def;
 }
 
-static inline tree
+inline tree
 gimple_phi_arg_def (gimple *gs, size_t index)
 {
   return gimple_phi_arg (gs, index)->def;
@@ -4702,7 +4702,7 @@ gimple_phi_arg_def (gimple *gs, size_t index)
 
 /* Return a pointer to the tree operand for argument I of phi node PHI.  */
 
-static inline tree *
+inline tree *
 gimple_phi_arg_def_ptr (gphi *phi, size_t index)
 {
   return &gimple_phi_arg (phi, index)->def;
@@ -4710,7 +4710,7 @@ gimple_phi_arg_def_ptr (gphi *phi, size_t index)
 
 /* Return the edge associated with argument I of phi node PHI.  */
 
-static inline edge
+inline edge
 gimple_phi_arg_edge (const gphi *phi, size_t i)
 {
   return EDGE_PRED (gimple_bb (phi), i);
@@ -4718,7 +4718,7 @@ gimple_phi_arg_edge (const gphi *phi, size_t i)
 
 /* Return the source location of gimple argument I of phi node PHI.  */
 
-static inline location_t
+inline location_t
 gimple_phi_arg_location (const gphi *phi, size_t i)
 {
   return gimple_phi_arg (phi, i)->locus;
@@ -4726,7 +4726,7 @@ gimple_phi_arg_location (const gphi *phi, size_t i)
 
 /* Return the source location of the argument on edge E of phi node PHI.  */
 
-static inline location_t
+inline location_t
 gimple_phi_arg_location_from_edge (gphi *phi, edge e)
 {
   return gimple_phi_arg (phi, e->dest_idx)->locus;
@@ -4734,7 +4734,7 @@ gimple_phi_arg_location_from_edge (gphi *phi, edge e)
 
 /* Set the source location of gimple argument I of phi node PHI to LOC.  */
 
-static inline void
+inline void
 gimple_phi_arg_set_location (gphi *phi, size_t i, location_t loc)
 {
   gimple_phi_arg (phi, i)->locus = loc;
@@ -4742,7 +4742,7 @@ gimple_phi_arg_set_location (gphi *phi, size_t i, location_t loc)
 
 /* Return address of source location of gimple argument I of phi node PHI.  */
 
-static inline location_t *
+inline location_t *
 gimple_phi_arg_location_ptr (gphi *phi, size_t i)
 {
   return &gimple_phi_arg (phi, i)->locus;
@@ -4750,7 +4750,7 @@ gimple_phi_arg_location_ptr (gphi *phi, size_t i)
 
 /* Return TRUE if argument I of phi node PHI has a location record.  */
 
-static inline bool
+inline bool
 gimple_phi_arg_has_location (const gphi *phi, size_t i)
 {
   return gimple_phi_arg_location (phi, i) != UNKNOWN_LOCATION;
@@ -4758,7 +4758,7 @@ gimple_phi_arg_has_location (const gphi *phi, size_t i)
 
 /* Return the number of arguments that can be accessed by gimple_arg.  */
 
-static inline unsigned
+inline unsigned
 gimple_num_args (const gimple *gs)
 {
   if (auto phi = dyn_cast<const gphi *> (gs))
@@ -4773,7 +4773,7 @@ gimple_num_args (const gimple *gs)
    If it's a call, return function argument I.
    If it's a PHI, return the value of PHI argument I.  */
 
-static inline tree
+inline tree
 gimple_arg (const gimple *gs, unsigned int i)
 {
   if (auto phi = dyn_cast<const gphi *> (gs))
@@ -4785,7 +4785,7 @@ gimple_arg (const gimple *gs, unsigned int i)
 
 /* Return a pointer to gimple_arg (GS, I).  */
 
-static inline tree *
+inline tree *
 gimple_arg_ptr (gimple *gs, unsigned int i)
 {
   if (auto phi = dyn_cast<gphi *> (gs))
@@ -4797,7 +4797,7 @@ gimple_arg_ptr (gimple *gs, unsigned int i)
 
 /* Return the region number for GIMPLE_RESX RESX_STMT.  */
 
-static inline int
+inline int
 gimple_resx_region (const gresx *resx_stmt)
 {
   return resx_stmt->region;
@@ -4805,7 +4805,7 @@ gimple_resx_region (const gresx *resx_stmt)
 
 /* Set REGION to be the region number for GIMPLE_RESX RESX_STMT.  */
 
-static inline void
+inline void
 gimple_resx_set_region (gresx *resx_stmt, int region)
 {
   resx_stmt->region = region;
@@ -4813,7 +4813,7 @@ gimple_resx_set_region (gresx *resx_stmt, int region)
 
 /* Return the region number for GIMPLE_EH_DISPATCH EH_DISPATCH_STMT.  */
 
-static inline int
+inline int
 gimple_eh_dispatch_region (const geh_dispatch *eh_dispatch_stmt)
 {
   return eh_dispatch_stmt->region;
@@ -4822,7 +4822,7 @@ gimple_eh_dispatch_region (const geh_dispatch *eh_dispatch_stmt)
 /* Set REGION to be the region number for GIMPLE_EH_DISPATCH
    EH_DISPATCH_STMT.  */
 
-static inline void
+inline void
 gimple_eh_dispatch_set_region (geh_dispatch *eh_dispatch_stmt, int region)
 {
   eh_dispatch_stmt->region = region;
@@ -4830,7 +4830,7 @@ gimple_eh_dispatch_set_region (geh_dispatch *eh_dispatch_stmt, int region)
 
 /* Return the number of labels associated with the switch statement GS.  */
 
-static inline unsigned
+inline unsigned
 gimple_switch_num_labels (const gswitch *gs)
 {
   unsigned num_ops;
@@ -4843,7 +4843,7 @@ gimple_switch_num_labels (const gswitch *gs)
 
 /* Set NLABELS to be the number of labels for the switch statement GS.  */
 
-static inline void
+inline void
 gimple_switch_set_num_labels (gswitch *g, unsigned nlabels)
 {
   GIMPLE_CHECK (g, GIMPLE_SWITCH);
@@ -4853,7 +4853,7 @@ gimple_switch_set_num_labels (gswitch *g, unsigned nlabels)
 
 /* Return the index variable used by the switch statement GS.  */
 
-static inline tree
+inline tree
 gimple_switch_index (const gswitch *gs)
 {
   return gs->op[0];
@@ -4862,7 +4862,7 @@ gimple_switch_index (const gswitch *gs)
 
 /* Return a pointer to the index variable for the switch statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_switch_index_ptr (gswitch *gs)
 {
   return &gs->op[0];
@@ -4871,7 +4871,7 @@ gimple_switch_index_ptr (gswitch *gs)
 
 /* Set INDEX to be the index variable for switch statement GS.  */
 
-static inline void
+inline void
 gimple_switch_set_index (gswitch *gs, tree index)
 {
   gcc_gimple_checking_assert (SSA_VAR_P (index) || CONSTANT_CLASS_P (index));
@@ -4882,7 +4882,7 @@ gimple_switch_set_index (gswitch *gs, tree index)
 /* Return the label numbered INDEX.  The default label is 0, followed by any
    labels in a switch statement.  */
 
-static inline tree
+inline tree
 gimple_switch_label (const gswitch *gs, unsigned index)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 1);
@@ -4891,7 +4891,7 @@ gimple_switch_label (const gswitch *gs, unsigned index)
 
 /* Set the label number INDEX to LABEL.  0 is always the default label.  */
 
-static inline void
+inline void
 gimple_switch_set_label (gswitch *gs, unsigned index, tree label)
 {
   gcc_gimple_checking_assert (gimple_num_ops (gs) > index + 1
@@ -4902,7 +4902,7 @@ gimple_switch_set_label (gswitch *gs, unsigned index, tree label)
 
 /* Return the default label for a switch statement.  */
 
-static inline tree
+inline tree
 gimple_switch_default_label (const gswitch *gs)
 {
   tree label = gimple_switch_label (gs, 0);
@@ -4912,7 +4912,7 @@ gimple_switch_default_label (const gswitch *gs)
 
 /* Set the default label for a switch statement.  */
 
-static inline void
+inline void
 gimple_switch_set_default_label (gswitch *gs, tree label)
 {
   gcc_checking_assert (!CASE_LOW (label) && !CASE_HIGH (label));
@@ -4921,7 +4921,7 @@ gimple_switch_set_default_label (gswitch *gs, tree label)
 
 /* Return true if GS is a GIMPLE_DEBUG statement.  */
 
-static inline bool
+inline bool
 is_gimple_debug (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_DEBUG;
@@ -4930,7 +4930,7 @@ is_gimple_debug (const gimple *gs)
 
 /* Return the first nondebug statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_first_nondebug_stmt (gimple_seq s)
 {
   gimple_seq_node n = gimple_seq_first (s);
@@ -4942,7 +4942,7 @@ gimple_seq_first_nondebug_stmt (gimple_seq s)
 
 /* Return the last nondebug statement in GIMPLE sequence S.  */
 
-static inline gimple *
+inline gimple *
 gimple_seq_last_nondebug_stmt (gimple_seq s)
 {
   gimple_seq_node n;
@@ -4957,7 +4957,7 @@ gimple_seq_last_nondebug_stmt (gimple_seq s)
 
 /* Return true if S is a GIMPLE_DEBUG BIND statement.  */
 
-static inline bool
+inline bool
 gimple_debug_bind_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -4968,7 +4968,7 @@ gimple_debug_bind_p (const gimple *s)
 
 /* Return the variable bound in a GIMPLE_DEBUG bind statement.  */
 
-static inline tree
+inline tree
 gimple_debug_bind_get_var (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -4979,7 +4979,7 @@ gimple_debug_bind_get_var (const gimple *dbg)
 /* Return the value bound to the variable in a GIMPLE_DEBUG bind
    statement.  */
 
-static inline tree
+inline tree
 gimple_debug_bind_get_value (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -4990,7 +4990,7 @@ gimple_debug_bind_get_value (const gimple *dbg)
 /* Return a pointer to the value bound to the variable in a
    GIMPLE_DEBUG bind statement.  */
 
-static inline tree *
+inline tree *
 gimple_debug_bind_get_value_ptr (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5000,7 +5000,7 @@ gimple_debug_bind_get_value_ptr (gimple *dbg)
 
 /* Set the variable bound in a GIMPLE_DEBUG bind statement.  */
 
-static inline void
+inline void
 gimple_debug_bind_set_var (gimple *dbg, tree var)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5011,7 +5011,7 @@ gimple_debug_bind_set_var (gimple *dbg, tree var)
 /* Set the value bound to the variable in a GIMPLE_DEBUG bind
    statement.  */
 
-static inline void
+inline void
 gimple_debug_bind_set_value (gimple *dbg, tree value)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5026,7 +5026,7 @@ gimple_debug_bind_set_value (gimple *dbg, tree value)
 /* Remove the value bound to the variable in a GIMPLE_DEBUG bind
    statement.  */
 
-static inline void
+inline void
 gimple_debug_bind_reset_value (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5037,7 +5037,7 @@ gimple_debug_bind_reset_value (gimple *dbg)
 /* Return true if the GIMPLE_DEBUG bind statement is bound to a
    value.  */
 
-static inline bool
+inline bool
 gimple_debug_bind_has_value_p (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5049,7 +5049,7 @@ gimple_debug_bind_has_value_p (gimple *dbg)
 
 /* Return true if S is a GIMPLE_DEBUG SOURCE BIND statement.  */
 
-static inline bool
+inline bool
 gimple_debug_source_bind_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5060,7 +5060,7 @@ gimple_debug_source_bind_p (const gimple *s)
 
 /* Return the variable bound in a GIMPLE_DEBUG source bind statement.  */
 
-static inline tree
+inline tree
 gimple_debug_source_bind_get_var (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5071,7 +5071,7 @@ gimple_debug_source_bind_get_var (const gimple *dbg)
 /* Return the value bound to the variable in a GIMPLE_DEBUG source bind
    statement.  */
 
-static inline tree
+inline tree
 gimple_debug_source_bind_get_value (const gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5082,7 +5082,7 @@ gimple_debug_source_bind_get_value (const gimple *dbg)
 /* Return a pointer to the value bound to the variable in a
    GIMPLE_DEBUG source bind statement.  */
 
-static inline tree *
+inline tree *
 gimple_debug_source_bind_get_value_ptr (gimple *dbg)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5092,7 +5092,7 @@ gimple_debug_source_bind_get_value_ptr (gimple *dbg)
 
 /* Set the variable bound in a GIMPLE_DEBUG source bind statement.  */
 
-static inline void
+inline void
 gimple_debug_source_bind_set_var (gimple *dbg, tree var)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5103,7 +5103,7 @@ gimple_debug_source_bind_set_var (gimple *dbg, tree var)
 /* Set the value bound to the variable in a GIMPLE_DEBUG source bind
    statement.  */
 
-static inline void
+inline void
 gimple_debug_source_bind_set_value (gimple *dbg, tree value)
 {
   GIMPLE_CHECK (dbg, GIMPLE_DEBUG);
@@ -5113,7 +5113,7 @@ gimple_debug_source_bind_set_value (gimple *dbg, tree value)
 
 /* Return true if S is a GIMPLE_DEBUG BEGIN_STMT statement.  */
 
-static inline bool
+inline bool
 gimple_debug_begin_stmt_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5124,7 +5124,7 @@ gimple_debug_begin_stmt_p (const gimple *s)
 
 /* Return true if S is a GIMPLE_DEBUG INLINE_ENTRY statement.  */
 
-static inline bool
+inline bool
 gimple_debug_inline_entry_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5135,7 +5135,7 @@ gimple_debug_inline_entry_p (const gimple *s)
 
 /* Return true if S is a GIMPLE_DEBUG non-binding marker statement.  */
 
-static inline bool
+inline bool
 gimple_debug_nonbind_marker_p (const gimple *s)
 {
   if (is_gimple_debug (s))
@@ -5147,7 +5147,7 @@ gimple_debug_nonbind_marker_p (const gimple *s)
 
 /* Return the line number for EXPR, or return -1 if we have no line
    number information for it.  */
-static inline int
+inline int
 get_lineno (const gimple *stmt)
 {
   location_t loc;
@@ -5164,7 +5164,7 @@ get_lineno (const gimple *stmt)
 
 /* Return a pointer to the body for the OMP statement GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_omp_body_ptr (gimple *gs)
 {
   return &static_cast <gimple_statement_omp *> (gs)->body;
@@ -5172,7 +5172,7 @@ gimple_omp_body_ptr (gimple *gs)
 
 /* Return the body for the OMP statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_omp_body (const gimple *gs)
 {
   return *gimple_omp_body_ptr (const_cast <gimple *> (gs));
@@ -5180,7 +5180,7 @@ gimple_omp_body (const gimple *gs)
 
 /* Set BODY to be the body for the OMP statement GS.  */
 
-static inline void
+inline void
 gimple_omp_set_body (gimple *gs, gimple_seq body)
 {
   static_cast <gimple_statement_omp *> (gs)->body = body;
@@ -5189,7 +5189,7 @@ gimple_omp_set_body (gimple *gs, gimple_seq body)
 
 /* Return the name associated with OMP_CRITICAL statement CRIT_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_critical_name (const gomp_critical *crit_stmt)
 {
   return crit_stmt->name;
@@ -5199,7 +5199,7 @@ gimple_omp_critical_name (const gomp_critical *crit_stmt)
 /* Return a pointer to the name associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_critical_name_ptr (gomp_critical *crit_stmt)
 {
   return &crit_stmt->name;
@@ -5209,7 +5209,7 @@ gimple_omp_critical_name_ptr (gomp_critical *crit_stmt)
 /* Set NAME to be the name associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline void
+inline void
 gimple_omp_critical_set_name (gomp_critical *crit_stmt, tree name)
 {
   crit_stmt->name = name;
@@ -5218,7 +5218,7 @@ gimple_omp_critical_set_name (gomp_critical *crit_stmt, tree name)
 
 /* Return the clauses associated with OMP_CRITICAL statement CRIT_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_critical_clauses (const gomp_critical *crit_stmt)
 {
   return crit_stmt->clauses;
@@ -5228,7 +5228,7 @@ gimple_omp_critical_clauses (const gomp_critical *crit_stmt)
 /* Return a pointer to the clauses associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_critical_clauses_ptr (gomp_critical *crit_stmt)
 {
   return &crit_stmt->clauses;
@@ -5238,7 +5238,7 @@ gimple_omp_critical_clauses_ptr (gomp_critical *crit_stmt)
 /* Set CLAUSES to be the clauses associated with OMP critical statement
    CRIT_STMT.  */
 
-static inline void
+inline void
 gimple_omp_critical_set_clauses (gomp_critical *crit_stmt, tree clauses)
 {
   crit_stmt->clauses = clauses;
@@ -5247,7 +5247,7 @@ gimple_omp_critical_set_clauses (gomp_critical *crit_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_ORDERED statement ORD_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_ordered_clauses (const gomp_ordered *ord_stmt)
 {
   return ord_stmt->clauses;
@@ -5257,7 +5257,7 @@ gimple_omp_ordered_clauses (const gomp_ordered *ord_stmt)
 /* Return a pointer to the clauses associated with OMP ordered statement
    ORD_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_ordered_clauses_ptr (gomp_ordered *ord_stmt)
 {
   return &ord_stmt->clauses;
@@ -5267,7 +5267,7 @@ gimple_omp_ordered_clauses_ptr (gomp_ordered *ord_stmt)
 /* Set CLAUSES to be the clauses associated with OMP ordered statement
    ORD_STMT.  */
 
-static inline void
+inline void
 gimple_omp_ordered_set_clauses (gomp_ordered *ord_stmt, tree clauses)
 {
   ord_stmt->clauses = clauses;
@@ -5276,7 +5276,7 @@ gimple_omp_ordered_set_clauses (gomp_ordered *ord_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_SCAN statement SCAN_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_scan_clauses (const gomp_scan *scan_stmt)
 {
   return scan_stmt->clauses;
@@ -5286,7 +5286,7 @@ gimple_omp_scan_clauses (const gomp_scan *scan_stmt)
 /* Return a pointer to the clauses associated with OMP scan statement
    ORD_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_scan_clauses_ptr (gomp_scan *scan_stmt)
 {
   return &scan_stmt->clauses;
@@ -5296,7 +5296,7 @@ gimple_omp_scan_clauses_ptr (gomp_scan *scan_stmt)
 /* Set CLAUSES to be the clauses associated with OMP scan statement
    ORD_STMT.  */
 
-static inline void
+inline void
 gimple_omp_scan_set_clauses (gomp_scan *scan_stmt, tree clauses)
 {
   scan_stmt->clauses = clauses;
@@ -5305,7 +5305,7 @@ gimple_omp_scan_set_clauses (gomp_scan *scan_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_TASKGROUP statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskgroup_clauses (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
@@ -5317,7 +5317,7 @@ gimple_omp_taskgroup_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with OMP taskgroup statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskgroup_clauses_ptr (gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
@@ -5328,7 +5328,7 @@ gimple_omp_taskgroup_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the clauses associated with OMP taskgroup statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_taskgroup_set_clauses (gimple *gs, tree clauses)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_TASKGROUP);
@@ -5339,7 +5339,7 @@ gimple_omp_taskgroup_set_clauses (gimple *gs, tree clauses)
 
 /* Return the clauses associated with OMP_MASKED statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_masked_clauses (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
@@ -5351,7 +5351,7 @@ gimple_omp_masked_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with OMP masked statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_masked_clauses_ptr (gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
@@ -5362,7 +5362,7 @@ gimple_omp_masked_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the clauses associated with OMP masked statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_masked_set_clauses (gimple *gs, tree clauses)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_MASKED);
@@ -5373,7 +5373,7 @@ gimple_omp_masked_set_clauses (gimple *gs, tree clauses)
 
 /* Return the clauses associated with OMP_SCOPE statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_scope_clauses (const gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
@@ -5385,7 +5385,7 @@ gimple_omp_scope_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with OMP scope statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_scope_clauses_ptr (gimple *gs)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
@@ -5396,7 +5396,7 @@ gimple_omp_scope_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the clauses associated with OMP scope statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_scope_set_clauses (gimple *gs, tree clauses)
 {
   GIMPLE_CHECK (gs, GIMPLE_OMP_SCOPE);
@@ -5407,7 +5407,7 @@ gimple_omp_scope_set_clauses (gimple *gs, tree clauses)
 
 /* Return the kind of the OMP_FOR statemement G.  */
 
-static inline int
+inline int
 gimple_omp_for_kind (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
@@ -5417,7 +5417,7 @@ gimple_omp_for_kind (const gimple *g)
 
 /* Set the kind of the OMP_FOR statement G.  */
 
-static inline void
+inline void
 gimple_omp_for_set_kind (gomp_for *g, int kind)
 {
   g->subcode = (g->subcode & ~GF_OMP_FOR_KIND_MASK)
@@ -5428,7 +5428,7 @@ gimple_omp_for_set_kind (gomp_for *g, int kind)
 /* Return true if OMP_FOR statement G has the
    GF_OMP_FOR_COMBINED flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_for_combined_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
@@ -5439,7 +5439,7 @@ gimple_omp_for_combined_p (const gimple *g)
 /* Set the GF_OMP_FOR_COMBINED field in the OMP_FOR statement G depending on
    the boolean value of COMBINED_P.  */
 
-static inline void
+inline void
 gimple_omp_for_set_combined_p (gomp_for *g, bool combined_p)
 {
   if (combined_p)
@@ -5452,7 +5452,7 @@ gimple_omp_for_set_combined_p (gomp_for *g, bool combined_p)
 /* Return true if the OMP_FOR statement G has the
    GF_OMP_FOR_COMBINED_INTO flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_for_combined_into_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_FOR);
@@ -5463,7 +5463,7 @@ gimple_omp_for_combined_into_p (const gimple *g)
 /* Set the GF_OMP_FOR_COMBINED_INTO field in the OMP_FOR statement G depending
    on the boolean value of COMBINED_P.  */
 
-static inline void
+inline void
 gimple_omp_for_set_combined_into_p (gomp_for *g, bool combined_p)
 {
   if (combined_p)
@@ -5475,7 +5475,7 @@ gimple_omp_for_set_combined_into_p (gomp_for *g, bool combined_p)
 
 /* Return the clauses associated with the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_clauses (const gimple *gs)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5486,7 +5486,7 @@ gimple_omp_for_clauses (const gimple *gs)
 /* Return a pointer to the clauses associated with the OMP_FOR statement
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_clauses_ptr (gimple *gs)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5497,7 +5497,7 @@ gimple_omp_for_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the list of clauses associated with the OMP_FOR statement
    GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_clauses (gimple *gs, tree clauses)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5507,7 +5507,7 @@ gimple_omp_for_set_clauses (gimple *gs, tree clauses)
 
 /* Get the collapse count of the OMP_FOR statement GS.  */
 
-static inline size_t
+inline size_t
 gimple_omp_for_collapse (const gimple *gs)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5517,7 +5517,7 @@ gimple_omp_for_collapse (const gimple *gs)
 
 /* Return the condition code associated with the OMP_FOR statement GS.  */
 
-static inline enum tree_code
+inline enum tree_code
 gimple_omp_for_cond (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5528,7 +5528,7 @@ gimple_omp_for_cond (const gimple *gs, size_t i)
 
 /* Set COND to be the condition code for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_cond (gimple *gs, size_t i, enum tree_code cond)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5540,7 +5540,7 @@ gimple_omp_for_set_cond (gimple *gs, size_t i, enum tree_code cond)
 
 /* Return the index variable for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_index (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5551,7 +5551,7 @@ gimple_omp_for_index (const gimple *gs, size_t i)
 
 /* Return a pointer to the index variable for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_index_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5562,7 +5562,7 @@ gimple_omp_for_index_ptr (gimple *gs, size_t i)
 
 /* Set INDEX to be the index variable for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_index (gimple *gs, size_t i, tree index)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5573,7 +5573,7 @@ gimple_omp_for_set_index (gimple *gs, size_t i, tree index)
 
 /* Return the initial value for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_initial (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5584,7 +5584,7 @@ gimple_omp_for_initial (const gimple *gs, size_t i)
 
 /* Return a pointer to the initial value for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_initial_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5595,7 +5595,7 @@ gimple_omp_for_initial_ptr (gimple *gs, size_t i)
 
 /* Set INITIAL to be the initial value for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_initial (gimple *gs, size_t i, tree initial)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5606,7 +5606,7 @@ gimple_omp_for_set_initial (gimple *gs, size_t i, tree initial)
 
 /* Return the final value for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_final (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5617,7 +5617,7 @@ gimple_omp_for_final (const gimple *gs, size_t i)
 
 /* Return a pointer to the final value for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_final_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5628,7 +5628,7 @@ gimple_omp_for_final_ptr (gimple *gs, size_t i)
 
 /* Set FINAL to be the final value for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_final (gimple *gs, size_t i, tree final)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5639,7 +5639,7 @@ gimple_omp_for_set_final (gimple *gs, size_t i, tree final)
 
 /* Return the increment value for the OMP_FOR statement GS.  */
 
-static inline tree
+inline tree
 gimple_omp_for_incr (const gimple *gs, size_t i)
 {
   const gomp_for *omp_for_stmt = as_a <const gomp_for *> (gs);
@@ -5650,7 +5650,7 @@ gimple_omp_for_incr (const gimple *gs, size_t i)
 
 /* Return a pointer to the increment value for the OMP_FOR statement GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_for_incr_ptr (gimple *gs, size_t i)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5661,7 +5661,7 @@ gimple_omp_for_incr_ptr (gimple *gs, size_t i)
 
 /* Set INCR to be the increment value for the OMP_FOR statement GS.  */
 
-static inline void
+inline void
 gimple_omp_for_set_incr (gimple *gs, size_t i, tree incr)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5673,7 +5673,7 @@ gimple_omp_for_set_incr (gimple *gs, size_t i, tree incr)
 /* Return a pointer to the sequence of statements to execute before the OMP_FOR
    statement GS starts.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_omp_for_pre_body_ptr (gimple *gs)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5684,7 +5684,7 @@ gimple_omp_for_pre_body_ptr (gimple *gs)
 /* Return the sequence of statements to execute before the OMP_FOR
    statement GS starts.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_omp_for_pre_body (const gimple *gs)
 {
   return *gimple_omp_for_pre_body_ptr (const_cast <gimple *> (gs));
@@ -5694,7 +5694,7 @@ gimple_omp_for_pre_body (const gimple *gs)
 /* Set PRE_BODY to be the sequence of statements to execute before the
    OMP_FOR statement GS starts.  */
 
-static inline void
+inline void
 gimple_omp_for_set_pre_body (gimple *gs, gimple_seq pre_body)
 {
   gomp_for *omp_for_stmt = as_a <gomp_for *> (gs);
@@ -5703,7 +5703,7 @@ gimple_omp_for_set_pre_body (gimple *gs, gimple_seq pre_body)
 
 /* Return the clauses associated with OMP_PARALLEL GS.  */
 
-static inline tree
+inline tree
 gimple_omp_parallel_clauses (const gimple *gs)
 {
   const gomp_parallel *omp_parallel_stmt = as_a <const gomp_parallel *> (gs);
@@ -5713,7 +5713,7 @@ gimple_omp_parallel_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_PARALLEL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_parallel_clauses_ptr (gomp_parallel *omp_parallel_stmt)
 {
   return &omp_parallel_stmt->clauses;
@@ -5722,7 +5722,7 @@ gimple_omp_parallel_clauses_ptr (gomp_parallel *omp_parallel_stmt)
 
 /* Set CLAUSES to be the list of clauses associated with OMP_PARALLEL_STMT.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_clauses (gomp_parallel *omp_parallel_stmt,
 				 tree clauses)
 {
@@ -5732,7 +5732,7 @@ gimple_omp_parallel_set_clauses (gomp_parallel *omp_parallel_stmt,
 
 /* Return the child function used to hold the body of OMP_PARALLEL_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_parallel_child_fn (const gomp_parallel *omp_parallel_stmt)
 {
   return omp_parallel_stmt->child_fn;
@@ -5741,7 +5741,7 @@ gimple_omp_parallel_child_fn (const gomp_parallel *omp_parallel_stmt)
 /* Return a pointer to the child function used to hold the body of
    OMP_PARALLEL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_parallel_child_fn_ptr (gomp_parallel *omp_parallel_stmt)
 {
   return &omp_parallel_stmt->child_fn;
@@ -5750,7 +5750,7 @@ gimple_omp_parallel_child_fn_ptr (gomp_parallel *omp_parallel_stmt)
 
 /* Set CHILD_FN to be the child function for OMP_PARALLEL_STMT.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_child_fn (gomp_parallel *omp_parallel_stmt,
 				  tree child_fn)
 {
@@ -5761,7 +5761,7 @@ gimple_omp_parallel_set_child_fn (gomp_parallel *omp_parallel_stmt,
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_PARALLEL_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_parallel_data_arg (const gomp_parallel *omp_parallel_stmt)
 {
   return omp_parallel_stmt->data_arg;
@@ -5770,7 +5770,7 @@ gimple_omp_parallel_data_arg (const gomp_parallel *omp_parallel_stmt)
 
 /* Return a pointer to the data argument for OMP_PARALLEL_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_parallel_data_arg_ptr (gomp_parallel *omp_parallel_stmt)
 {
   return &omp_parallel_stmt->data_arg;
@@ -5779,7 +5779,7 @@ gimple_omp_parallel_data_arg_ptr (gomp_parallel *omp_parallel_stmt)
 
 /* Set DATA_ARG to be the data argument for OMP_PARALLEL_STMT.  */
 
-static inline void
+inline void
 gimple_omp_parallel_set_data_arg (gomp_parallel *omp_parallel_stmt,
 				  tree data_arg)
 {
@@ -5788,7 +5788,7 @@ gimple_omp_parallel_set_data_arg (gomp_parallel *omp_parallel_stmt,
 
 /* Return the clauses associated with OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_clauses (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -5798,7 +5798,7 @@ gimple_omp_task_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_clauses_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5809,7 +5809,7 @@ gimple_omp_task_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the list of clauses associated with OMP_TASK
    GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_clauses (gimple *gs, tree clauses)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5820,7 +5820,7 @@ gimple_omp_task_set_clauses (gimple *gs, tree clauses)
 /* Return true if OMP task statement G has the
    GF_OMP_TASK_TASKLOOP flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_task_taskloop_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5831,7 +5831,7 @@ gimple_omp_task_taskloop_p (const gimple *g)
 /* Set the GF_OMP_TASK_TASKLOOP field in G depending on the boolean
    value of TASKLOOP_P.  */
 
-static inline void
+inline void
 gimple_omp_task_set_taskloop_p (gimple *g, bool taskloop_p)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5845,7 +5845,7 @@ gimple_omp_task_set_taskloop_p (gimple *g, bool taskloop_p)
 /* Return true if OMP task statement G has the
    GF_OMP_TASK_TASKWAIT flag set.  */
 
-static inline bool
+inline bool
 gimple_omp_task_taskwait_p (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5856,7 +5856,7 @@ gimple_omp_task_taskwait_p (const gimple *g)
 /* Set the GF_OMP_TASK_TASKWAIT field in G depending on the boolean
    value of TASKWAIT_P.  */
 
-static inline void
+inline void
 gimple_omp_task_set_taskwait_p (gimple *g, bool taskwait_p)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TASK);
@@ -5869,7 +5869,7 @@ gimple_omp_task_set_taskwait_p (gimple *g, bool taskwait_p)
 
 /* Return the child function used to hold the body of OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_child_fn (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -5879,7 +5879,7 @@ gimple_omp_task_child_fn (const gimple *gs)
 /* Return a pointer to the child function used to hold the body of
    OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_child_fn_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5889,7 +5889,7 @@ gimple_omp_task_child_fn_ptr (gimple *gs)
 
 /* Set CHILD_FN to be the child function for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_child_fn (gimple *gs, tree child_fn)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5900,7 +5900,7 @@ gimple_omp_task_set_child_fn (gimple *gs, tree child_fn)
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_data_arg (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -5910,7 +5910,7 @@ gimple_omp_task_data_arg (const gimple *gs)
 
 /* Return a pointer to the data argument for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_data_arg_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5920,7 +5920,7 @@ gimple_omp_task_data_arg_ptr (gimple *gs)
 
 /* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_data_arg (gimple *gs, tree data_arg)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -5930,7 +5930,7 @@ gimple_omp_task_set_data_arg (gimple *gs, tree data_arg)
 
 /* Return the clauses associated with OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskreg_clauses (const gimple *gs)
 {
   const gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5941,7 +5941,7 @@ gimple_omp_taskreg_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskreg_clauses_ptr (gimple *gs)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5953,7 +5953,7 @@ gimple_omp_taskreg_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the list of clauses associated with OMP_TASK
    GS.  */
 
-static inline void
+inline void
 gimple_omp_taskreg_set_clauses (gimple *gs, tree clauses)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5964,7 +5964,7 @@ gimple_omp_taskreg_set_clauses (gimple *gs, tree clauses)
 
 /* Return the child function used to hold the body of OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskreg_child_fn (const gimple *gs)
 {
   const gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5975,7 +5975,7 @@ gimple_omp_taskreg_child_fn (const gimple *gs)
 /* Return a pointer to the child function used to hold the body of
    OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskreg_child_fn_ptr (gimple *gs)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5986,7 +5986,7 @@ gimple_omp_taskreg_child_fn_ptr (gimple *gs)
 
 /* Set CHILD_FN to be the child function for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_taskreg_set_child_fn (gimple *gs, tree child_fn)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -5998,7 +5998,7 @@ gimple_omp_taskreg_set_child_fn (gimple *gs, tree child_fn)
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_taskreg_data_arg (const gimple *gs)
 {
   const gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -6009,7 +6009,7 @@ gimple_omp_taskreg_data_arg (const gimple *gs)
 
 /* Return a pointer to the data argument for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_taskreg_data_arg_ptr (gimple *gs)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -6020,7 +6020,7 @@ gimple_omp_taskreg_data_arg_ptr (gimple *gs)
 
 /* Set DATA_ARG to be the data argument for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_taskreg_set_data_arg (gimple *gs, tree data_arg)
 {
   gimple_statement_omp_taskreg *omp_taskreg_stmt
@@ -6031,7 +6031,7 @@ gimple_omp_taskreg_set_data_arg (gimple *gs, tree data_arg)
 
 /* Return the copy function used to hold the body of OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_copy_fn (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -6041,7 +6041,7 @@ gimple_omp_task_copy_fn (const gimple *gs)
 /* Return a pointer to the copy function used to hold the body of
    OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_copy_fn_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6051,7 +6051,7 @@ gimple_omp_task_copy_fn_ptr (gimple *gs)
 
 /* Set CHILD_FN to be the copy function for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_copy_fn (gimple *gs, tree copy_fn)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6061,7 +6061,7 @@ gimple_omp_task_set_copy_fn (gimple *gs, tree copy_fn)
 
 /* Return size of the data block in bytes in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_arg_size (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -6071,7 +6071,7 @@ gimple_omp_task_arg_size (const gimple *gs)
 
 /* Return a pointer to the data block size for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_arg_size_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6081,7 +6081,7 @@ gimple_omp_task_arg_size_ptr (gimple *gs)
 
 /* Set ARG_SIZE to be the data block size for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_arg_size (gimple *gs, tree arg_size)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6091,7 +6091,7 @@ gimple_omp_task_set_arg_size (gimple *gs, tree arg_size)
 
 /* Return align of the data block in bytes in OMP_TASK GS.  */
 
-static inline tree
+inline tree
 gimple_omp_task_arg_align (const gimple *gs)
 {
   const gomp_task *omp_task_stmt = as_a <const gomp_task *> (gs);
@@ -6101,7 +6101,7 @@ gimple_omp_task_arg_align (const gimple *gs)
 
 /* Return a pointer to the data block align for OMP_TASK GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_task_arg_align_ptr (gimple *gs)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6111,7 +6111,7 @@ gimple_omp_task_arg_align_ptr (gimple *gs)
 
 /* Set ARG_SIZE to be the data block align for OMP_TASK GS.  */
 
-static inline void
+inline void
 gimple_omp_task_set_arg_align (gimple *gs, tree arg_align)
 {
   gomp_task *omp_task_stmt = as_a <gomp_task *> (gs);
@@ -6121,7 +6121,7 @@ gimple_omp_task_set_arg_align (gimple *gs, tree arg_align)
 
 /* Return the clauses associated with OMP_SINGLE GS.  */
 
-static inline tree
+inline tree
 gimple_omp_single_clauses (const gimple *gs)
 {
   const gomp_single *omp_single_stmt = as_a <const gomp_single *> (gs);
@@ -6131,7 +6131,7 @@ gimple_omp_single_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_SINGLE GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_single_clauses_ptr (gimple *gs)
 {
   gomp_single *omp_single_stmt = as_a <gomp_single *> (gs);
@@ -6141,7 +6141,7 @@ gimple_omp_single_clauses_ptr (gimple *gs)
 
 /* Set CLAUSES to be the clauses associated with OMP_SINGLE_STMT.  */
 
-static inline void
+inline void
 gimple_omp_single_set_clauses (gomp_single *omp_single_stmt, tree clauses)
 {
   omp_single_stmt->clauses = clauses;
@@ -6150,7 +6150,7 @@ gimple_omp_single_set_clauses (gomp_single *omp_single_stmt, tree clauses)
 
 /* Return the clauses associated with OMP_TARGET GS.  */
 
-static inline tree
+inline tree
 gimple_omp_target_clauses (const gimple *gs)
 {
   const gomp_target *omp_target_stmt = as_a <const gomp_target *> (gs);
@@ -6160,7 +6160,7 @@ gimple_omp_target_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TARGET GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_target_clauses_ptr (gimple *gs)
 {
   gomp_target *omp_target_stmt = as_a <gomp_target *> (gs);
@@ -6170,7 +6170,7 @@ gimple_omp_target_clauses_ptr (gimple *gs)
 
 /* Set CLAUSES to be the clauses associated with OMP_TARGET_STMT.  */
 
-static inline void
+inline void
 gimple_omp_target_set_clauses (gomp_target *omp_target_stmt,
 			       tree clauses)
 {
@@ -6180,7 +6180,7 @@ gimple_omp_target_set_clauses (gomp_target *omp_target_stmt,
 
 /* Return the kind of the OMP_TARGET G.  */
 
-static inline int
+inline int
 gimple_omp_target_kind (const gimple *g)
 {
   GIMPLE_CHECK (g, GIMPLE_OMP_TARGET);
@@ -6190,7 +6190,7 @@ gimple_omp_target_kind (const gimple *g)
 
 /* Set the kind of the OMP_TARGET G.  */
 
-static inline void
+inline void
 gimple_omp_target_set_kind (gomp_target *g, int kind)
 {
   g->subcode = (g->subcode & ~GF_OMP_TARGET_KIND_MASK)
@@ -6200,7 +6200,7 @@ gimple_omp_target_set_kind (gomp_target *g, int kind)
 
 /* Return the child function used to hold the body of OMP_TARGET_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_target_child_fn (const gomp_target *omp_target_stmt)
 {
   return omp_target_stmt->child_fn;
@@ -6209,7 +6209,7 @@ gimple_omp_target_child_fn (const gomp_target *omp_target_stmt)
 /* Return a pointer to the child function used to hold the body of
    OMP_TARGET_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_target_child_fn_ptr (gomp_target *omp_target_stmt)
 {
   return &omp_target_stmt->child_fn;
@@ -6218,7 +6218,7 @@ gimple_omp_target_child_fn_ptr (gomp_target *omp_target_stmt)
 
 /* Set CHILD_FN to be the child function for OMP_TARGET_STMT.  */
 
-static inline void
+inline void
 gimple_omp_target_set_child_fn (gomp_target *omp_target_stmt,
 				tree child_fn)
 {
@@ -6229,7 +6229,7 @@ gimple_omp_target_set_child_fn (gomp_target *omp_target_stmt,
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TARGET_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_target_data_arg (const gomp_target *omp_target_stmt)
 {
   return omp_target_stmt->data_arg;
@@ -6238,7 +6238,7 @@ gimple_omp_target_data_arg (const gomp_target *omp_target_stmt)
 
 /* Return a pointer to the data argument for OMP_TARGET GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_target_data_arg_ptr (gomp_target *omp_target_stmt)
 {
   return &omp_target_stmt->data_arg;
@@ -6247,7 +6247,7 @@ gimple_omp_target_data_arg_ptr (gomp_target *omp_target_stmt)
 
 /* Set DATA_ARG to be the data argument for OMP_TARGET_STMT.  */
 
-static inline void
+inline void
 gimple_omp_target_set_data_arg (gomp_target *omp_target_stmt,
 				tree data_arg)
 {
@@ -6257,7 +6257,7 @@ gimple_omp_target_set_data_arg (gomp_target *omp_target_stmt,
 
 /* Return the clauses associated with OMP_TEAMS GS.  */
 
-static inline tree
+inline tree
 gimple_omp_teams_clauses (const gimple *gs)
 {
   const gomp_teams *omp_teams_stmt = as_a <const gomp_teams *> (gs);
@@ -6267,7 +6267,7 @@ gimple_omp_teams_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_TEAMS GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_teams_clauses_ptr (gimple *gs)
 {
   gomp_teams *omp_teams_stmt = as_a <gomp_teams *> (gs);
@@ -6277,7 +6277,7 @@ gimple_omp_teams_clauses_ptr (gimple *gs)
 
 /* Set CLAUSES to be the clauses associated with OMP_TEAMS_STMT.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_clauses (gomp_teams *omp_teams_stmt, tree clauses)
 {
   omp_teams_stmt->clauses = clauses;
@@ -6285,7 +6285,7 @@ gimple_omp_teams_set_clauses (gomp_teams *omp_teams_stmt, tree clauses)
 
 /* Return the child function used to hold the body of OMP_TEAMS_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_teams_child_fn (const gomp_teams *omp_teams_stmt)
 {
   return omp_teams_stmt->child_fn;
@@ -6294,7 +6294,7 @@ gimple_omp_teams_child_fn (const gomp_teams *omp_teams_stmt)
 /* Return a pointer to the child function used to hold the body of
    OMP_TEAMS_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_teams_child_fn_ptr (gomp_teams *omp_teams_stmt)
 {
   return &omp_teams_stmt->child_fn;
@@ -6303,7 +6303,7 @@ gimple_omp_teams_child_fn_ptr (gomp_teams *omp_teams_stmt)
 
 /* Set CHILD_FN to be the child function for OMP_TEAMS_STMT.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_child_fn (gomp_teams *omp_teams_stmt, tree child_fn)
 {
   omp_teams_stmt->child_fn = child_fn;
@@ -6313,7 +6313,7 @@ gimple_omp_teams_set_child_fn (gomp_teams *omp_teams_stmt, tree child_fn)
 /* Return the artificial argument used to send variables and values
    from the parent to the children threads in OMP_TEAMS_STMT.  */
 
-static inline tree
+inline tree
 gimple_omp_teams_data_arg (const gomp_teams *omp_teams_stmt)
 {
   return omp_teams_stmt->data_arg;
@@ -6322,7 +6322,7 @@ gimple_omp_teams_data_arg (const gomp_teams *omp_teams_stmt)
 
 /* Return a pointer to the data argument for OMP_TEAMS_STMT.  */
 
-static inline tree *
+inline tree *
 gimple_omp_teams_data_arg_ptr (gomp_teams *omp_teams_stmt)
 {
   return &omp_teams_stmt->data_arg;
@@ -6331,7 +6331,7 @@ gimple_omp_teams_data_arg_ptr (gomp_teams *omp_teams_stmt)
 
 /* Set DATA_ARG to be the data argument for OMP_TEAMS_STMT.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_data_arg (gomp_teams *omp_teams_stmt, tree data_arg)
 {
   omp_teams_stmt->data_arg = data_arg;
@@ -6339,7 +6339,7 @@ gimple_omp_teams_set_data_arg (gomp_teams *omp_teams_stmt, tree data_arg)
 
 /* Return the host flag of an OMP_TEAMS_STMT.  */
 
-static inline bool
+inline bool
 gimple_omp_teams_host (const gomp_teams *omp_teams_stmt)
 {
   return (gimple_omp_subcode (omp_teams_stmt) & GF_OMP_TEAMS_HOST) != 0;
@@ -6347,7 +6347,7 @@ gimple_omp_teams_host (const gomp_teams *omp_teams_stmt)
 
 /* Set host flag of an OMP_TEAMS_STMT to VALUE.  */
 
-static inline void
+inline void
 gimple_omp_teams_set_host (gomp_teams *omp_teams_stmt, bool value)
 {
   if (value)
@@ -6358,7 +6358,7 @@ gimple_omp_teams_set_host (gomp_teams *omp_teams_stmt, bool value)
 
 /* Return the clauses associated with OMP_SECTIONS GS.  */
 
-static inline tree
+inline tree
 gimple_omp_sections_clauses (const gimple *gs)
 {
   const gomp_sections *omp_sections_stmt = as_a <const gomp_sections *> (gs);
@@ -6368,7 +6368,7 @@ gimple_omp_sections_clauses (const gimple *gs)
 
 /* Return a pointer to the clauses associated with OMP_SECTIONS GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_sections_clauses_ptr (gimple *gs)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6379,7 +6379,7 @@ gimple_omp_sections_clauses_ptr (gimple *gs)
 /* Set CLAUSES to be the set of clauses associated with OMP_SECTIONS
    GS.  */
 
-static inline void
+inline void
 gimple_omp_sections_set_clauses (gimple *gs, tree clauses)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6390,7 +6390,7 @@ gimple_omp_sections_set_clauses (gimple *gs, tree clauses)
 /* Return the control variable associated with the GIMPLE_OMP_SECTIONS
    in GS.  */
 
-static inline tree
+inline tree
 gimple_omp_sections_control (const gimple *gs)
 {
   const gomp_sections *omp_sections_stmt = as_a <const gomp_sections *> (gs);
@@ -6401,7 +6401,7 @@ gimple_omp_sections_control (const gimple *gs)
 /* Return a pointer to the clauses associated with the GIMPLE_OMP_SECTIONS
    GS.  */
 
-static inline tree *
+inline tree *
 gimple_omp_sections_control_ptr (gimple *gs)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6412,7 +6412,7 @@ gimple_omp_sections_control_ptr (gimple *gs)
 /* Set CONTROL to be the set of clauses associated with the
    GIMPLE_OMP_SECTIONS in GS.  */
 
-static inline void
+inline void
 gimple_omp_sections_set_control (gimple *gs, tree control)
 {
   gomp_sections *omp_sections_stmt = as_a <gomp_sections *> (gs);
@@ -6422,7 +6422,7 @@ gimple_omp_sections_set_control (gimple *gs, tree control)
 
 /* Set the value being stored in an atomic store.  */
 
-static inline void
+inline void
 gimple_omp_atomic_store_set_val (gomp_atomic_store *store_stmt, tree val)
 {
   store_stmt->val = val;
@@ -6431,7 +6431,7 @@ gimple_omp_atomic_store_set_val (gomp_atomic_store *store_stmt, tree val)
 
 /* Return the value being stored in an atomic store.  */
 
-static inline tree
+inline tree
 gimple_omp_atomic_store_val (const gomp_atomic_store *store_stmt)
 {
   return store_stmt->val;
@@ -6440,7 +6440,7 @@ gimple_omp_atomic_store_val (const gomp_atomic_store *store_stmt)
 
 /* Return a pointer to the value being stored in an atomic store.  */
 
-static inline tree *
+inline tree *
 gimple_omp_atomic_store_val_ptr (gomp_atomic_store *store_stmt)
 {
   return &store_stmt->val;
@@ -6449,7 +6449,7 @@ gimple_omp_atomic_store_val_ptr (gomp_atomic_store *store_stmt)
 
 /* Set the LHS of an atomic load.  */
 
-static inline void
+inline void
 gimple_omp_atomic_load_set_lhs (gomp_atomic_load *load_stmt, tree lhs)
 {
   load_stmt->lhs = lhs;
@@ -6458,7 +6458,7 @@ gimple_omp_atomic_load_set_lhs (gomp_atomic_load *load_stmt, tree lhs)
 
 /* Get the LHS of an atomic load.  */
 
-static inline tree
+inline tree
 gimple_omp_atomic_load_lhs (const gomp_atomic_load *load_stmt)
 {
   return load_stmt->lhs;
@@ -6467,7 +6467,7 @@ gimple_omp_atomic_load_lhs (const gomp_atomic_load *load_stmt)
 
 /* Return a pointer to the LHS of an atomic load.  */
 
-static inline tree *
+inline tree *
 gimple_omp_atomic_load_lhs_ptr (gomp_atomic_load *load_stmt)
 {
   return &load_stmt->lhs;
@@ -6476,7 +6476,7 @@ gimple_omp_atomic_load_lhs_ptr (gomp_atomic_load *load_stmt)
 
 /* Set the RHS of an atomic load.  */
 
-static inline void
+inline void
 gimple_omp_atomic_load_set_rhs (gomp_atomic_load *load_stmt, tree rhs)
 {
   load_stmt->rhs = rhs;
@@ -6485,7 +6485,7 @@ gimple_omp_atomic_load_set_rhs (gomp_atomic_load *load_stmt, tree rhs)
 
 /* Get the RHS of an atomic load.  */
 
-static inline tree
+inline tree
 gimple_omp_atomic_load_rhs (const gomp_atomic_load *load_stmt)
 {
   return load_stmt->rhs;
@@ -6494,7 +6494,7 @@ gimple_omp_atomic_load_rhs (const gomp_atomic_load *load_stmt)
 
 /* Return a pointer to the RHS of an atomic load.  */
 
-static inline tree *
+inline tree *
 gimple_omp_atomic_load_rhs_ptr (gomp_atomic_load *load_stmt)
 {
   return &load_stmt->rhs;
@@ -6503,7 +6503,7 @@ gimple_omp_atomic_load_rhs_ptr (gomp_atomic_load *load_stmt)
 
 /* Get the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline tree
+inline tree
 gimple_omp_continue_control_def (const gomp_continue *cont_stmt)
 {
   return cont_stmt->control_def;
@@ -6511,7 +6511,7 @@ gimple_omp_continue_control_def (const gomp_continue *cont_stmt)
 
 /* The same as above, but return the address.  */
 
-static inline tree *
+inline tree *
 gimple_omp_continue_control_def_ptr (gomp_continue *cont_stmt)
 {
   return &cont_stmt->control_def;
@@ -6519,7 +6519,7 @@ gimple_omp_continue_control_def_ptr (gomp_continue *cont_stmt)
 
 /* Set the definition of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline void
+inline void
 gimple_omp_continue_set_control_def (gomp_continue *cont_stmt, tree def)
 {
   cont_stmt->control_def = def;
@@ -6528,7 +6528,7 @@ gimple_omp_continue_set_control_def (gomp_continue *cont_stmt, tree def)
 
 /* Get the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline tree
+inline tree
 gimple_omp_continue_control_use (const gomp_continue *cont_stmt)
 {
   return cont_stmt->control_use;
@@ -6537,7 +6537,7 @@ gimple_omp_continue_control_use (const gomp_continue *cont_stmt)
 
 /* The same as above, but return the address.  */
 
-static inline tree *
+inline tree *
 gimple_omp_continue_control_use_ptr (gomp_continue *cont_stmt)
 {
   return &cont_stmt->control_use;
@@ -6546,7 +6546,7 @@ gimple_omp_continue_control_use_ptr (gomp_continue *cont_stmt)
 
 /* Set the use of the control variable in a GIMPLE_OMP_CONTINUE.  */
 
-static inline void
+inline void
 gimple_omp_continue_set_control_use (gomp_continue *cont_stmt, tree use)
 {
   cont_stmt->control_use = use;
@@ -6554,7 +6554,7 @@ gimple_omp_continue_set_control_use (gomp_continue *cont_stmt, tree use)
 
 /* Return the guard associated with the GIMPLE_ASSUME statement GS.  */
 
-static inline tree
+inline tree
 gimple_assume_guard (const gimple *gs)
 {
   const gimple_statement_assume *assume_stmt
@@ -6564,14 +6564,14 @@ gimple_assume_guard (const gimple *gs)
 
 /* Set the guard associated with the GIMPLE_ASSUME statement GS.  */
 
-static inline void
+inline void
 gimple_assume_set_guard (gimple *gs, tree guard)
 {
   gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
   assume_stmt->guard = guard;
 }
 
-static inline tree *
+inline tree *
 gimple_assume_guard_ptr (gimple *gs)
 {
   gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
@@ -6581,7 +6581,7 @@ gimple_assume_guard_ptr (gimple *gs)
 /* Return the address of the GIMPLE sequence contained in the GIMPLE_ASSUME
    statement GS.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_assume_body_ptr (gimple *gs)
 {
   gimple_statement_assume *assume_stmt = as_a <gimple_statement_assume *> (gs);
@@ -6590,7 +6590,7 @@ gimple_assume_body_ptr (gimple *gs)
 
 /* Return the GIMPLE sequence contained in the GIMPLE_ASSUME statement GS.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_assume_body (const gimple *gs)
 {
   const gimple_statement_assume *assume_stmt
@@ -6601,7 +6601,7 @@ gimple_assume_body (const gimple *gs)
 /* Return a pointer to the body for the GIMPLE_TRANSACTION statement
    TRANSACTION_STMT.  */
 
-static inline gimple_seq *
+inline gimple_seq *
 gimple_transaction_body_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->body;
@@ -6609,7 +6609,7 @@ gimple_transaction_body_ptr (gtransaction *transaction_stmt)
 
 /* Return the body for the GIMPLE_TRANSACTION statement TRANSACTION_STMT.  */
 
-static inline gimple_seq
+inline gimple_seq
 gimple_transaction_body (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->body;
@@ -6617,37 +6617,37 @@ gimple_transaction_body (const gtransaction *transaction_stmt)
 
 /* Return the label associated with a GIMPLE_TRANSACTION.  */
 
-static inline tree
+inline tree
 gimple_transaction_label_norm (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->label_norm;
 }
 
-static inline tree *
+inline tree *
 gimple_transaction_label_norm_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->label_norm;
 }
 
-static inline tree
+inline tree
 gimple_transaction_label_uninst (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->label_uninst;
 }
 
-static inline tree *
+inline tree *
 gimple_transaction_label_uninst_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->label_uninst;
 }
 
-static inline tree
+inline tree
 gimple_transaction_label_over (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->label_over;
 }
 
-static inline tree *
+inline tree *
 gimple_transaction_label_over_ptr (gtransaction *transaction_stmt)
 {
   return &transaction_stmt->label_over;
@@ -6655,7 +6655,7 @@ gimple_transaction_label_over_ptr (gtransaction *transaction_stmt)
 
 /* Return the subcode associated with a GIMPLE_TRANSACTION.  */
 
-static inline unsigned int
+inline unsigned int
 gimple_transaction_subcode (const gtransaction *transaction_stmt)
 {
   return transaction_stmt->subcode;
@@ -6664,7 +6664,7 @@ gimple_transaction_subcode (const gtransaction *transaction_stmt)
 /* Set BODY to be the body for the GIMPLE_TRANSACTION statement
    TRANSACTION_STMT.  */
 
-static inline void
+inline void
 gimple_transaction_set_body (gtransaction *transaction_stmt,
 			     gimple_seq body)
 {
@@ -6673,19 +6673,19 @@ gimple_transaction_set_body (gtransaction *transaction_stmt,
 
 /* Set the label associated with a GIMPLE_TRANSACTION.  */
 
-static inline void
+inline void
 gimple_transaction_set_label_norm (gtransaction *transaction_stmt, tree label)
 {
   transaction_stmt->label_norm = label;
 }
 
-static inline void
+inline void
 gimple_transaction_set_label_uninst (gtransaction *transaction_stmt, tree label)
 {
   transaction_stmt->label_uninst = label;
 }
 
-static inline void
+inline void
 gimple_transaction_set_label_over (gtransaction *transaction_stmt, tree label)
 {
   transaction_stmt->label_over = label;
@@ -6693,7 +6693,7 @@ gimple_transaction_set_label_over (gtransaction *transaction_stmt, tree label)
 
 /* Set the subcode associated with a GIMPLE_TRANSACTION.  */
 
-static inline void
+inline void
 gimple_transaction_set_subcode (gtransaction *transaction_stmt,
 				unsigned int subcode)
 {
@@ -6702,7 +6702,7 @@ gimple_transaction_set_subcode (gtransaction *transaction_stmt,
 
 /* Return a pointer to the return value for GIMPLE_RETURN GS.  */
 
-static inline tree *
+inline tree *
 gimple_return_retval_ptr (greturn *gs)
 {
   return &gs->op[0];
@@ -6710,7 +6710,7 @@ gimple_return_retval_ptr (greturn *gs)
 
 /* Return the return value for GIMPLE_RETURN GS.  */
 
-static inline tree
+inline tree
 gimple_return_retval (const greturn *gs)
 {
   return gs->op[0];
@@ -6719,7 +6719,7 @@ gimple_return_retval (const greturn *gs)
 
 /* Set RETVAL to be the return value for GIMPLE_RETURN GS.  */
 
-static inline void
+inline void
 gimple_return_set_retval (greturn *gs, tree retval)
 {
   gs->op[0] = retval;
@@ -6750,7 +6750,7 @@ gimple_return_set_retval (greturn *gs, tree retval)
     case GIMPLE_OMP_ATOMIC_STORE:		\
     case GIMPLE_OMP_CONTINUE
 
-static inline bool
+inline bool
 is_gimple_omp (const gimple *stmt)
 {
   switch (gimple_code (stmt))
@@ -6765,7 +6765,7 @@ is_gimple_omp (const gimple *stmt)
 /* Return true if the OMP gimple statement STMT is any of the OpenACC types
    specifically.  */
 
-static inline bool
+inline bool
 is_gimple_omp_oacc (const gimple *stmt)
 {
   gcc_assert (is_gimple_omp (stmt));
@@ -6814,7 +6814,7 @@ is_gimple_omp_oacc (const gimple *stmt)
 
 /* Return true if the OMP gimple statement STMT is offloaded.  */
 
-static inline bool
+inline bool
 is_gimple_omp_offloaded (const gimple *stmt)
 {
   gcc_assert (is_gimple_omp (stmt));
@@ -6841,7 +6841,7 @@ is_gimple_omp_offloaded (const gimple *stmt)
 
 /* Returns TRUE if statement G is a GIMPLE_NOP.  */
 
-static inline bool
+inline bool
 gimple_nop_p (const gimple *g)
 {
   return gimple_code (g) == GIMPLE_NOP;
@@ -6850,7 +6850,7 @@ gimple_nop_p (const gimple *g)
 
 /* Return true if GS is a GIMPLE_RESX.  */
 
-static inline bool
+inline bool
 is_gimple_resx (const gimple *gs)
 {
   return gimple_code (gs) == GIMPLE_RESX;
@@ -6872,7 +6872,7 @@ extern uint64_t gimple_alloc_counts[];
 extern uint64_t gimple_alloc_sizes[];
 
 /* Return the allocation kind for a given stmt CODE.  */
-static inline enum gimple_alloc_kind
+inline enum gimple_alloc_kind
 gimple_alloc_kind (enum gimple_code code)
 {
   switch (code)
@@ -6891,7 +6891,7 @@ gimple_alloc_kind (enum gimple_code code)
 /* Return true if a location should not be emitted for this statement
    by annotate_all_with_location.  */
 
-static inline bool
+inline bool
 gimple_do_not_emit_location_p (gimple *g)
 {
   return gimple_plf (g, GF_PLF_1);
@@ -6900,7 +6900,7 @@ gimple_do_not_emit_location_p (gimple *g)
 /* Mark statement G so a location will not be emitted by
    annotate_one_with_location.  */
 
-static inline void
+inline void
 gimple_set_do_not_emit_location (gimple *g)
 {
   /* The PLF flags are initialized to 0 when a new tuple is created,
diff --git a/gcc/graphite.h b/gcc/graphite.h
index c4c5e3c6fc5..dc6e482fce3 100644
--- a/gcc/graphite.h
+++ b/gcc/graphite.h
@@ -32,7 +32,7 @@ typedef struct scop *scop_p;
 
 typedef unsigned graphite_dim_t;
 
-static inline graphite_dim_t scop_nb_params (scop_p);
+inline graphite_dim_t scop_nb_params (scop_p);
 
 /* A data reference can write or read some memory or we
    just know it may write some memory.  */
@@ -189,7 +189,7 @@ void new_poly_dr (poly_bb_p, gimple *, enum poly_dr_type,
 void debug_pdr (poly_dr_p);
 void print_pdr (FILE *, poly_dr_p);
 
-static inline bool
+inline bool
 pdr_read_p (poly_dr_p pdr)
 {
   return PDR_TYPE (pdr) == PDR_READ;
@@ -197,7 +197,7 @@ pdr_read_p (poly_dr_p pdr)
 
 /* Returns true when PDR is a "write".  */
 
-static inline bool
+inline bool
 pdr_write_p (poly_dr_p pdr)
 {
   return PDR_TYPE (pdr) == PDR_WRITE;
@@ -205,7 +205,7 @@ pdr_write_p (poly_dr_p pdr)
 
 /* Returns true when PDR is a "may write".  */
 
-static inline bool
+inline bool
 pdr_may_write_p (poly_dr_p pdr)
 {
   return PDR_TYPE (pdr) == PDR_MAY_WRITE;
@@ -295,13 +295,13 @@ extern void debug_schedule_ast (__isl_keep isl_schedule *, scop_p);
 
 /* The basic block of the PBB.  */
 
-static inline basic_block
+inline basic_block
 pbb_bb (poly_bb_p pbb)
 {
   return GBB_BB (PBB_BLACK_BOX (pbb));
 }
 
-static inline int
+inline int
 pbb_index (poly_bb_p pbb)
 {
   return pbb_bb (pbb)->index;
@@ -309,7 +309,7 @@ pbb_index (poly_bb_p pbb)
 
 /* The loop of the PBB.  */
 
-static inline loop_p
+inline loop_p
 pbb_loop (poly_bb_p pbb)
 {
   return gbb_loop (PBB_BLACK_BOX (pbb));
@@ -317,7 +317,7 @@ pbb_loop (poly_bb_p pbb)
 
 /* The scop that contains the PDR.  */
 
-static inline scop_p
+inline scop_p
 pdr_scop (poly_dr_p pdr)
 {
   return PBB_SCOP (PDR_PBB (pdr));
@@ -325,7 +325,7 @@ pdr_scop (poly_dr_p pdr)
 
 /* Set black box of PBB to BLACKBOX.  */
 
-static inline void
+inline void
 pbb_set_black_box (poly_bb_p pbb, gimple_poly_bb_p black_box)
 {
   pbb->black_box = black_box;
@@ -412,7 +412,7 @@ extern bool apply_poly_transforms (scop_p);
 
 /* Set the region of SCOP to REGION.  */
 
-static inline void
+inline void
 scop_set_region (scop_p scop, sese_info_p region)
 {
   scop->scop_info = region;
@@ -420,7 +420,7 @@ scop_set_region (scop_p scop, sese_info_p region)
 
 /* Returns the number of parameters for SCOP.  */
 
-static inline graphite_dim_t
+inline graphite_dim_t
 scop_nb_params (scop_p scop)
 {
   return scop->nb_params;
@@ -428,7 +428,7 @@ scop_nb_params (scop_p scop)
 
 /* Set the number of params of SCOP to NB_PARAMS.  */
 
-static inline void
+inline void
 scop_set_nb_params (scop_p scop, graphite_dim_t nb_params)
 {
   scop->nb_params = nb_params;
diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
index 320b4349527..b0bb9bce074 100644
--- a/gcc/hard-reg-set.h
+++ b/gcc/hard-reg-set.h
@@ -173,19 +173,19 @@ struct hard_reg_set_container
 #define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
 #define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))
 
-static inline bool
+inline bool
 hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   return (x & ~y) == HARD_CONST (0);
 }
 
-static inline bool
+inline bool
 hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   return (x & y) != HARD_CONST (0);
 }
 
-static inline bool
+inline bool
 hard_reg_set_empty_p (const_hard_reg_set x)
 {
   return x == HARD_CONST (0);
@@ -228,7 +228,7 @@ SET_HARD_REG_SET (HARD_REG_SET &set)
     set.elts[i] = -1;
 }
 
-static inline bool
+inline bool
 hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   HARD_REG_ELT_TYPE bad = 0;
@@ -237,7 +237,7 @@ hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
   return bad == 0;
 }
 
-static inline bool
+inline bool
 hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
 {
   HARD_REG_ELT_TYPE good = 0;
@@ -246,7 +246,7 @@ hard_reg_set_intersect_p (const_hard_reg_set x, const_hard_reg_set y)
   return good != 0;
 }
 
-static inline bool
+inline bool
 hard_reg_set_empty_p (const_hard_reg_set x)
 {
   HARD_REG_ELT_TYPE bad = 0;
@@ -279,7 +279,7 @@ struct hard_reg_set_iterator
 
 /* The implementation of the iterator functions is fully analogous to
    the bitmap iterators.  */
-static inline void
+inline void
 hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
                         unsigned min, unsigned *regno)
 {
@@ -302,7 +302,7 @@ hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
   *regno = min;
 }
 
-static inline bool
+inline bool
 hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
 {
   while (1)
@@ -337,7 +337,7 @@ hard_reg_set_iter_set (hard_reg_set_iterator *iter, unsigned *regno)
     }
 }
 
-static inline void
+inline void
 hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *regno)
 {
   iter->bits >>= 1;
diff --git a/gcc/hash-map.h b/gcc/hash-map.h
index bc7ca9fd8e2..1c5189b04d5 100644
--- a/gcc/hash-map.h
+++ b/gcc/hash-map.h
@@ -315,21 +315,21 @@ private:
 /* ggc marking routines.  */
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_ggc_mx (hash_map<K, V, H> *h)
 {
   gt_ggc_mx (&h->m_table);
 }
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_map<K, V, H> *h)
 {
   gt_pch_nx (&h->m_table);
 }
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_cleare_cache (hash_map<K, V, H> *h)
 {
   if (h)
@@ -337,7 +337,7 @@ gt_cleare_cache (hash_map<K, V, H> *h)
 }
 
 template<typename K, typename V, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_map<K, V, H> *h, gt_pointer_operator op, void *cookie)
 {
   op (&h->m_table.m_entries, NULL, cookie);
diff --git a/gcc/hash-set.h b/gcc/hash-set.h
index 048e7e75011..f6125eb6a3a 100644
--- a/gcc/hash-set.h
+++ b/gcc/hash-set.h
@@ -194,21 +194,21 @@ debug_helper (hash_set<T> &ref)
 /* ggc marking routines.  */
 
 template<typename K, typename H>
-static inline void
+inline void
 gt_ggc_mx (hash_set<K, false, H> *h)
 {
   gt_ggc_mx (&h->m_table);
 }
 
 template<typename K, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_set<K, false, H> *h)
 {
   gt_pch_nx (&h->m_table);
 }
 
 template<typename K, typename H>
-static inline void
+inline void
 gt_pch_nx (hash_set<K, false, H> *h, gt_pointer_operator op, void *cookie)
 {
   op (&h->m_table.m_entries, NULL, cookie);
diff --git a/gcc/hash-table.h b/gcc/hash-table.h
index e37625dc315..3f87ec06f37 100644
--- a/gcc/hash-table.h
+++ b/gcc/hash-table.h
@@ -1236,7 +1236,7 @@ hash_table<Descriptor, Lazy, Allocator>::iterator::operator ++ ()
 /* ggc walking routines.  */
 
 template<typename E>
-static inline void
+inline void
 gt_ggc_mx (hash_table<E> *h)
 {
   typedef hash_table<E> table;
@@ -1257,7 +1257,7 @@ gt_ggc_mx (hash_table<E> *h)
 }
 
 template<typename D>
-static inline void
+inline void
 hashtab_entry_note_pointers (void *obj, void *h, gt_pointer_operator op,
 			     void *cookie)
 {
@@ -1293,7 +1293,7 @@ gt_pch_nx (hash_table<D> *h)
 }
 
 template<typename D>
-static inline void
+inline void
 gt_pch_nx (hash_table<D> *h, gt_pointer_operator op, void *cookie)
 {
   op (&h->m_entries, NULL, cookie);
diff --git a/gcc/hwint.h b/gcc/hwint.h
index e31aa006fa4..427e9b9e9fd 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -138,7 +138,7 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
 
 /* Return X with all but the lowest bit masked off.  */
 
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 least_bit_hwi (unsigned HOST_WIDE_INT x)
 {
   return (x & -x);
@@ -146,7 +146,7 @@ least_bit_hwi (unsigned HOST_WIDE_INT x)
 
 /* True if X is zero or a power of two.  */
 
-static inline bool
+inline bool
 pow2_or_zerop (unsigned HOST_WIDE_INT x)
 {
   return least_bit_hwi (x) == x;
@@ -154,7 +154,7 @@ pow2_or_zerop (unsigned HOST_WIDE_INT x)
 
 /* True if X is a power of two.  */
 
-static inline bool
+inline bool
 pow2p_hwi (unsigned HOST_WIDE_INT x)
 {
   return x && pow2_or_zerop (x);
@@ -181,7 +181,7 @@ extern int ceil_log2			(unsigned HOST_WIDE_INT);
 #else /* GCC_VERSION >= 3004 */
 
 /* For convenience, define 0 -> word_size.  */
-static inline int
+inline int
 clz_hwi (unsigned HOST_WIDE_INT x)
 {
   if (x == 0)
@@ -195,7 +195,7 @@ clz_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 ctz_hwi (unsigned HOST_WIDE_INT x)
 {
   if (x == 0)
@@ -209,7 +209,7 @@ ctz_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 ffs_hwi (unsigned HOST_WIDE_INT x)
 {
 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
@@ -221,7 +221,7 @@ ffs_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 popcount_hwi (unsigned HOST_WIDE_INT x)
 {
 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
@@ -233,19 +233,19 @@ popcount_hwi (unsigned HOST_WIDE_INT x)
 # endif
 }
 
-static inline int
+inline int
 floor_log2 (unsigned HOST_WIDE_INT x)
 {
   return HOST_BITS_PER_WIDE_INT - 1 - clz_hwi (x);
 }
 
-static inline int
+inline int
 ceil_log2 (unsigned HOST_WIDE_INT x)
 {
   return x == 0 ? 0 : floor_log2 (x - 1) + 1;
 }
 
-static inline int
+inline int
 exact_log2 (unsigned HOST_WIDE_INT x)
 {
   return pow2p_hwi (x) ? ctz_hwi (x) : -1;
@@ -266,7 +266,7 @@ extern HOST_WIDE_INT least_common_multiple (HOST_WIDE_INT, HOST_WIDE_INT);
 
 /* Like ctz_hwi, except 0 when x == 0.  */
 
-static inline int
+inline int
 ctz_or_zero (unsigned HOST_WIDE_INT x)
 {
   return ffs_hwi (x) - 1;
@@ -274,7 +274,7 @@ ctz_or_zero (unsigned HOST_WIDE_INT x)
 
 /* Sign extend SRC starting from PREC.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 sext_hwi (HOST_WIDE_INT src, unsigned int prec)
 {
   if (prec == HOST_BITS_PER_WIDE_INT)
@@ -304,7 +304,7 @@ sext_hwi (HOST_WIDE_INT src, unsigned int prec)
 }
 
 /* Zero extend SRC starting from PREC.  */
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 zext_hwi (unsigned HOST_WIDE_INT src, unsigned int prec)
 {
   if (prec == HOST_BITS_PER_WIDE_INT)
diff --git a/gcc/input.h b/gcc/input.h
index b1fa14adf5b..9d68648bb3c 100644
--- a/gcc/input.h
+++ b/gcc/input.h
@@ -195,7 +195,7 @@ extern int get_discriminator_from_loc (location_t);
    that is part of a macro replacement-list defined in a system
    header, but expanded in a non-system file.  */
 
-static inline int
+inline int
 in_system_header_at (location_t loc)
 {
   return linemap_location_in_system_header_p (line_table, loc);
@@ -204,7 +204,7 @@ in_system_header_at (location_t loc)
 /* Return true if LOCATION is the locus of a token that
    comes from a macro expansion, false otherwise.  */
 
-static inline bool
+inline bool
 from_macro_expansion_at (location_t loc)
 {
   return linemap_location_from_macro_expansion_p (line_table, loc);
@@ -214,13 +214,13 @@ from_macro_expansion_at (location_t loc)
    a macro definition, false otherwise.  This differs from from_macro_expansion_at
    in its treatment of macro arguments, for which this returns false.  */
 
-static inline bool
+inline bool
 from_macro_definition_at (location_t loc)
 {
   return linemap_location_from_macro_definition_p (line_table, loc);
 }
 
-static inline location_t
+inline location_t
 get_pure_location (location_t loc)
 {
   return get_pure_location (line_table, loc);
@@ -228,7 +228,7 @@ get_pure_location (location_t loc)
 
 /* Get the start of any range encoded within location LOC.  */
 
-static inline location_t
+inline location_t
 get_start (location_t loc)
 {
   return get_range_from_loc (line_table, loc).m_start;
@@ -236,7 +236,7 @@ get_start (location_t loc)
 
 /* Get the endpoint of any range encoded within location LOC.  */
 
-static inline location_t
+inline location_t
 get_finish (location_t loc)
 {
   return get_range_from_loc (line_table, loc).m_finish;
diff --git a/gcc/insn-addr.h b/gcc/insn-addr.h
index aa5fd8ebe0d..baf4d995e22 100644
--- a/gcc/insn-addr.h
+++ b/gcc/insn-addr.h
@@ -37,7 +37,7 @@ extern int insn_current_address;
 #define INSN_ADDRESSES_SET_P() (insn_addresses_.exists ())
 #define INSN_ADDRESSES_SIZE() (insn_addresses_.length ())
 
-static inline void
+inline void
 insn_addresses_new (rtx_insn *insn, int insn_addr)
 {
   unsigned insn_uid = INSN_UID ((insn));
diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h
index 6f7a262a763..2fd82a19d15 100644
--- a/gcc/internal-fn.h
+++ b/gcc/internal-fn.h
@@ -105,7 +105,7 @@ extern void init_internal_fns ();
 
 extern const char *const internal_fn_name_array[];
 
-static inline const char *
+inline const char *
 internal_fn_name (enum internal_fn fn)
 {
   return internal_fn_name_array[(int) fn];
@@ -117,7 +117,7 @@ extern internal_fn lookup_internal_fn (const char *);
 
 extern const int internal_fn_flags_array[];
 
-static inline int
+inline int
 internal_fn_flags (enum internal_fn fn)
 {
   return internal_fn_flags_array[(int) fn];
@@ -127,7 +127,7 @@ internal_fn_flags (enum internal_fn fn)
 
 extern GTY(()) const_tree internal_fn_fnspec_array[IFN_LAST + 1];
 
-static inline const_tree
+inline const_tree
 internal_fn_fnspec (enum internal_fn fn)
 {
   return internal_fn_fnspec_array[(int) fn];
diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h
index 546d15aea30..fcc01167d0d 100644
--- a/gcc/ipa-fnsummary.h
+++ b/gcc/ipa-fnsummary.h
@@ -435,7 +435,7 @@ void ipa_remove_from_growth_caches (struct cgraph_edge *edge);
 
 /* Return true if EDGE is a cross module call.  */
 
-static inline bool
+inline bool
 cross_module_call_p (struct cgraph_edge *edge)
 {
   /* Here we do not want to walk to alias target becuase ICF may create
diff --git a/gcc/ipa-icf-gimple.h b/gcc/ipa-icf-gimple.h
index 09a31e8e55a..1ad6421a5ba 100644
--- a/gcc/ipa-icf-gimple.h
+++ b/gcc/ipa-icf-gimple.h
@@ -39,7 +39,7 @@ along with GCC; see the file COPYING3.  If not see
 /* Logs a MESSAGE to dump_file if exists and returns false. FUNC is name
    of function and LINE is location in the source file.  */
 
-static inline bool
+inline bool
 return_false_with_message_1 (const char *message, const char *filename,
 			     const char *func, unsigned int line)
 {
@@ -59,7 +59,7 @@ return_false_with_message_1 (const char *message, const char *filename,
 /* Logs return value if RESULT is false. FUNC is name of function and LINE
    is location in the source file.  */
 
-static inline bool
+inline bool
 return_with_result (bool result, const char *filename,
 		    const char *func, unsigned int line)
 {
@@ -77,7 +77,7 @@ return_with_result (bool result, const char *filename,
 /* Verbose logging function logging statements S1 and S2 of a CODE.
    FUNC is name of function and LINE is location in the source file.  */
 
-static inline bool
+inline bool
 return_different_stmts_1 (gimple *s1, gimple *s2, const char *code,
 			  const char *func, unsigned int line)
 {
diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h
index b238316f977..70de89a8b5a 100644
--- a/gcc/ipa-inline.h
+++ b/gcc/ipa-inline.h
@@ -69,7 +69,7 @@ extern function_summary <tree *> *ipa_saved_clone_sources;
 
 /* Return estimated size of the inline sequence of EDGE.  */
 
-static inline int
+inline int
 estimate_edge_size (struct cgraph_edge *edge)
 {
   edge_growth_cache_entry *entry;
@@ -82,7 +82,7 @@ estimate_edge_size (struct cgraph_edge *edge)
 
 /* Return lower bound on estimated callee growth after inlining EDGE.  */
 
-static inline int
+inline int
 estimate_min_edge_growth (struct cgraph_edge *edge)
 {
   ipa_call_summary *s = ipa_call_summaries->get (edge);
@@ -92,7 +92,7 @@ estimate_min_edge_growth (struct cgraph_edge *edge)
 
 /* Return estimated callee growth after inlining EDGE.  */
 
-static inline int
+inline int
 estimate_edge_growth (struct cgraph_edge *edge)
 {
   ipa_call_summary *s = ipa_call_summaries->get (edge);
@@ -103,7 +103,7 @@ estimate_edge_growth (struct cgraph_edge *edge)
 /* Return estimated callee runtime increase after inlining
    EDGE.  */
 
-static inline sreal
+inline sreal
 estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
 {
   edge_growth_cache_entry *entry;
@@ -120,7 +120,7 @@ estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
 /* Return estimated callee runtime increase after inlining
    EDGE.  */
 
-static inline ipa_hints
+inline ipa_hints
 estimate_edge_hints (struct cgraph_edge *edge)
 {
   edge_growth_cache_entry *entry;
diff --git a/gcc/ipa-modref.h b/gcc/ipa-modref.h
index 7a2fd730db6..2a2d31e86db 100644
--- a/gcc/ipa-modref.h
+++ b/gcc/ipa-modref.h
@@ -108,7 +108,7 @@ static const int implicit_retslot_eaf_flags
    MODREF_FLAGS are flags determined by analysis of function body while
    FLAGS are flags known otherwise (i.e. by fnspec, pure/const attributes
    etc.)  */
-static inline int
+inline int
 interposable_eaf_flags (int modref_flags, int flags)
 {
   /* If parameter was previously unused, we know it is only read
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index ea062e00a65..a40ccc0ebbe 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -348,14 +348,14 @@ struct GTY (()) ipa_jump_func
 
 /* Return the constant stored in a constant jump functin JFUNC.  */
 
-static inline tree
+inline tree
 ipa_get_jf_constant (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_CONST);
   return jfunc->value.constant.value;
 }
 
-static inline struct ipa_cst_ref_desc *
+inline struct ipa_cst_ref_desc *
 ipa_get_jf_constant_rdesc (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_CONST);
@@ -364,7 +364,7 @@ ipa_get_jf_constant_rdesc (struct ipa_jump_func *jfunc)
 
 /* Return the operand of a pass through jmp function JFUNC.  */
 
-static inline tree
+inline tree
 ipa_get_jf_pass_through_operand (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -374,7 +374,7 @@ ipa_get_jf_pass_through_operand (struct ipa_jump_func *jfunc)
 /* Return the number of the caller's formal parameter that a pass through jump
    function JFUNC refers to.  */
 
-static inline int
+inline int
 ipa_get_jf_pass_through_formal_id (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -383,7 +383,7 @@ ipa_get_jf_pass_through_formal_id (struct ipa_jump_func *jfunc)
 
 /* Return operation of a pass through jump function JFUNC.  */
 
-static inline enum tree_code
+inline enum tree_code
 ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -392,7 +392,7 @@ ipa_get_jf_pass_through_operation (struct ipa_jump_func *jfunc)
 
 /* Return the agg_preserved flag of a pass through jump function JFUNC.  */
 
-static inline bool
+inline bool
 ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -402,7 +402,7 @@ ipa_get_jf_pass_through_agg_preserved (struct ipa_jump_func *jfunc)
 /* Return true if pass through jump function JFUNC preserves type
    information.  */
 
-static inline bool
+inline bool
 ipa_get_jf_pass_through_type_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_PASS_THROUGH);
@@ -411,7 +411,7 @@ ipa_get_jf_pass_through_type_preserved (struct ipa_jump_func *jfunc)
 
 /* Return the offset of an ancestor jump function JFUNC.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 ipa_get_jf_ancestor_offset (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -421,7 +421,7 @@ ipa_get_jf_ancestor_offset (struct ipa_jump_func *jfunc)
 /* Return the number of the caller's formal parameter that an ancestor jump
    function JFUNC refers to.  */
 
-static inline int
+inline int
 ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -430,7 +430,7 @@ ipa_get_jf_ancestor_formal_id (struct ipa_jump_func *jfunc)
 
 /* Return the agg_preserved flag of an ancestor jump function JFUNC.  */
 
-static inline bool
+inline bool
 ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -439,7 +439,7 @@ ipa_get_jf_ancestor_agg_preserved (struct ipa_jump_func *jfunc)
 
 /* Return true if ancestor jump function JFUNC presrves type information.  */
 
-static inline bool
+inline bool
 ipa_get_jf_ancestor_type_preserved (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -450,7 +450,7 @@ ipa_get_jf_ancestor_type_preserved (struct ipa_jump_func *jfunc)
    parameter for non-NULLness unless it does not matter because the offset is
    zero anyway.  */
 
-static inline bool
+inline bool
 ipa_get_jf_ancestor_keep_null (struct ipa_jump_func *jfunc)
 {
   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
@@ -701,7 +701,7 @@ struct ipa_func_body_info
 
 /* Return the number of formal parameters. */
 
-static inline int
+inline int
 ipa_get_param_count (class ipa_node_params *info)
 {
   return vec_safe_length (info->descriptors);
@@ -710,7 +710,7 @@ ipa_get_param_count (class ipa_node_params *info)
 /* Return the parameter declaration in DESCRIPTORS at index I and assert it is
    indeed a PARM_DECL.  */
 
-static inline tree
+inline tree
 ipa_get_param (const vec<ipa_param_descriptor, va_gc> &descriptors, int i)
 {
   tree t = descriptors[i].decl_or_type;
@@ -723,7 +723,7 @@ ipa_get_param (const vec<ipa_param_descriptor, va_gc> &descriptors, int i)
    using ipa_initialize_node_params.  This function should not be called in
    WPA.  */
 
-static inline tree
+inline tree
 ipa_get_param (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -733,7 +733,7 @@ ipa_get_param (class ipa_node_params *info, int i)
 /* Return the type of Ith formal parameter of the function corresponding
    to INFO if it is known or NULL if not.  */
 
-static inline tree
+inline tree
 ipa_get_type (class ipa_node_params *info, int i)
 {
   if (vec_safe_length (info->descriptors) <= (unsigned) i)
@@ -750,7 +750,7 @@ ipa_get_type (class ipa_node_params *info, int i)
 /* Return the move cost of Ith formal parameter of the function corresponding
    to INFO.  */
 
-static inline int
+inline int
 ipa_get_param_move_cost (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -760,7 +760,7 @@ ipa_get_param_move_cost (class ipa_node_params *info, int i)
 /* Set the used flag corresponding to the Ith formal parameter of the function
    associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -770,7 +770,7 @@ ipa_set_param_used (class ipa_node_params *info, int i, bool val)
 /* Set the used_by_ipa_predicates flag corresponding to the Ith formal
    parameter of the function associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used_by_ipa_predicates (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -780,7 +780,7 @@ ipa_set_param_used_by_ipa_predicates (class ipa_node_params *info, int i, bool v
 /* Set the used_by_indirect_call flag corresponding to the Ith formal
    parameter of the function associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used_by_indirect_call (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -790,7 +790,7 @@ ipa_set_param_used_by_indirect_call (class ipa_node_params *info, int i, bool va
 /* Set the .used_by_polymorphic_call flag corresponding to the Ith formal
    parameter of the function associated with INFO to VAL.  */
 
-static inline void
+inline void
 ipa_set_param_used_by_polymorphic_call (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -800,7 +800,7 @@ ipa_set_param_used_by_polymorphic_call (class ipa_node_params *info, int i, bool
 /* Return how many uses described by ipa-prop a parameter has or
    IPA_UNDESCRIBED_USE if there is a use that is not described by these
    structures.  */
-static inline int
+inline int
 ipa_get_controlled_uses (class ipa_node_params *info, int i)
 {
   /* FIXME: introducing speculation causes out of bounds access here.  */
@@ -811,7 +811,7 @@ ipa_get_controlled_uses (class ipa_node_params *info, int i)
 
 /* Set the controlled counter of a given parameter.  */
 
-static inline void
+inline void
 ipa_set_controlled_uses (class ipa_node_params *info, int i, int val)
 {
   gcc_checking_assert (info->descriptors);
@@ -820,7 +820,7 @@ ipa_set_controlled_uses (class ipa_node_params *info, int i, int val)
 
 /* Assuming a parameter does not have IPA_UNDESCRIBED_USE controlled uses,
    return flag which indicates it has been dereferenced but only in a load.  */
-static inline int
+inline int
 ipa_get_param_load_dereferenced (class ipa_node_params *info, int i)
 {
   gcc_assert (ipa_get_controlled_uses (info, i) != IPA_UNDESCRIBED_USE);
@@ -829,7 +829,7 @@ ipa_get_param_load_dereferenced (class ipa_node_params *info, int i)
 
 /* Set the load_dereferenced flag of a given parameter.  */
 
-static inline void
+inline void
 ipa_set_param_load_dereferenced (class ipa_node_params *info, int i, bool val)
 {
   gcc_checking_assert (info->descriptors);
@@ -839,7 +839,7 @@ ipa_set_param_load_dereferenced (class ipa_node_params *info, int i, bool val)
 /* Return the used flag corresponding to the Ith formal parameter of the
    function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -849,7 +849,7 @@ ipa_is_param_used (class ipa_node_params *info, int i)
 /* Return the used_by_ipa_predicates flag corresponding to the Ith formal
    parameter of the function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used_by_ipa_predicates (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -859,7 +859,7 @@ ipa_is_param_used_by_ipa_predicates (class ipa_node_params *info, int i)
 /* Return the used_by_indirect_call flag corresponding to the Ith formal
    parameter of the function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used_by_indirect_call (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -869,7 +869,7 @@ ipa_is_param_used_by_indirect_call (class ipa_node_params *info, int i)
 /* Return the used_by_polymorphic_call flag corresponding to the Ith formal
    parameter of the function associated with INFO.  */
 
-static inline bool
+inline bool
 ipa_is_param_used_by_polymorphic_call (class ipa_node_params *info, int i)
 {
   gcc_checking_assert (info->descriptors);
@@ -944,7 +944,7 @@ class GTY((for_user)) ipa_edge_args
 
 /* Return the number of actual arguments. */
 
-static inline int
+inline int
 ipa_get_cs_argument_count (class ipa_edge_args *args)
 {
   return vec_safe_length (args->jump_functions);
@@ -954,7 +954,7 @@ ipa_get_cs_argument_count (class ipa_edge_args *args)
    there is no setter function as jump functions are all set up in
    ipa_compute_jump_functions. */
 
-static inline struct ipa_jump_func *
+inline struct ipa_jump_func *
 ipa_get_ith_jump_func (class ipa_edge_args *args, int i)
 {
   return &(*args->jump_functions)[i];
@@ -962,7 +962,7 @@ ipa_get_ith_jump_func (class ipa_edge_args *args, int i)
 
 /* Returns a pointer to the polymorphic call context for the ith argument.
    NULL if contexts are not computed.  */
-static inline class ipa_polymorphic_call_context *
+inline class ipa_polymorphic_call_context *
 ipa_get_ith_polymorhic_call_context (class ipa_edge_args *args, int i)
 {
   if (!args->polymorphic_call_contexts)
@@ -1056,7 +1056,7 @@ int count_formal_params (tree fndecl);
 /* This function ensures the array of node param infos is big enough to
    accommodate a structure for all nodes and reallocates it if not.  */
 
-static inline void
+inline void
 ipa_check_create_node_params (void)
 {
   if (!ipa_node_params_sum)
@@ -1069,13 +1069,13 @@ ipa_check_create_node_params (void)
    of this function is that debug dumping function can check info availability
    without causing allocations.  */
 
-static inline bool
+inline bool
 ipa_edge_args_info_available_for_edge_p (struct cgraph_edge *edge)
 {
   return ipa_edge_args_sum->exists (edge);
 }
 
-static inline ipcp_transformation *
+inline ipcp_transformation *
 ipcp_get_transformation_summary (cgraph_node *node)
 {
   if (ipcp_transformation_sum == NULL)
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index 95ad76e96ce..e2de47213b4 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -504,7 +504,7 @@ struct ira_emit_data
 extern ira_emit_data_t ira_allocno_emit_data;
 
 /* Abbreviation for frequent emit data access.  */
-static inline rtx
+inline rtx
 allocno_emit_reg (ira_allocno_t a)
 {
   return ALLOCNO_EMIT_DATA (a)->reg;
@@ -734,7 +734,7 @@ struct minmax_set_iterator {
 
 /* Initialize the iterator I for bit vector VEC containing minimal and
    maximal values MIN and MAX.  */
-static inline void
+inline void
 minmax_set_iter_init (minmax_set_iterator *i, IRA_INT_TYPE *vec, int min,
 		      int max)
 {
@@ -749,7 +749,7 @@ minmax_set_iter_init (minmax_set_iterator *i, IRA_INT_TYPE *vec, int min,
 /* Return TRUE if we have more allocnos to visit, in which case *N is
    set to the number of the element to be visited.  Otherwise, return
    FALSE.  */
-static inline bool
+inline bool
 minmax_set_iter_cond (minmax_set_iterator *i, int *n)
 {
   /* Skip words that are zeros.  */
@@ -774,7 +774,7 @@ minmax_set_iter_cond (minmax_set_iterator *i, int *n)
 }
 
 /* Advance to the next element in the set.  */
-static inline void
+inline void
 minmax_set_iter_next (minmax_set_iterator *i)
 {
   i->word >>= 1;
@@ -1084,7 +1084,7 @@ extern void ira_emit (bool);
 \f
 
 /* Return true if equivalence of pseudo REGNO is not a lvalue.  */
-static inline bool
+inline bool
 ira_equiv_no_lvalue_p (int regno)
 {
   if (regno >= ira_reg_equiv_len)
@@ -1098,7 +1098,7 @@ ira_equiv_no_lvalue_p (int regno)
 \f
 
 /* Initialize register costs for MODE if necessary.  */
-static inline void
+inline void
 ira_init_register_move_cost_if_necessary (machine_mode mode)
 {
   if (ira_register_move_cost[mode] == NULL)
@@ -1114,7 +1114,7 @@ struct ira_allocno_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_allocno_iter_init (ira_allocno_iterator *i)
 {
   i->n = 0;
@@ -1122,7 +1122,7 @@ ira_allocno_iter_init (ira_allocno_iterator *i)
 
 /* Return TRUE if we have more allocnos to visit, in which case *A is
    set to the allocno to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_allocno_iter_cond (ira_allocno_iterator *i, ira_allocno_t *a)
 {
   int n;
@@ -1151,7 +1151,7 @@ struct ira_object_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_object_iter_init (ira_object_iterator *i)
 {
   i->n = 0;
@@ -1159,7 +1159,7 @@ ira_object_iter_init (ira_object_iterator *i)
 
 /* Return TRUE if we have more objects to visit, in which case *OBJ is
    set to the object to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_object_iter_cond (ira_object_iterator *i, ira_object_t *obj)
 {
   int n;
@@ -1188,7 +1188,7 @@ struct ira_allocno_object_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_allocno_object_iter_init (ira_allocno_object_iterator *i)
 {
   i->n = 0;
@@ -1197,7 +1197,7 @@ ira_allocno_object_iter_init (ira_allocno_object_iterator *i)
 /* Return TRUE if we have more objects to visit in allocno A, in which
    case *O is set to the object to be visited.  Otherwise, return
    FALSE.  */
-static inline bool
+inline bool
 ira_allocno_object_iter_cond (ira_allocno_object_iterator *i, ira_allocno_t a,
 			      ira_object_t *o)
 {
@@ -1225,7 +1225,7 @@ struct ira_pref_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_pref_iter_init (ira_pref_iterator *i)
 {
   i->n = 0;
@@ -1233,7 +1233,7 @@ ira_pref_iter_init (ira_pref_iterator *i)
 
 /* Return TRUE if we have more prefs to visit, in which case *PREF is
    set to the pref to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_pref_iter_cond (ira_pref_iterator *i, ira_pref_t *pref)
 {
   int n;
@@ -1263,7 +1263,7 @@ struct ira_copy_iterator {
 };
 
 /* Initialize the iterator I.  */
-static inline void
+inline void
 ira_copy_iter_init (ira_copy_iterator *i)
 {
   i->n = 0;
@@ -1271,7 +1271,7 @@ ira_copy_iter_init (ira_copy_iterator *i)
 
 /* Return TRUE if we have more copies to visit, in which case *CP is
    set to the copy to be visited.  Otherwise, return FALSE.  */
-static inline bool
+inline bool
 ira_copy_iter_cond (ira_copy_iterator *i, ira_copy_t *cp)
 {
   int n;
@@ -1324,7 +1324,7 @@ struct ira_object_conflict_iterator {
 };
 
 /* Initialize the iterator I with ALLOCNO conflicts.  */
-static inline void
+inline void
 ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
 			       ira_object_t obj)
 {
@@ -1350,7 +1350,7 @@ ira_object_conflict_iter_init (ira_object_conflict_iterator *i,
 /* Return TRUE if we have more conflicting allocnos to visit, in which
    case *A is set to the allocno to be visited.  Otherwise, return
    FALSE.  */
-static inline bool
+inline bool
 ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
 			       ira_object_t *pobj)
 {
@@ -1405,7 +1405,7 @@ ira_object_conflict_iter_cond (ira_object_conflict_iterator *i,
 /* The function returns TRUE if at least one hard register from ones
    starting with HARD_REGNO and containing value of MODE are in set
    HARD_REGSET.  */
-static inline bool
+inline bool
 ira_hard_reg_set_intersection_p (int hard_regno, machine_mode mode,
 				 HARD_REG_SET hard_regset)
 {
@@ -1419,7 +1419,7 @@ ira_hard_reg_set_intersection_p (int hard_regno, machine_mode mode,
 }
 
 /* Return number of hard registers in hard register SET.  */
-static inline int
+inline int
 hard_reg_set_size (HARD_REG_SET set)
 {
   int i, size;
@@ -1433,7 +1433,7 @@ hard_reg_set_size (HARD_REG_SET set)
 /* The function returns TRUE if hard registers starting with
    HARD_REGNO and containing value of MODE are fully in set
    HARD_REGSET.  */
-static inline bool
+inline bool
 ira_hard_reg_in_set_p (int hard_regno, machine_mode mode,
 		       HARD_REG_SET hard_regset)
 {
@@ -1454,7 +1454,7 @@ ira_hard_reg_in_set_p (int hard_regno, machine_mode mode,
 
 /* Allocate cost vector *VEC for hard registers of ACLASS and
    initialize the elements by VAL if it is necessary */
-static inline void
+inline void
 ira_allocate_and_set_costs (int **vec, reg_class_t aclass, int val)
 {
   int i, *reg_costs;
@@ -1470,7 +1470,7 @@ ira_allocate_and_set_costs (int **vec, reg_class_t aclass, int val)
 
 /* Allocate cost vector *VEC for hard registers of ACLASS and copy
    values of vector SRC into the vector if it is necessary */
-static inline void
+inline void
 ira_allocate_and_copy_costs (int **vec, enum reg_class aclass, int *src)
 {
   int len;
@@ -1484,7 +1484,7 @@ ira_allocate_and_copy_costs (int **vec, enum reg_class aclass, int *src)
 
 /* Allocate cost vector *VEC for hard registers of ACLASS and add
    values of vector SRC into the vector if it is necessary */
-static inline void
+inline void
 ira_allocate_and_accumulate_costs (int **vec, enum reg_class aclass, int *src)
 {
   int i, len;
@@ -1504,7 +1504,7 @@ ira_allocate_and_accumulate_costs (int **vec, enum reg_class aclass, int *src)
 /* Allocate cost vector *VEC for hard registers of ACLASS and copy
    values of vector SRC into the vector or initialize it by VAL (if
    SRC is null).  */
-static inline void
+inline void
 ira_allocate_and_set_or_copy_costs (int **vec, enum reg_class aclass,
 				    int val, int *src)
 {
diff --git a/gcc/ira.h b/gcc/ira.h
index 3d35025a46e..9c48f94cec9 100644
--- a/gcc/ira.h
+++ b/gcc/ira.h
@@ -235,7 +235,7 @@ extern rtx non_conflicting_reg_copy_p (rtx_insn *);
    non-local goto code using frame-pointer to address saved stack
    pointer value after restoring old frame pointer value.  The
    function returns TRUE if REGNO is such a static chain pseudo.  */
-static inline bool
+inline bool
 non_spilled_static_chain_regno_p (int regno)
 {
   return (cfun->static_chain_decl && crtl->has_nonlocal_goto
diff --git a/gcc/jit/jit-dejagnu.h b/gcc/jit/jit-dejagnu.h
index 86f6ad3e14d..bdf57857537 100644
--- a/gcc/jit/jit-dejagnu.h
+++ b/gcc/jit/jit-dejagnu.h
@@ -66,7 +66,7 @@ dg_wait (void)
 }
 #endif
 
-static inline void
+inline void
 pass (const char* fmt, ...)
 {
   va_list ap;
@@ -81,7 +81,7 @@ pass (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 xpass (const char* fmt, ...)
 {
   va_list ap;
@@ -96,7 +96,7 @@ xpass (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 fail (const char* fmt, ...)
 {
   va_list ap;
@@ -111,7 +111,7 @@ fail (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 xfail (const char* fmt, ...)
 {
   va_list ap;
@@ -126,7 +126,7 @@ xfail (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 untested (const char* fmt, ...)
 {
   va_list ap;
@@ -141,7 +141,7 @@ untested (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 unresolved (const char* fmt, ...)
 {
   va_list ap;
@@ -156,7 +156,7 @@ unresolved (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 note (const char* fmt, ...)
 {
   va_list ap;
@@ -170,7 +170,7 @@ note (const char* fmt, ...)
 #endif
 }
 
-static inline void
+inline void
 totals (void)
 {
   printf ("\nTotals:\n");
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index 2dc9448d7c9..400cf345600 100644
--- a/gcc/jit/jit-recording.h
+++ b/gcc/jit/jit-recording.h
@@ -2556,7 +2556,7 @@ types_kinda_same_internal (recording::type *a,
 
    For array and vector types the number of element also
    has to match, aswell as the element types themself.  */
-static inline bool
+inline bool
 types_kinda_same (recording::type *a, recording::type *b)
 {
   /* Handle trivial case here, to allow for inlining.  */
diff --git a/gcc/lra-int.h b/gcc/lra-int.h
index 2f1450b345c..73f8eb004b0 100644
--- a/gcc/lra-int.h
+++ b/gcc/lra-int.h
@@ -419,7 +419,7 @@ extern void lra_eliminate_reg_if_possible (rtx *);
 /* Return the hard register which given pseudo REGNO assigned to.
    Negative value means that the register got memory or we don't know
    allocation yet.  */
-static inline int
+inline int
 lra_get_regno_hard_regno (int regno)
 {
   resize_reg_info ();
@@ -443,7 +443,7 @@ lra_change_class (int regno, enum reg_class new_class,
 
 /* Update insn operands which are duplication of NOP operand.  The
    insn is represented by its LRA internal representation ID.  */
-static inline void
+inline void
 lra_update_dup (lra_insn_recog_data_t id, int nop)
 {
   int i;
@@ -458,7 +458,7 @@ lra_update_dup (lra_insn_recog_data_t id, int nop)
    operands processing.	 Generally speaking, we could do this probably
    simultaneously with operands processing because a common practice
    is to enumerate the operators after their operands.	*/
-static inline void
+inline void
 lra_update_operator_dups (lra_insn_recog_data_t id)
 {
   int i;
@@ -474,7 +474,7 @@ lra_update_operator_dups (lra_insn_recog_data_t id)
 }
 
 /* Return info about INSN.  Set up the info if it is not done yet.  */
-static inline lra_insn_recog_data_t
+inline lra_insn_recog_data_t
 lra_get_insn_recog_data (rtx_insn *insn)
 {
   lra_insn_recog_data_t data;
@@ -494,7 +494,7 @@ lra_get_insn_recog_data (rtx_insn *insn)
 }
 
 /* Update offset from pseudos with VAL by INCR.  */
-static inline void
+inline void
 lra_update_reg_val_offset (int val, poly_int64 incr)
 {
   int i;
@@ -507,7 +507,7 @@ lra_update_reg_val_offset (int val, poly_int64 incr)
 }
 
 /* Return true if register content is equal to VAL with OFFSET.  */
-static inline bool
+inline bool
 lra_reg_val_equal_p (int regno, int val, poly_int64 offset)
 {
   if (lra_reg_info[regno].val == val
@@ -518,7 +518,7 @@ lra_reg_val_equal_p (int regno, int val, poly_int64 offset)
 }
 
 /* Assign value of register FROM to TO.  */
-static inline void
+inline void
 lra_assign_reg_val (int from, int to)
 {
   lra_reg_info[to].val = lra_reg_info[from].val;
diff --git a/gcc/lra.h b/gcc/lra.h
index ec25947d5fa..85dbf927414 100644
--- a/gcc/lra.h
+++ b/gcc/lra.h
@@ -27,7 +27,7 @@ extern bool lra_simple_p;
 /* Return the allocno reg class of REGNO.  If it is a reload pseudo,
    the pseudo should finally get hard register of the allocno
    class.  */
-static inline enum reg_class
+inline enum reg_class
 lra_get_allocno_class (int regno)
 {
   resize_reg_info ();
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index d544dabe184..fc7133d07ba 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -969,7 +969,7 @@ extern const char *lto_section_name[];
 extern vec<lto_out_decl_state_ptr> lto_function_decl_states;
 
 /* Return true if LTO tag TAG corresponds to a tree code.  */
-static inline bool
+inline bool
 lto_tag_is_tree_code_p (enum LTO_tags tag)
 {
   return tag > LTO_first_tree_tag && (unsigned) tag <= MAX_TREE_CODES;
@@ -977,7 +977,7 @@ lto_tag_is_tree_code_p (enum LTO_tags tag)
 
 
 /* Return true if LTO tag TAG corresponds to a gimple code.  */
-static inline bool
+inline bool
 lto_tag_is_gimple_code_p (enum LTO_tags tag)
 {
   return (unsigned) tag >= LTO_first_gimple_tag
@@ -988,7 +988,7 @@ lto_tag_is_gimple_code_p (enum LTO_tags tag)
 
 /* Return the LTO tag corresponding to gimple code CODE.  See enum
    LTO_tags for details on the conversion.  */
-static inline enum LTO_tags
+inline enum LTO_tags
 lto_gimple_code_to_tag (enum gimple_code code)
 {
   return (enum LTO_tags) ((unsigned) code + LTO_first_gimple_tag);
@@ -997,7 +997,7 @@ lto_gimple_code_to_tag (enum gimple_code code)
 
 /* Return the GIMPLE code corresponding to TAG.  See enum LTO_tags for
    details on the conversion.  */
-static inline enum gimple_code
+inline enum gimple_code
 lto_tag_to_gimple_code (enum LTO_tags tag)
 {
   gcc_assert (lto_tag_is_gimple_code_p (tag));
@@ -1007,7 +1007,7 @@ lto_tag_to_gimple_code (enum LTO_tags tag)
 
 /* Return the LTO tag corresponding to tree code CODE.  See enum
    LTO_tags for details on the conversion.  */
-static inline enum LTO_tags
+inline enum LTO_tags
 lto_tree_code_to_tag (enum tree_code code)
 {
   return (enum LTO_tags) ((unsigned) code + LTO_first_tree_tag);
@@ -1016,7 +1016,7 @@ lto_tree_code_to_tag (enum tree_code code)
 
 /* Return the tree code corresponding to TAG.  See enum LTO_tags for
    details on the conversion.  */
-static inline enum tree_code
+inline enum tree_code
 lto_tag_to_tree_code (enum LTO_tags tag)
 {
   gcc_assert (lto_tag_is_tree_code_p (tag));
@@ -1024,7 +1024,7 @@ lto_tag_to_tree_code (enum LTO_tags tag)
 }
 
 /* Check that tag ACTUAL == EXPECTED.  */
-static inline void
+inline void
 lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
 {
   if (actual != expected)
@@ -1033,7 +1033,7 @@ lto_tag_check (enum LTO_tags actual, enum LTO_tags expected)
 }
 
 /* Check that tag ACTUAL is in the range [TAG1, TAG2].  */
-static inline void
+inline void
 lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1,
 		     enum LTO_tags tag2)
 {
@@ -1046,7 +1046,7 @@ lto_tag_check_range (enum LTO_tags actual, enum LTO_tags tag1,
 }
 
 /* Initialize an lto_out_decl_buffer ENCODER.  */
-static inline void
+inline void
 lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 {
   encoder->tree_hash_table = new hash_map<tree, unsigned> (251);
@@ -1056,7 +1056,7 @@ lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 
 /* Destroy an lto_tree_ref_encoder ENCODER by freeing its contents.  The
    memory used by ENCODER is not freed by this function.  */
-static inline void
+inline void
 lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 {
   /* Hash table may be delete already.  */
@@ -1066,14 +1066,14 @@ lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
 }
 
 /* Return the number of trees encoded in ENCODER. */
-static inline unsigned int
+inline unsigned int
 lto_tree_ref_encoder_size (struct lto_tree_ref_encoder *encoder)
 {
   return encoder->trees.length ();
 }
 
 /* Return the IDX-th tree in ENCODER. */
-static inline tree
+inline tree
 lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder,
 			       unsigned int idx)
 {
@@ -1081,7 +1081,7 @@ lto_tree_ref_encoder_get_tree (struct lto_tree_ref_encoder *encoder,
 }
 
 /* Return number of encoded nodes in ENCODER.  */
-static inline int
+inline int
 lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
 {
   return encoder->nodes.length ();
@@ -1093,7 +1093,7 @@ lto_symtab_encoder_size (lto_symtab_encoder_t encoder)
 /* Look up NODE in encoder.  Return NODE's reference if it has been encoded
    or LCC_NOT_FOUND if it is not there.  */
 
-static inline int
+inline int
 lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
 			   symtab_node *node)
 {
@@ -1102,35 +1102,35 @@ lto_symtab_encoder_lookup (lto_symtab_encoder_t encoder,
 }
 
 /* Return true if iterator LSE points to nothing.  */
-static inline bool
+inline bool
 lsei_end_p (lto_symtab_encoder_iterator lsei)
 {
   return lsei.index >= (unsigned)lto_symtab_encoder_size (lsei.encoder);
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next (lto_symtab_encoder_iterator *lsei)
 {
   lsei->index++;
 }
 
 /* Return the node pointed to by LSI.  */
-static inline symtab_node *
+inline symtab_node *
 lsei_node (lto_symtab_encoder_iterator lsei)
 {
   return lsei.encoder->nodes[lsei.index].node;
 }
 
 /* Return the node pointed to by LSI.  */
-static inline struct cgraph_node *
+inline struct cgraph_node *
 lsei_cgraph_node (lto_symtab_encoder_iterator lsei)
 {
   return dyn_cast<cgraph_node *> (lsei.encoder->nodes[lsei.index].node);
 }
 
 /* Return the node pointed to by LSI.  */
-static inline varpool_node *
+inline varpool_node *
 lsei_varpool_node (lto_symtab_encoder_iterator lsei)
 {
   return dyn_cast<varpool_node *> (lsei.encoder->nodes[lsei.index].node);
@@ -1138,7 +1138,7 @@ lsei_varpool_node (lto_symtab_encoder_iterator lsei)
 
 /* Return the cgraph node corresponding to REF using ENCODER.  */
 
-static inline symtab_node *
+inline symtab_node *
 lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
 {
   if (ref == LCC_NOT_FOUND)
@@ -1148,7 +1148,7 @@ lto_symtab_encoder_deref (lto_symtab_encoder_t encoder, int ref)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei;
@@ -1159,7 +1159,7 @@ lsei_start (lto_symtab_encoder_t encoder)
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
 {
   lsei_next (lsei);
@@ -1169,7 +1169,7 @@ lsei_next_in_partition (lto_symtab_encoder_iterator *lsei)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start_in_partition (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei = lsei_start (encoder);
@@ -1183,7 +1183,7 @@ lsei_start_in_partition (lto_symtab_encoder_t encoder)
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
 {
   lsei_next (lsei);
@@ -1194,7 +1194,7 @@ lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei = lsei_start (encoder);
@@ -1209,7 +1209,7 @@ lsei_start_function_in_partition (lto_symtab_encoder_t encoder)
 }
 
 /* Advance iterator LSE.  */
-static inline void
+inline void
 lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
 {
   lsei_next (lsei);
@@ -1220,7 +1220,7 @@ lsei_next_variable_in_partition (lto_symtab_encoder_iterator *lsei)
 }
 
 /* Return an iterator to the first node in LSI.  */
-static inline lto_symtab_encoder_iterator
+inline lto_symtab_encoder_iterator
 lsei_start_variable_in_partition (lto_symtab_encoder_t encoder)
 {
   lto_symtab_encoder_iterator lsei = lsei_start (encoder);
diff --git a/gcc/memmodel.h b/gcc/memmodel.h
index 308beca18ba..7dfad2fb6b1 100644
--- a/gcc/memmodel.h
+++ b/gcc/memmodel.h
@@ -51,63 +51,63 @@ enum memmodel
 };
 
 /* Return the memory model from a host integer.  */
-static inline enum memmodel
+inline enum memmodel
 memmodel_from_int (unsigned HOST_WIDE_INT val)
 {
   return (enum memmodel) (val & MEMMODEL_MASK);
 }
 
 /* Return the base memory model from a host integer.  */
-static inline enum memmodel
+inline enum memmodel
 memmodel_base (unsigned HOST_WIDE_INT val)
 {
   return (enum memmodel) (val & MEMMODEL_BASE_MASK);
 }
 
 /* Return TRUE if the memory model is RELAXED.  */
-static inline bool
+inline bool
 is_mm_relaxed (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELAXED;
 }
 
 /* Return TRUE if the memory model is CONSUME.  */
-static inline bool
+inline bool
 is_mm_consume (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_CONSUME;
 }
 
 /* Return TRUE if the memory model is ACQUIRE.  */
-static inline bool
+inline bool
 is_mm_acquire (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQUIRE;
 }
 
 /* Return TRUE if the memory model is RELEASE.  */
-static inline bool
+inline bool
 is_mm_release (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELEASE;
 }
 
 /* Return TRUE if the memory model is ACQ_REL.  */
-static inline bool
+inline bool
 is_mm_acq_rel (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQ_REL;
 }
 
 /* Return TRUE if the memory model is SEQ_CST.  */
-static inline bool
+inline bool
 is_mm_seq_cst (enum memmodel model)
 {
   return (model & MEMMODEL_BASE_MASK) == MEMMODEL_SEQ_CST;
 }
 
 /* Return TRUE if the memory model is a SYNC variant.  */
-static inline bool
+inline bool
 is_mm_sync (enum memmodel model)
 {
   return (model & MEMMODEL_SYNC);
diff --git a/gcc/objc/objc-act.cc b/gcc/objc/objc-act.cc
index b3517d35180..08201749207 100644
--- a/gcc/objc/objc-act.cc
+++ b/gcc/objc/objc-act.cc
@@ -117,7 +117,6 @@ static tree build_method_decl (enum tree_code, tree, tree, tree, bool);
 static tree objc_add_method (tree, tree, int, bool);
 static tree add_instance_variable (tree, objc_ivar_visibility_kind, tree);
 static tree build_ivar_reference (tree);
-static tree is_ivar (tree, tree);
 
 /* We only need the following for ObjC; ObjC++ will use C++'s definition
    of DERIVED_FROM_P.  */
@@ -169,7 +168,6 @@ static tree lookup_method_static (tree, tree, int);
 static void interface_hash_init (void);
 static tree add_interface (tree, tree);
 static void add_category (tree, tree);
-static inline tree lookup_category (tree, tree);
 
 /* Protocols.  */
 
diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h
index 775f74adfc9..e21ab52d8ca 100644
--- a/gcc/objc/objc-act.h
+++ b/gcc/objc/objc-act.h
@@ -745,7 +745,7 @@ size_t objc_common_tree_size (enum tree_code code);
 #define objc_is_class_id(TYPE) (OBJC_TYPE_NAME (TYPE) == objc_class_id)
 
 /* Retrieve category interface CAT_NAME (if any) associated with CLASS.  */
-static inline tree
+inline tree
 lookup_category (tree klass, tree cat_name)
 {
   tree category = CLASS_CATEGORY_LIST (klass);
@@ -756,7 +756,7 @@ lookup_category (tree klass, tree cat_name)
 }
 
 /* Count only the fields occurring in T.  */
-static inline int
+inline int
 ivar_list_length (tree t)
 {
   int count = 0;
@@ -768,7 +768,7 @@ ivar_list_length (tree t)
   return count;
 }
 
-static inline tree
+inline tree
 is_ivar (tree decl_chain, tree ident)
 {
   for ( ; decl_chain; decl_chain = DECL_CHAIN (decl_chain))
diff --git a/gcc/objc/objc-map.h b/gcc/objc/objc-map.h
index 4842abc1431..1e1b5fd419b 100644
--- a/gcc/objc/objc-map.h
+++ b/gcc/objc/objc-map.h
@@ -133,7 +133,7 @@ int objc_map_maximum_load_factor (objc_map_t map);
    value NULL, and objc_map_get() will return NULL in that case.
    So a result of NULL means that they key *was* found, and the value
    associated with it was NULL.  */
-static inline tree
+inline tree
 objc_map_get (objc_map_t map, /* struct tree_identifier * */tree key)
 {
   /* The inline implementation is private and may change without notice.  */
@@ -169,7 +169,7 @@ objc_map_get (objc_map_t map, /* struct tree_identifier * */tree key)
    You can use any identifier as key, with the exception of NULL.
 
    You can use any tree as value, including NULL.  */
-static inline
+inline
 void objc_map_put (objc_map_t map, /*struct tree_identifier * */tree key, tree value)
 {
   /* The inline implementation is private and may change without notice.  */
@@ -243,7 +243,7 @@ typedef size_t objc_map_iterator_t;
 /* Initialize an iterator to iterate over the specified objc_map.  You
    must use this before starting the iteration, to get a working
    iterator.  */
-static inline
+inline
 void
 objc_map_iterator_initialize (objc_map_t map ATTRIBUTE_UNUSED, objc_map_iterator_t *i)
 {
@@ -262,7 +262,7 @@ objc_map_iterator_initialize (objc_map_t map ATTRIBUTE_UNUSED, objc_map_iterator
    been initialized using objc_map_iterator_initialize().  Note that
    because this function is modifying the iterator, you need to pass a
    pointer to it.  */
-static inline
+inline
 int
 objc_map_iterator_move_to_next (objc_map_t map, objc_map_iterator_t *i)
 {
@@ -285,7 +285,7 @@ objc_map_iterator_move_to_next (objc_map_t map, objc_map_iterator_t *i)
    first element), and only if the last call returned
    OBJC_MAP_SUCCESS.  The behavior is otherwise undefined, probably a
    segmentation fault.  */
-static inline
+inline
 tree
 objc_map_iterator_current_key (objc_map_t map, objc_map_iterator_t i)
 {
@@ -298,7 +298,7 @@ objc_map_iterator_current_key (objc_map_t map, objc_map_iterator_t i)
    the first element), and only if the last call returned
    OBJC_MAP_SUCCESS.  The behavior is otherwise undefined, probably a
    segmentation fault.  */
-static inline
+inline
 tree
 objc_map_iterator_current_value (objc_map_t map, objc_map_iterator_t i)
 {
diff --git a/gcc/omp-general.h b/gcc/omp-general.h
index 74e30c5e313..92717db1628 100644
--- a/gcc/omp-general.h
+++ b/gcc/omp-general.h
@@ -137,7 +137,7 @@ enum omp_requires {
 
 extern GTY(()) enum omp_requires omp_requires_mask;
 
-static inline dump_flags_t
+inline dump_flags_t
 get_openacc_privatization_dump_flags ()
 {
   dump_flags_t l_dump_flags = MSG_NOTE;
diff --git a/gcc/optabs-query.h b/gcc/optabs-query.h
index ed03bbcc3c3..b266d2fe990 100644
--- a/gcc/optabs-query.h
+++ b/gcc/optabs-query.h
@@ -92,7 +92,7 @@ trapv_binoptab_p (optab binoptab)
 /* Return insn code for a comparison operator with VMODE
    resultin MASK_MODE, unsigned if UNS is true.  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
 {
   optab tab = uns ? vec_cmpu_optab : vec_cmp_optab;
@@ -102,7 +102,7 @@ get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
 /* Return insn code for a comparison operator with VMODE
    resultin MASK_MODE (only for EQ/NE).  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vec_cmp_eq_icode (machine_mode vmode, machine_mode mask_mode)
 {
   return convert_optab_handler (vec_cmpeq_optab, vmode, mask_mode);
@@ -125,7 +125,7 @@ get_vcond_icode (machine_mode vmode, machine_mode cmode, bool uns)
 /* Return insn code for a conditional operator with a mask mode
    MMODE resulting in a value of mode VMODE.  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vcond_mask_icode (machine_mode vmode, machine_mode mmode)
 {
   return convert_optab_handler (vcond_mask_optab, vmode, mmode);
@@ -134,7 +134,7 @@ get_vcond_mask_icode (machine_mode vmode, machine_mode mmode)
 /* Return insn code for a conditional operator with a comparison in
    mode CMODE (only EQ/NE), resulting in a value of mode VMODE.  */
 
-static inline enum insn_code
+inline enum insn_code
 get_vcond_eq_icode (machine_mode vmode, machine_mode cmode)
 {
   return convert_optab_handler (vcondeq_optab, vmode, cmode);
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 7ab2a85e818..29ccbe9235e 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -70,7 +70,7 @@ public:
 /* Initialize OP with the given fields.  Initialise the other fields
    to their default values.  */
 
-static inline void
+inline void
 create_expand_operand (class expand_operand *op,
 		       enum expand_operand_type type,
 		       rtx value, machine_mode mode,
@@ -87,7 +87,7 @@ create_expand_operand (class expand_operand *op,
 
 /* Make OP describe an operand that must use rtx X, even if X is volatile.  */
 
-static inline void
+inline void
 create_fixed_operand (class expand_operand *op, rtx x)
 {
   create_expand_operand (op, EXPAND_FIXED, x, VOIDmode, false);
@@ -98,7 +98,7 @@ create_fixed_operand (class expand_operand *op, rtx x)
    It is OK for VALUE to be inconsistent with MODE, although it will just
    be ignored in that case.  */
 
-static inline void
+inline void
 create_output_operand (class expand_operand *op, rtx x,
 		       machine_mode mode)
 {
@@ -110,7 +110,7 @@ create_output_operand (class expand_operand *op, rtx x,
    VALUE be copied into a different kind of rtx before being passed
    as an operand.  */
 
-static inline void
+inline void
 create_input_operand (class expand_operand *op, rtx value,
 		      machine_mode mode)
 {
@@ -120,7 +120,7 @@ create_input_operand (class expand_operand *op, rtx value,
 /* Like create_input_operand, except that VALUE must first be converted
    to mode MODE.  UNSIGNED_P says whether VALUE is unsigned.  */
 
-static inline void
+inline void
 create_convert_operand_to (class expand_operand *op, rtx value,
 			   machine_mode mode, bool unsigned_p)
 {
@@ -136,7 +136,7 @@ create_convert_operand_to (class expand_operand *op, rtx value,
    conversion (as for convert_modes) and duplicating a scalar to fill
    a vector (if VALUE is a scalar but the operand is a vector).  */
 
-static inline void
+inline void
 create_convert_operand_from (class expand_operand *op, rtx value,
 			     machine_mode mode, bool unsigned_p)
 {
@@ -147,7 +147,7 @@ create_convert_operand_from (class expand_operand *op, rtx value,
 /* Make OP describe an input Pmode address operand.  VALUE is the value
    of the address, but it may need to be converted to Pmode first.  */
 
-static inline void
+inline void
 create_address_operand (class expand_operand *op, rtx value)
 {
   create_expand_operand (op, EXPAND_ADDRESS, value, Pmode, false);
diff --git a/gcc/plugin.h b/gcc/plugin.h
index 3b6f7fd19ee..ee0a53ec4c9 100644
--- a/gcc/plugin.h
+++ b/gcc/plugin.h
@@ -184,7 +184,7 @@ extern bool flag_plugin_added;
    EVENT    - the event identifier
    GCC_DATA - event-specific data provided by the compiler  */
 
-static inline int
+inline int
 invoke_plugin_callbacks (int event ATTRIBUTE_UNUSED,
 			 void *gcc_data ATTRIBUTE_UNUSED)
 {
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index c7788d720f8..0230a289df5 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -113,7 +113,7 @@ public:
 
 /* Finishes constructing a NULL-terminated character string representing
    the buffered text.  */
-static inline const char *
+inline const char *
 output_buffer_formatted_text (output_buffer *buff)
 {
   obstack_1grow (buff->obstack, '\0');
@@ -122,7 +122,7 @@ output_buffer_formatted_text (output_buffer *buff)
 
 /* Append to the output buffer a string specified by its
    STARTing character and LENGTH.  */
-static inline void
+inline void
 output_buffer_append_r (output_buffer *buff, const char *start, int length)
 {
   gcc_checking_assert (start);
@@ -136,7 +136,7 @@ output_buffer_append_r (output_buffer *buff, const char *start, int length)
 
 /*  Return a pointer to the last character emitted in the
     output_buffer.  A NULL pointer means no character available.  */
-static inline const char *
+inline const char *
 output_buffer_last_position_in_text (const output_buffer *buff)
 {
   const char *p = NULL;
@@ -283,7 +283,7 @@ public:
   diagnostic_url_format url_format;
 };
 
-static inline const char *
+inline const char *
 pp_get_prefix (const pretty_printer *pp) { return pp->prefix; }
 
 #define pp_space(PP)            pp_character (PP, ' ')
@@ -415,7 +415,7 @@ extern void pp_begin_url (pretty_printer *pp, const char *url);
 extern void pp_end_url (pretty_printer *pp);
 
 /* Switch into verbatim mode and return the old mode.  */
-static inline pp_wrapping_mode_t
+inline pp_wrapping_mode_t
 pp_set_verbatim_wrapping_ (pretty_printer *pp)
 {
   pp_wrapping_mode_t oldmode = pp_wrapping_mode (pp);
diff --git a/gcc/range.h b/gcc/range.h
index 12f907c4abf..3b0e9efffbf 100644
--- a/gcc/range.h
+++ b/gcc/range.h
@@ -28,7 +28,7 @@ value_range range_negatives (tree type);
 
 // Return an irange instance that is a boolean TRUE.
 
-static inline int_range<1>
+inline int_range<1>
 range_true (tree type)
 {
   unsigned prec = TYPE_PRECISION (type);
@@ -37,7 +37,7 @@ range_true (tree type)
 
 // Return an irange instance that is a boolean FALSE.
 
-static inline int_range<1>
+inline int_range<1>
 range_false (tree type)
 {
   unsigned prec = TYPE_PRECISION (type);
@@ -46,7 +46,7 @@ range_false (tree type)
 
 // Return an irange that covers both true and false.
 
-static inline int_range<1>
+inline int_range<1>
 range_true_and_false (tree type)
 {
   unsigned prec = TYPE_PRECISION (type);
diff --git a/gcc/read-md.h b/gcc/read-md.h
index cc0670a04b5..b309c9c3deb 100644
--- a/gcc/read-md.h
+++ b/gcc/read-md.h
@@ -375,7 +375,7 @@ extern void (*include_callback) (const char *);
 
 /* Read the next character from the MD file.  */
 
-static inline int
+inline int
 read_char (void)
 {
   return md_reader_ptr->read_char ();
@@ -383,7 +383,7 @@ read_char (void)
 
 /* Put back CH, which was the last character read from the MD file.  */
 
-static inline void
+inline void
 unread_char (int ch)
 {
   md_reader_ptr->unread_char (ch);
diff --git a/gcc/recog.h b/gcc/recog.h
index 86da3c2bdbb..764fa90afde 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -76,7 +76,7 @@ struct operand_alternative
 /* Return the class for operand I of alternative ALT, taking matching
    constraints into account.  */
 
-static inline enum reg_class
+inline enum reg_class
 alternative_class (const operand_alternative *alt, int i)
 {
   return alt[i].matches >= 0 ? alt[alt[i].matches].cl : alt[i].cl;
@@ -229,7 +229,7 @@ extern bool mode_dependent_address_p (rtx, addr_space_t);
 
 extern int recog (rtx, rtx_insn *, int *);
 #ifndef GENERATOR_FILE
-static inline int recog_memoized (rtx_insn *insn);
+inline int recog_memoized (rtx_insn *insn);
 #endif
 extern void add_clobbers (rtx, int);
 extern int added_clobbers_hard_reg_p (int);
@@ -266,7 +266,7 @@ extern void copy_frame_info_to_split_insn (rtx_insn *, rtx_insn *);
    The automatically-generated function `recog' is normally called
    through this one.  */
 
-static inline int
+inline int
 recog_memoized (rtx_insn *insn)
 {
   if (INSN_CODE (insn) < 0)
@@ -277,7 +277,7 @@ recog_memoized (rtx_insn *insn)
 
 /* Skip chars until the next ',' or the end of the string.  This is
    useful to skip alternatives in a constraint string.  */
-static inline const char *
+inline const char *
 skip_alternative (const char *p)
 {
   const char *r = p;
diff --git a/gcc/regs.h b/gcc/regs.h
index d0f029f7749..aea093ed795 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -64,7 +64,7 @@ struct regstat_n_sets_and_refs_t
 extern struct regstat_n_sets_and_refs_t *regstat_n_sets_and_refs;
 
 /* Indexed by n, gives number of times (REG n) is used or set.  */
-static inline int
+inline int
 REG_N_REFS (int regno)
 {
   return regstat_n_sets_and_refs[regno].refs;
@@ -75,7 +75,7 @@ REG_N_REFS (int regno)
 #define INC_REG_N_REFS(N,V) (regstat_n_sets_and_refs[N].refs += V)
 
 /* Indexed by n, gives number of times (REG n) is set.  */
-static inline int
+inline int
 REG_N_SETS (int regno)
 {
   return regstat_n_sets_and_refs[regno].sets;
@@ -266,7 +266,7 @@ hard_regno_nregs (unsigned int regno, machine_mode mode)
 /* Return an exclusive upper bound on the registers occupied by hard
    register (reg:MODE REGNO).  */
 
-static inline unsigned int
+inline unsigned int
 end_hard_regno (machine_mode mode, unsigned int regno)
 {
   return regno + hard_regno_nregs (regno, mode);
@@ -275,7 +275,7 @@ end_hard_regno (machine_mode mode, unsigned int regno)
 /* Add to REGS all the registers required to store a value of mode MODE
    in register REGNO.  */
 
-static inline void
+inline void
 add_to_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 		     unsigned int regno)
 {
@@ -289,7 +289,7 @@ add_to_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 
 /* Likewise, but remove the registers.  */
 
-static inline void
+inline void
 remove_from_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 			  unsigned int regno)
 {
@@ -303,7 +303,7 @@ remove_from_hard_reg_set (HARD_REG_SET *regs, machine_mode mode,
 
 /* Return true if REGS contains the whole of (reg:MODE REGNO).  */
 
-static inline bool
+inline bool
 in_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 		   unsigned int regno)
 {
@@ -328,7 +328,7 @@ in_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 
 /* Return true if (reg:MODE REGNO) includes an element of REGS.  */
 
-static inline bool
+inline bool
 overlaps_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 			 unsigned int regno)
 {
@@ -348,7 +348,7 @@ overlaps_hard_reg_set_p (const_hard_reg_set regs, machine_mode mode,
 /* Like add_to_hard_reg_set, but use a REGNO/NREGS range instead of
    REGNO and MODE.  */
 
-static inline void
+inline void
 add_range_to_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 			   int nregs)
 {
@@ -358,7 +358,7 @@ add_range_to_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 
 /* Likewise, but remove the registers.  */
 
-static inline void
+inline void
 remove_range_from_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 				int nregs)
 {
@@ -368,7 +368,7 @@ remove_range_from_hard_reg_set (HARD_REG_SET *regs, unsigned int regno,
 
 /* Like overlaps_hard_reg_set_p, but use a REGNO/NREGS range instead of
    REGNO and MODE.  */
-static inline bool
+inline bool
 range_overlaps_hard_reg_set_p (const_hard_reg_set set, unsigned regno,
 			       int nregs)
 {
@@ -380,7 +380,7 @@ range_overlaps_hard_reg_set_p (const_hard_reg_set set, unsigned regno,
 
 /* Like in_hard_reg_set_p, but use a REGNO/NREGS range instead of
    REGNO and MODE.  */
-static inline bool
+inline bool
 range_in_hard_reg_set_p (const_hard_reg_set set, unsigned regno, int nregs)
 {
   while (nregs-- > 0)
diff --git a/gcc/rtl-iter.h b/gcc/rtl-iter.h
index df7b4960cce..00ce4f12cac 100644
--- a/gcc/rtl-iter.h
+++ b/gcc/rtl-iter.h
@@ -39,7 +39,7 @@ extern rtx_subrtx_bound_info rtx_nonconst_subrtx_bounds[];
 
 /* Return true if CODE has no subrtxes.  */
 
-static inline bool
+inline bool
 leaf_code_p (enum rtx_code code)
 {
   return rtx_all_subrtx_bounds[code].count == 0;
diff --git a/gcc/rtl.h b/gcc/rtl.h
index f9057123127..52f0419af29 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1895,7 +1895,7 @@ inline void rtx_jump_insn::set_jump_target (rtx_code_label *target)
 #define LABEL_REFS(LABEL) XCEXP (LABEL, 3, CODE_LABEL)
 
 /* Get the label that a LABEL_REF references.  */
-static inline rtx_insn *
+inline rtx_insn *
 label_ref_label (const_rtx ref)
 {
   return as_a<rtx_insn *> (XCEXP (ref, 0, LABEL_REF));
@@ -1903,7 +1903,7 @@ label_ref_label (const_rtx ref)
 
 /* Set the label that LABEL_REF ref refers to.  */
 
-static inline void
+inline void
 set_label_ref_label (rtx ref, rtx_insn *label)
 {
   XCEXP (ref, 0, LABEL_REF) = label;
@@ -1926,14 +1926,14 @@ set_label_ref_label (rtx ref, rtx_insn *label)
   (RTL_FLAG_CHECK1 ("ORIGINAL_REGNO", (RTX), REG)->u2.original_regno)
 
 /* Force the REGNO macro to only be used on the lhs.  */
-static inline unsigned int
+inline unsigned int
 rhs_regno (const_rtx x)
 {
   return REG_CHECK (x)->regno;
 }
 
 /* Return the final register in REG X plus one.  */
-static inline unsigned int
+inline unsigned int
 END_REGNO (const_rtx x)
 {
   return REGNO (x) + REG_NREGS (x);
@@ -1941,7 +1941,7 @@ END_REGNO (const_rtx x)
 
 /* Change the REGNO and REG_NREGS of REG X to the specified values,
    bypassing the df machinery.  */
-static inline void
+inline void
 set_regno_raw (rtx x, unsigned int regno, unsigned int nregs)
 {
   reg_info *reg = REG_CHECK (x);
@@ -2058,7 +2058,7 @@ const_vector_encoded_nelts (const_rtx x)
 
 /* Return true if CODE always has VOIDmode.  */
 
-static inline bool
+inline bool
 always_void_p (enum rtx_code code)
 {
   return code == SET;
@@ -2073,7 +2073,7 @@ struct full_rtx_costs
 };
 
 /* Initialize a full_rtx_costs structure C to the maximum cost.  */
-static inline void
+inline void
 init_costs_to_max (struct full_rtx_costs *c)
 {
   c->speed = MAX_COST;
@@ -2081,7 +2081,7 @@ init_costs_to_max (struct full_rtx_costs *c)
 }
 
 /* Initialize a full_rtx_costs structure C to zero cost.  */
-static inline void
+inline void
 init_costs_to_zero (struct full_rtx_costs *c)
 {
   c->speed = 0;
@@ -2090,7 +2090,7 @@ init_costs_to_zero (struct full_rtx_costs *c)
 
 /* Compare two full_rtx_costs structures A and B, returning true
    if A < B when optimizing for speed.  */
-static inline bool
+inline bool
 costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
 	    bool speed)
 {
@@ -2104,7 +2104,7 @@ costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
 
 /* Increase both members of the full_rtx_costs structure C by the
    cost of N insns.  */
-static inline void
+inline void
 costs_add_n_insns (struct full_rtx_costs *c, int n)
 {
   c->speed += COSTS_N_INSNS (n);
@@ -2168,7 +2168,7 @@ subreg_shape::unique_id () const
 
 /* Return the shape of a SUBREG rtx.  */
 
-static inline subreg_shape
+inline subreg_shape
 shape_of_subreg (const_rtx x)
 {
   return subreg_shape (GET_MODE (SUBREG_REG (x)),
@@ -2919,7 +2919,7 @@ extern int currently_expanding_to_rtl;
 /* Return the cost of SET X.  SPEED_P is true if optimizing for speed
    rather than size.  */
 
-static inline int
+inline int
 set_rtx_cost (rtx x, bool speed_p)
 {
   return rtx_cost (x, VOIDmode, INSN, 4, speed_p);
@@ -2927,7 +2927,7 @@ set_rtx_cost (rtx x, bool speed_p)
 
 /* Like set_rtx_cost, but return both the speed and size costs in C.  */
 
-static inline void
+inline void
 get_full_set_rtx_cost (rtx x, struct full_rtx_costs *c)
 {
   get_full_rtx_cost (x, VOIDmode, INSN, 4, c);
@@ -2937,7 +2937,7 @@ get_full_set_rtx_cost (rtx x, struct full_rtx_costs *c)
    of a register move.  SPEED_P is true if optimizing for speed rather
    than size.  */
 
-static inline int
+inline int
 set_src_cost (rtx x, machine_mode mode, bool speed_p)
 {
   return rtx_cost (x, mode, SET, 1, speed_p);
@@ -2945,7 +2945,7 @@ set_src_cost (rtx x, machine_mode mode, bool speed_p)
 
 /* Like set_src_cost, but return both the speed and size costs in C.  */
 
-static inline void
+inline void
 get_full_set_src_cost (rtx x, machine_mode mode, struct full_rtx_costs *c)
 {
   get_full_rtx_cost (x, mode, SET, 1, c);
@@ -3947,7 +3947,7 @@ extern struct target_rtl *this_target_rtl;
 
 #ifndef GENERATOR_FILE
 /* Return the attributes of a MEM rtx.  */
-static inline const class mem_attrs *
+inline const class mem_attrs *
 get_mem_attrs (const_rtx x)
 {
   class mem_attrs *attrs;
@@ -3996,7 +3996,7 @@ extern rtx gen_rtx_VAR_LOCATION (machine_mode, tree, rtx,
 #ifdef GENERATOR_FILE
 #define PUT_MODE(RTX, MODE) PUT_MODE_RAW (RTX, MODE)
 #else
-static inline void
+inline void
 PUT_MODE (rtx x, machine_mode mode)
 {
   if (REG_P (x))
diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
index 751d28c2c9e..61172db9d7b 100644
--- a/gcc/sbitmap.h
+++ b/gcc/sbitmap.h
@@ -98,7 +98,7 @@ struct simple_bitmap_def
 
 /* Verify that access at INDEX in bitmap MAP is valid.  */ 
 
-static inline void
+inline void
 bitmap_check_index (const_sbitmap map, int index)
 {
   gcc_checking_assert (index >= 0);
@@ -107,14 +107,14 @@ bitmap_check_index (const_sbitmap map, int index)
 
 /* Verify that bitmaps A and B have same size.  */ 
 
-static inline void
+inline void
 bitmap_check_sizes (const_sbitmap a, const_sbitmap b)
 {
   gcc_checking_assert (a->n_bits == b->n_bits);
 }
 
 /* Test if bit number bitno in the bitmap is set.  */
-static inline bool
+inline bool
 bitmap_bit_p (const_sbitmap map, int bitno)
 {
   bitmap_check_index (map, bitno);
@@ -127,7 +127,7 @@ bitmap_bit_p (const_sbitmap map, int bitno)
 /* Set bit number BITNO in the sbitmap MAP.
    Return true if the bit changed.  */
 
-static inline bool
+inline bool
 bitmap_set_bit (sbitmap map, int bitno)
 {
   bitmap_check_index (map, bitno);
@@ -143,7 +143,7 @@ bitmap_set_bit (sbitmap map, int bitno)
 /* Reset bit number BITNO in the sbitmap MAP.
    Return true if the bit changed.  */
 
-static inline bool
+inline bool
 bitmap_clear_bit (sbitmap map, int bitno)
 {
   bitmap_check_index (map, bitno);
@@ -177,7 +177,7 @@ struct sbitmap_iterator {
 /* Initialize the iterator I with sbitmap BMP and the initial index
    MIN.  */
 
-static inline void
+inline void
 bmp_iter_set_init (sbitmap_iterator *i, const_sbitmap bmp,
 		   unsigned int min, unsigned *bit_no ATTRIBUTE_UNUSED)
 {
@@ -197,7 +197,7 @@ bmp_iter_set_init (sbitmap_iterator *i, const_sbitmap bmp,
    to the index of the bit to be visited.  Otherwise, return
    false.  */
 
-static inline bool
+inline bool
 bmp_iter_set (sbitmap_iterator *i, unsigned int *n)
 {
   /* Skip words that are zeros.  */
@@ -223,7 +223,7 @@ bmp_iter_set (sbitmap_iterator *i, unsigned int *n)
 
 /* Advance to the next bit.  */
 
-static inline void
+inline void
 bmp_iter_next (sbitmap_iterator *i, unsigned *bit_no ATTRIBUTE_UNUSED)
 {
   i->word >>= 1;
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index ab3ad99cdeb..97b7d2d319b 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -87,7 +87,7 @@ extern struct common_sched_info_def *common_sched_info;
 extern const struct common_sched_info_def haifa_common_sched_info;
 
 /* Return true if selective scheduling pass is working.  */
-static inline bool
+inline bool
 sel_sched_p (void)
 {
   return common_sched_info->sched_pass_id == SCHED_SEL_PASS;
@@ -1588,7 +1588,7 @@ typedef struct _sd_iterator sd_iterator_def;
    struct _deps_link.  */
 
 /* Return initialized iterator.  */
-static inline sd_iterator_def
+inline sd_iterator_def
 sd_iterator_start (rtx insn, sd_list_types_def types)
 {
   /* Some dep_link a pointer to which will return NULL.  */
@@ -1607,7 +1607,7 @@ sd_iterator_start (rtx insn, sd_list_types_def types)
 }
 
 /* Return the current element.  */
-static inline bool
+inline bool
 sd_iterator_cond (sd_iterator_def *it_ptr, dep_t *dep_ptr)
 {
   while (true)
@@ -1645,7 +1645,7 @@ sd_iterator_cond (sd_iterator_def *it_ptr, dep_t *dep_ptr)
 }
 
 /* Advance iterator.  */
-static inline void
+inline void
 sd_iterator_next (sd_iterator_def *it_ptr)
 {
   it_ptr->linkp = &DEP_LINK_NEXT (*it_ptr->linkp);
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index b36f2caa2b8..7034a1ab06c 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -359,13 +359,13 @@ struct _list_node
    we can't move them in sel-sched-ir.cc.  */
 extern object_allocator<_list_node> sched_lists_pool;
 
-static inline _list_t
+inline _list_t
 _list_alloc (void)
 {
   return sched_lists_pool.allocate ();
 }
 
-static inline void
+inline void
 _list_add (_list_t *lp)
 {
   _list_t l = _list_alloc ();
@@ -374,7 +374,7 @@ _list_add (_list_t *lp)
   *lp = l;
 }
 
-static inline void
+inline void
 _list_remove_nofree (_list_t *lp)
 {
   _list_t n = *lp;
@@ -382,7 +382,7 @@ _list_remove_nofree (_list_t *lp)
   *lp = _LIST_NEXT (n);
 }
 
-static inline void
+inline void
 _list_remove (_list_t *lp)
 {
   _list_t n = *lp;
@@ -391,7 +391,7 @@ _list_remove (_list_t *lp)
   sched_lists_pool.remove (n);
 }
 
-static inline void
+inline void
 _list_clear (_list_t *l)
 {
   while (*l)
@@ -412,7 +412,7 @@ struct _list_iterator
   bool removed_p;
 };
 
-static inline void
+inline void
 _list_iter_start (_list_iterator *ip, _list_t *lp, bool can_remove_p)
 {
   ip->lp = lp;
@@ -420,7 +420,7 @@ _list_iter_start (_list_iterator *ip, _list_t *lp, bool can_remove_p)
   ip->removed_p = false;
 }
 
-static inline void
+inline void
 _list_iter_next (_list_iterator *ip)
 {
   if (!ip->removed_p)
@@ -429,7 +429,7 @@ _list_iter_next (_list_iterator *ip)
     ip->removed_p = false;
 }
 
-static inline void
+inline void
 _list_iter_remove (_list_iterator *ip)
 {
   gcc_assert (!ip->removed_p && ip->can_remove_p);
@@ -437,7 +437,7 @@ _list_iter_remove (_list_iterator *ip)
   ip->removed_p = true;
 }
 
-static inline void
+inline void
 _list_iter_remove_nofree (_list_iterator *ip)
 {
   gcc_assert (!ip->removed_p && ip->can_remove_p);
@@ -460,7 +460,7 @@ _list_iter_remove_nofree (_list_iterator *ip)
 
 /* _xlist_t functions.  */
 
-static inline void
+inline void
 _xlist_add (_xlist_t *lp, rtx x)
 {
   _list_add (lp);
@@ -470,7 +470,7 @@ _xlist_add (_xlist_t *lp, rtx x)
 #define _xlist_remove(LP) (_list_remove (LP))
 #define _xlist_clear(LP) (_list_clear (LP))
 
-static inline bool
+inline bool
 _xlist_is_in_p (_xlist_t l, rtx x)
 {
   while (l)
@@ -484,7 +484,7 @@ _xlist_is_in_p (_xlist_t l, rtx x)
 }
 
 /* Used through _FOR_EACH.  */
-static inline bool
+inline bool
 _list_iter_cond_x (_xlist_t l, rtx *xp)
 {
   if (l)
@@ -505,7 +505,7 @@ typedef _list_iterator _xlist_iterator;
 
 /* ilist_t functions.  */
 
-static inline void
+inline void
 ilist_add (ilist_t *lp, insn_t insn)
 {
   _list_add (lp);
@@ -514,7 +514,7 @@ ilist_add (ilist_t *lp, insn_t insn)
 #define ilist_remove(LP) (_list_remove (LP))
 #define ilist_clear(LP) (_list_clear (LP))
 
-static inline bool
+inline bool
 ilist_is_in_p (ilist_t l, insn_t insn)
 {
   while (l)
@@ -528,7 +528,7 @@ ilist_is_in_p (ilist_t l, insn_t insn)
 }
 
 /* Used through _FOR_EACH.  */
-static inline bool
+inline bool
 _list_iter_cond_insn (ilist_t l, insn_t *ip)
 {
   if (l)
@@ -574,7 +574,7 @@ typedef _list_iterator def_list_iterator;
 
 #define FOR_EACH_DEF(DEF, I, DEF_LIST) _FOR_EACH (def, (DEF), (I), (DEF_LIST))
 
-static inline bool
+inline bool
 _list_iter_cond_def (def_list_t def_list, def_t *def)
 {
   if (def_list)
@@ -1040,7 +1040,7 @@ extern bool sel_bb_empty_p (basic_block);
 extern bool in_current_region_p (basic_block);
 
 /* True when BB is a header of the inner loop.  */
-static inline bool
+inline bool
 inner_loop_header_p (basic_block bb)
 {
   class loop *inner_loop;
@@ -1068,7 +1068,7 @@ inner_loop_header_p (basic_block bb)
 }
 
 /* Return exit edges of LOOP, filtering out edges with the same dest bb.  */
-static inline vec<edge> 
+inline vec<edge> 
 get_loop_exit_edges_unique_dests (const class loop *loop)
 {
   vec<edge> edges = vNULL;
@@ -1122,7 +1122,7 @@ sel_bb_empty_or_nop_p (basic_block bb)
    traverse all of them and if any of them turns out to be another loop header
    (after skipping empty BBs), add its loop exits to the resulting vector
    as well.  */
-static inline vec<edge> 
+inline vec<edge> 
 get_all_loop_exits (basic_block bb)
 {
   vec<edge> exits = vNULL;
@@ -1212,7 +1212,7 @@ get_all_loop_exits (basic_block bb)
 
 /* We need to return a succ_iterator to avoid 'unitialized' warning
    during bootstrap.  */
-static inline succ_iterator
+inline succ_iterator
 _succ_iter_start (insn_t *succp, insn_t insn, int flags)
 {
   succ_iterator i;
@@ -1249,7 +1249,7 @@ _succ_iter_start (insn_t *succp, insn_t insn, int flags)
   return i;
 }
 
-static inline bool
+inline bool
 _succ_iter_cond (succ_iterator *ip, insn_t *succp, insn_t insn,
                  bool check (edge, succ_iterator *))
 {
@@ -1354,7 +1354,7 @@ _succ_iter_cond (succ_iterator *ip, insn_t *succp, insn_t insn,
     }
 }
 
-static inline void
+inline void
 _succ_iter_next (succ_iterator *ip)
 {
   gcc_assert (!ip->e2 || ip->e1);
@@ -1367,7 +1367,7 @@ _succ_iter_next (succ_iterator *ip)
    empty blocks.  When E2P is not null, the resulting edge is written there.
    FLAGS are used to specify whether back edges and out-of-region edges
    should be considered.  */
-static inline bool
+inline bool
 _eligible_successor_edge_p (edge e1, succ_iterator *ip)
 {
   edge e2 = e1;
@@ -1476,7 +1476,7 @@ _eligible_successor_edge_p (edge e1, succ_iterator *ip)
 #define SUCC_ITER_EDGE(ITER) ((ITER)->e1)
 
 /* Return the next block of BB not running into inconsistencies.  */
-static inline basic_block
+inline basic_block
 bb_next_bb (basic_block bb)
 {
   switch (EDGE_COUNT (bb->succs))
diff --git a/gcc/sese.h b/gcc/sese.h
index e79be7514f1..252318bcc1c 100644
--- a/gcc/sese.h
+++ b/gcc/sese.h
@@ -44,7 +44,7 @@ void dump_sese (const sese_l &);
 
 /* Get the entry of an sese S.  */
 
-static inline basic_block
+inline basic_block
 get_entry_bb (const sese_l &s)
 {
   return s.entry->dest;
@@ -52,7 +52,7 @@ get_entry_bb (const sese_l &s)
 
 /* Get the exit of an sese S.  */
 
-static inline basic_block
+inline basic_block
 get_exit_bb (const sese_l &s)
 {
   return s.exit->src;
@@ -110,7 +110,7 @@ extern bool sese_trivially_empty_bb_p (basic_block);
 
 /* The number of parameters in REGION. */
 
-static inline unsigned
+inline unsigned
 sese_nb_params (sese_info_p region)
 {
   return region->params.length ();
@@ -119,7 +119,7 @@ sese_nb_params (sese_info_p region)
 /* Checks whether BB is contained in the region delimited by ENTRY and
    EXIT blocks.  */
 
-static inline bool
+inline bool
 bb_in_region (const_basic_block bb, const_basic_block entry, const_basic_block exit)
 {
   return dominated_by_p (CDI_DOMINATORS, bb, entry)
@@ -130,7 +130,7 @@ bb_in_region (const_basic_block bb, const_basic_block entry, const_basic_block e
 /* Checks whether BB is contained in the region delimited by ENTRY and
    EXIT blocks.  */
 
-static inline bool
+inline bool
 bb_in_sese_p (basic_block bb, const sese_l &r)
 {
   return bb_in_region (bb, r.entry->dest, r.exit->dest);
@@ -138,7 +138,7 @@ bb_in_sese_p (basic_block bb, const sese_l &r)
 
 /* Returns true when STMT is defined in REGION.  */
 
-static inline bool
+inline bool
 stmt_in_sese_p (gimple *stmt, const sese_l &r)
 {
   basic_block bb = gimple_bb (stmt);
@@ -147,7 +147,7 @@ stmt_in_sese_p (gimple *stmt, const sese_l &r)
 
 /* Returns true when NAME is defined in REGION.  */
 
-static inline bool
+inline bool
 defined_in_sese_p (tree name, const sese_l &r)
 {
   return stmt_in_sese_p (SSA_NAME_DEF_STMT (name), r);
@@ -155,7 +155,7 @@ defined_in_sese_p (tree name, const sese_l &r)
 
 /* Returns true when LOOP is in REGION.  */
 
-static inline bool
+inline bool
 loop_in_sese_p (class loop *loop, const sese_l &region)
 {
   return (bb_in_sese_p (loop->header, region)
@@ -185,7 +185,7 @@ loop_in_sese_p (class loop *loop, const sese_l &region)
     loop_1 exists, but is not completely contained in the region -> depth 0
     loop_2 is completely contained -> depth 1  */
 
-static inline unsigned int
+inline unsigned int
 sese_loop_depth (const sese_l &region, loop_p loop)
 {
   unsigned int depth = 0;
@@ -212,19 +212,19 @@ extern void set_ifsese_condition (ifsese, tree);
 extern edge get_true_edge_from_guard_bb (basic_block);
 extern edge get_false_edge_from_guard_bb (basic_block);
 
-static inline edge
+inline edge
 if_region_entry (ifsese if_region)
 {
   return if_region->region->region.entry;
 }
 
-static inline edge
+inline edge
 if_region_exit (ifsese if_region)
 {
   return if_region->region->region.exit;
 }
 
-static inline basic_block
+inline basic_block
 if_region_get_condition_block (ifsese if_region)
 {
   return if_region_entry (if_region)->dest;
@@ -272,7 +272,7 @@ typedef struct gimple_poly_bb
 
 /* Return the innermost loop that contains the basic block GBB.  */
 
-static inline class loop *
+inline class loop *
 gbb_loop (gimple_poly_bb_p gbb)
 {
   return GBB_BB (gbb)->loop_father;
@@ -281,7 +281,7 @@ gbb_loop (gimple_poly_bb_p gbb)
 /* Returns the gimple loop, that corresponds to the loop_iterator_INDEX.
    If there is no corresponding gimple loop, we return NULL.  */
 
-static inline loop_p
+inline loop_p
 gbb_loop_at_index (gimple_poly_bb_p gbb, sese_l &region, int index)
 {
   loop_p loop = gbb_loop (gbb);
@@ -297,7 +297,7 @@ gbb_loop_at_index (gimple_poly_bb_p gbb, sese_l &region, int index)
 
 /* The number of common loops in REGION for GBB1 and GBB2.  */
 
-static inline int
+inline int
 nb_common_loops (sese_l &region, gimple_poly_bb_p gbb1, gimple_poly_bb_p gbb2)
 {
   loop_p l1 = gbb_loop (gbb1);
diff --git a/gcc/sparseset.h b/gcc/sparseset.h
index 74934cea18b..694ff117f0e 100644
--- a/gcc/sparseset.h
+++ b/gcc/sparseset.h
@@ -109,7 +109,7 @@ extern bool sparseset_equal_p (sparseset, sparseset);
 /* Operation: S = {}
    Clear the set of all elements.  */
 
-static inline void
+inline void
 sparseset_clear (sparseset s)
 {
   s->members = 0;
@@ -118,7 +118,7 @@ sparseset_clear (sparseset s)
 
 /* Return the number of elements currently in the set.  */
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_cardinality (sparseset s)
 {
   return s->members;
@@ -126,7 +126,7 @@ sparseset_cardinality (sparseset s)
 
 /* Return the maximum number of elements this set can hold.  */
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_size (sparseset s)
 {
   return s->size;
@@ -134,7 +134,7 @@ sparseset_size (sparseset s)
 
 /* Return true if e is a member of the set S, otherwise return false.  */
 
-static inline bool
+inline bool
 sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e)
 {
   SPARSESET_ELT_TYPE idx;
@@ -149,7 +149,7 @@ sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e)
 /* Low level insertion routine not meant for use outside of sparseset.[ch].
    Assumes E is valid and not already a member of the set S.  */
 
-static inline void
+inline void
 sparseset_insert_bit (sparseset s, SPARSESET_ELT_TYPE e, SPARSESET_ELT_TYPE idx)
 {
   s->sparse[e] = idx;
@@ -159,7 +159,7 @@ sparseset_insert_bit (sparseset s, SPARSESET_ELT_TYPE e, SPARSESET_ELT_TYPE idx)
 /* Operation: S = S + {e}
    Insert E into the set S, if it isn't already a member.  */
 
-static inline void
+inline void
 sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
 {
   if (!sparseset_bit_p (s, e))
@@ -168,7 +168,7 @@ sparseset_set_bit (sparseset s, SPARSESET_ELT_TYPE e)
 
 /* Return and remove the last member added to the set S.  */
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_pop (sparseset s)
 {
   SPARSESET_ELT_TYPE mem = s->members;
@@ -179,7 +179,7 @@ sparseset_pop (sparseset s)
   return s->dense[s->members];
 }
 
-static inline void
+inline void
 sparseset_iter_init (sparseset s)
 {
   s->iter = 0;
@@ -187,7 +187,7 @@ sparseset_iter_init (sparseset s)
   s->iterating = true;
 }
 
-static inline bool
+inline bool
 sparseset_iter_p (sparseset s)
 {
   if (s->iterating && s->iter < s->members)
@@ -196,13 +196,13 @@ sparseset_iter_p (sparseset s)
     return s->iterating = false;
 }
 
-static inline SPARSESET_ELT_TYPE
+inline SPARSESET_ELT_TYPE
 sparseset_iter_elm (sparseset s)
 {
   return s->dense[s->iter];
 }
 
-static inline void
+inline void
 sparseset_iter_next (sparseset s)
 {
   s->iter += s->iter_inc;
diff --git a/gcc/ssa-iterators.h b/gcc/ssa-iterators.h
index 43c9b861440..3aeb89bb60e 100644
--- a/gcc/ssa-iterators.h
+++ b/gcc/ssa-iterators.h
@@ -78,7 +78,7 @@ struct imm_use_iterator
        (void) ((DEST) = next_readonly_imm_use (&(ITER))))
 
 /* Forward declare for use in the class below.  */
-static inline void end_imm_use_stmt_traverse (imm_use_iterator *);
+inline void end_imm_use_stmt_traverse (imm_use_iterator *);
 
 /* arrange to automatically call, upon descruction, end_imm_use_stmt_traverse
    with a given pointer to imm_use_iterator.  */
@@ -246,7 +246,7 @@ struct ssa_op_iter
 
 
 /* Delink an immediate_uses node from its chain.  */
-static inline void
+inline void
 delink_imm_use (ssa_use_operand_t *linknode)
 {
   /* Return if this node is not in a list.  */
@@ -260,7 +260,7 @@ delink_imm_use (ssa_use_operand_t *linknode)
 }
 
 /* Link ssa_imm_use node LINKNODE into the chain for LIST.  */
-static inline void
+inline void
 link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
 {
   /* Link the new node at the head of the list.  If we are in the process of
@@ -272,7 +272,7 @@ link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
 }
 
 /* Link ssa_imm_use node LINKNODE into the chain for DEF.  */
-static inline void
+inline void
 link_imm_use (ssa_use_operand_t *linknode, tree def)
 {
   ssa_use_operand_t *root;
@@ -289,7 +289,7 @@ link_imm_use (ssa_use_operand_t *linknode, tree def)
 }
 
 /* Set the value of a use pointed to by USE to VAL.  */
-static inline void
+inline void
 set_ssa_use_from_ptr (use_operand_p use, tree val)
 {
   delink_imm_use (use);
@@ -299,7 +299,7 @@ set_ssa_use_from_ptr (use_operand_p use, tree val)
 
 /* Link ssa_imm_use node LINKNODE into the chain for DEF, with use occurring
    in STMT.  */
-static inline void
+inline void
 link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple *stmt)
 {
   if (stmt)
@@ -310,7 +310,7 @@ link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple *stmt)
 }
 
 /* Relink a new node in place of an old node in the list.  */
-static inline void
+inline void
 relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
 {
   /* The node one had better be in the same list.  */
@@ -328,7 +328,7 @@ relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
 
 /* Relink ssa_imm_use node LINKNODE into the chain for OLD, with use occurring
    in STMT.  */
-static inline void
+inline void
 relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
 		     gimple *stmt)
 {
@@ -341,14 +341,14 @@ relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
 
 
 /* Return true is IMM has reached the end of the immediate use list.  */
-static inline bool
+inline bool
 end_readonly_imm_use_p (const imm_use_iterator *imm)
 {
   return (imm->imm_use == imm->end_p);
 }
 
 /* Initialize iterator IMM to process the list for VAR.  */
-static inline use_operand_p
+inline use_operand_p
 first_readonly_imm_use (imm_use_iterator *imm, tree var)
 {
   imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
@@ -360,7 +360,7 @@ first_readonly_imm_use (imm_use_iterator *imm, tree var)
 }
 
 /* Bump IMM to the next use in the list.  */
-static inline use_operand_p
+inline use_operand_p
 next_readonly_imm_use (imm_use_iterator *imm)
 {
   use_operand_p old = imm->imm_use;
@@ -383,7 +383,7 @@ next_readonly_imm_use (imm_use_iterator *imm)
 
 
 /* Return true if VAR has no nondebug uses.  */
-static inline bool
+inline bool
 has_zero_uses (const_tree var)
 {
   const ssa_use_operand_t *const head = &(SSA_NAME_IMM_USE_NODE (var));
@@ -397,7 +397,7 @@ has_zero_uses (const_tree var)
 }
 
 /* Return true if VAR has a single nondebug use.  */
-static inline bool
+inline bool
 has_single_use (const_tree var)
 {
   const ssa_use_operand_t *const head = &(SSA_NAME_IMM_USE_NODE (var));
@@ -418,7 +418,7 @@ has_single_use (const_tree var)
     
 /* If VAR has only a single immediate nondebug use, return true, and
    set USE_P and STMT to the use pointer and stmt of occurrence.  */
-static inline bool
+inline bool
 single_imm_use (const_tree var, use_operand_p *use_p, gimple **stmt)
 {
   const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var));
@@ -449,7 +449,7 @@ single_imm_use (const_tree var, use_operand_p *use_p, gimple **stmt)
 }
 
 /* Return the number of nondebug immediate uses of VAR.  */
-static inline unsigned int
+inline unsigned int
 num_imm_uses (const_tree var)
 {
   const ssa_use_operand_t *const start = &(SSA_NAME_IMM_USE_NODE (var));
@@ -476,14 +476,14 @@ num_imm_uses (const_tree var)
    SSA operands.  */
 
 /* Return true if PTR is finished iterating.  */
-static inline bool
+inline bool
 op_iter_done (const ssa_op_iter *ptr)
 {
   return ptr->done;
 }
 
 /* Get the next iterator use value for PTR.  */
-static inline use_operand_p
+inline use_operand_p
 op_iter_next_use (ssa_op_iter *ptr)
 {
   use_operand_p use_p;
@@ -503,7 +503,7 @@ op_iter_next_use (ssa_op_iter *ptr)
 }
 
 /* Get the next iterator def value for PTR.  */
-static inline def_operand_p
+inline def_operand_p
 op_iter_next_def (ssa_op_iter *ptr)
 {
   gcc_checking_assert (ptr->iter_type == ssa_op_iter_def);
@@ -538,7 +538,7 @@ op_iter_next_def (ssa_op_iter *ptr)
 }
 
 /* Get the next iterator tree value for PTR.  */
-static inline tree
+inline tree
 op_iter_next_tree (ssa_op_iter *ptr)
 {
   tree val;
@@ -582,7 +582,7 @@ op_iter_next_tree (ssa_op_iter *ptr)
    used to prevent warnings in the compile about might be uninitialized
    components.  */
 
-static inline void
+inline void
 clear_and_done_ssa_iter (ssa_op_iter *ptr)
 {
   ptr->i = 0;
@@ -595,7 +595,7 @@ clear_and_done_ssa_iter (ssa_op_iter *ptr)
 }
 
 /* Initialize the iterator PTR to the virtual defs in STMT.  */
-static inline void
+inline void
 op_iter_init (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   /* PHI nodes require a different iterator initialization path.  We
@@ -640,7 +640,7 @@ op_iter_init (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* Initialize iterator PTR to the use operands in STMT based on FLAGS. Return
    the first use.  */
-static inline use_operand_p
+inline use_operand_p
 op_iter_init_use (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   gcc_checking_assert ((flags & SSA_OP_ALL_DEFS) == 0
@@ -652,7 +652,7 @@ op_iter_init_use (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* Initialize iterator PTR to the def operands in STMT based on FLAGS. Return
    the first def.  */
-static inline def_operand_p
+inline def_operand_p
 op_iter_init_def (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   gcc_checking_assert ((flags & SSA_OP_ALL_USES) == 0
@@ -664,7 +664,7 @@ op_iter_init_def (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* Initialize iterator PTR to the operands in STMT based on FLAGS. Return
    the first operand as a tree.  */
-static inline tree
+inline tree
 op_iter_init_tree (ssa_op_iter *ptr, gimple *stmt, int flags)
 {
   op_iter_init (ptr, stmt, flags);
@@ -675,7 +675,7 @@ op_iter_init_tree (ssa_op_iter *ptr, gimple *stmt, int flags)
 
 /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
    return NULL.  */
-static inline tree
+inline tree
 single_ssa_tree_operand (gimple *stmt, int flags)
 {
   tree var;
@@ -693,7 +693,7 @@ single_ssa_tree_operand (gimple *stmt, int flags)
 
 /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
    return NULL.  */
-static inline use_operand_p
+inline use_operand_p
 single_ssa_use_operand (gimple *stmt, int flags)
 {
   use_operand_p var;
@@ -710,7 +710,7 @@ single_ssa_use_operand (gimple *stmt, int flags)
 
 /* Return the single virtual use operand in STMT if present.  Otherwise
    return NULL.  */
-static inline use_operand_p
+inline use_operand_p
 ssa_vuse_operand (gimple *stmt)
 {
   if (! gimple_vuse (stmt))
@@ -721,7 +721,7 @@ ssa_vuse_operand (gimple *stmt)
 
 /* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
    return NULL.  */
-static inline def_operand_p
+inline def_operand_p
 single_ssa_def_operand (gimple *stmt, int flags)
 {
   def_operand_p var;
@@ -739,7 +739,7 @@ single_ssa_def_operand (gimple *stmt, int flags)
 
 /* Return true if there are zero operands in STMT matching the type
    given in FLAGS.  */
-static inline bool
+inline bool
 zero_ssa_operands (gimple *stmt, int flags)
 {
   ssa_op_iter iter;
@@ -750,7 +750,7 @@ zero_ssa_operands (gimple *stmt, int flags)
 
 
 /* Return the number of operands matching FLAGS in STMT.  */
-static inline int
+inline int
 num_ssa_operands (gimple *stmt, int flags)
 {
   ssa_op_iter iter;
@@ -765,7 +765,7 @@ num_ssa_operands (gimple *stmt, int flags)
 
 /* If there is a single DEF in the PHI node which matches FLAG, return it.
    Otherwise return NULL_DEF_OPERAND_P.  */
-static inline tree
+inline tree
 single_phi_def (gphi *stmt, int flags)
 {
   tree def = PHI_RESULT (stmt);
@@ -778,7 +778,7 @@ single_phi_def (gphi *stmt, int flags)
 
 /* Initialize the iterator PTR for uses matching FLAGS in PHI.  FLAGS should
    be either SSA_OP_USES or SSA_OP_VIRTUAL_USES.  */
-static inline use_operand_p
+inline use_operand_p
 op_iter_init_phiuse (ssa_op_iter *ptr, gphi *phi, int flags)
 {
   tree phi_def = gimple_phi_result (phi);
@@ -808,7 +808,7 @@ op_iter_init_phiuse (ssa_op_iter *ptr, gphi *phi, int flags)
 
 /* Start an iterator for a PHI definition.  */
 
-static inline def_operand_p
+inline def_operand_p
 op_iter_init_phidef (ssa_op_iter *ptr, gphi *phi, int flags)
 {
   tree phi_def = PHI_RESULT (phi);
@@ -838,7 +838,7 @@ op_iter_init_phidef (ssa_op_iter *ptr, gphi *phi, int flags)
 
 /* Return true is IMM has reached the end of the immediate use stmt list.  */
 
-static inline bool
+inline bool
 end_imm_use_stmt_p (const imm_use_iterator *imm)
 {
   return (imm->imm_use == imm->end_p);
@@ -847,7 +847,7 @@ end_imm_use_stmt_p (const imm_use_iterator *imm)
 /* Finished the traverse of an immediate use stmt list IMM by removing the
    placeholder node from the list.  */
 
-static inline void
+inline void
 end_imm_use_stmt_traverse (imm_use_iterator *imm)
 {
   delink_imm_use (&(imm->iter_node));
@@ -859,7 +859,7 @@ end_imm_use_stmt_traverse (imm_use_iterator *imm)
    currently delimited by HEAD and LAST_P.  The new LAST_P value is
    returned.  */
 
-static inline use_operand_p
+inline use_operand_p
 move_use_after_head (use_operand_p use_p, use_operand_p head,
 		      use_operand_p last_p)
 {
@@ -885,7 +885,7 @@ move_use_after_head (use_operand_p use_p, use_operand_p head,
 /* This routine will relink all uses with the same stmt as HEAD into the list
    immediately following HEAD for iterator IMM.  */
 
-static inline void
+inline void
 link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
 {
   use_operand_p use_p;
@@ -925,7 +925,7 @@ link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
 }
 
 /* Initialize IMM to traverse over uses of VAR.  Return the first statement.  */
-static inline gimple *
+inline gimple *
 first_imm_use_stmt (imm_use_iterator *imm, tree var)
 {
   imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
@@ -950,7 +950,7 @@ first_imm_use_stmt (imm_use_iterator *imm, tree var)
 
 /* Bump IMM to the next stmt which has a use of var.  */
 
-static inline gimple *
+inline gimple *
 next_imm_use_stmt (imm_use_iterator *imm)
 {
   imm->imm_use = imm->iter_node.next;
@@ -968,7 +968,7 @@ next_imm_use_stmt (imm_use_iterator *imm)
 /* This routine will return the first use on the stmt IMM currently refers
    to.  */
 
-static inline use_operand_p
+inline use_operand_p
 first_imm_use_on_stmt (imm_use_iterator *imm)
 {
   imm->next_imm_name = imm->imm_use->next;
@@ -977,7 +977,7 @@ first_imm_use_on_stmt (imm_use_iterator *imm)
 
 /*  Return TRUE if the last use on the stmt IMM refers to has been visited.  */
 
-static inline bool
+inline bool
 end_imm_use_on_stmt_p (const imm_use_iterator *imm)
 {
   return (imm->imm_use == &(imm->iter_node));
@@ -985,7 +985,7 @@ end_imm_use_on_stmt_p (const imm_use_iterator *imm)
 
 /* Bump to the next use on the stmt IMM refers to, return NULL if done.  */
 
-static inline use_operand_p
+inline use_operand_p
 next_imm_use_on_stmt (imm_use_iterator *imm)
 {
   imm->imm_use = imm->next_imm_name;
@@ -999,7 +999,7 @@ next_imm_use_on_stmt (imm_use_iterator *imm)
 }
 
 /* Delink all immediate_use information for STMT.  */
-static inline void
+inline void
 delink_stmt_imm_use (gimple *stmt)
 {
    ssa_op_iter iter;
diff --git a/gcc/system.h b/gcc/system.h
index 5eaeb9d2d03..64cd5a49258 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -1166,7 +1166,7 @@ extern void fancy_abort (const char *, int, const char *)
    so does GCC 3.4.x (PR17436).  */
 #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
 #elif defined(__GNUC__)
-static inline char *
+inline char *
 helper_const_non_const_cast (const char *p)
 {
   union {
@@ -1308,7 +1308,7 @@ void gcc_stablesort_r (void *, size_t, size_t, sort_r_cmp_fn *, void *data);
 
 /* Return true if STR string starts with PREFIX.  */
 
-static inline bool
+inline bool
 startswith (const char *str, const char *prefix)
 {
   return strncmp (str, prefix, strlen (prefix)) == 0;
@@ -1316,7 +1316,7 @@ startswith (const char *str, const char *prefix)
 
 /* Return true if STR string ends with SUFFIX.  */
 
-static inline bool
+inline bool
 endswith (const char *str, const char *suffix)
 {
   size_t str_len = strlen (str);
diff --git a/gcc/target-globals.h b/gcc/target-globals.h
index 551b21e8a60..daedf66017f 100644
--- a/gcc/target-globals.h
+++ b/gcc/target-globals.h
@@ -69,7 +69,7 @@ extern class target_globals default_target_globals;
 extern class target_globals *save_target_globals (void);
 extern class target_globals *save_target_globals_default_opts (void);
 
-static inline void
+inline void
 restore_target_globals (class target_globals *g)
 {
   this_target_flag_state = g->flag_state;
diff --git a/gcc/target.h b/gcc/target.h
index 03fd03a5207..fdb364ca451 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -279,7 +279,7 @@ extern struct gcc_target targetm;
    runtime value is needed for correctness, since the function only
    provides a rough guess.  */
 
-static inline HOST_WIDE_INT
+inline HOST_WIDE_INT
 estimated_poly_value (poly_int64 x,
 		      poly_value_estimate_kind kind = POLY_VALUE_LIKELY)
 {
@@ -295,7 +295,7 @@ estimated_poly_value (poly_int64 x,
 #define CUMULATIVE_ARGS_MAGIC ((void *) &targetm.calls)
 #endif
 
-static inline CUMULATIVE_ARGS *
+inline CUMULATIVE_ARGS *
 get_cumulative_args (cumulative_args_t arg)
 {
 #if CHECKING_P
@@ -304,7 +304,7 @@ get_cumulative_args (cumulative_args_t arg)
   return (CUMULATIVE_ARGS *) arg.p;
 }
 
-static inline cumulative_args_t
+inline cumulative_args_t
 pack_cumulative_args (CUMULATIVE_ARGS *arg)
 {
   cumulative_args_t ret;
diff --git a/gcc/timevar.h b/gcc/timevar.h
index 6f3ac370917..ad465731609 100644
--- a/gcc/timevar.h
+++ b/gcc/timevar.h
@@ -206,14 +206,14 @@ class timer
 };
 
 /* Provided for backward compatibility.  */
-static inline void
+inline void
 timevar_push (timevar_id_t tv)
 {
   if (g_timer)
     g_timer->push (tv);
 }
 
-static inline void
+inline void
 timevar_pop (timevar_id_t tv)
 {
   if (g_timer)
diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
index 83ec0f58659..9c412dc879a 100644
--- a/gcc/tree-chrec.h
+++ b/gcc/tree-chrec.h
@@ -35,7 +35,7 @@ along with GCC; see the file COPYING3.  If not see
 /* After having added an automatically generated element, please
    include it in the following function.  */
 
-static inline bool
+inline bool
 automatically_generated_chrec_p (const_tree chrec)
 {
   return (chrec == chrec_dont_know
@@ -44,7 +44,7 @@ automatically_generated_chrec_p (const_tree chrec)
 
 /* The tree nodes aka. CHRECs.  */
 
-static inline bool
+inline bool
 tree_is_chrec (const_tree expr)
 {
   if (TREE_CODE (expr) == POLYNOMIAL_CHREC
@@ -96,7 +96,7 @@ extern bool evolution_function_right_is_integer_cst (const_tree);
 
 /* Determines whether CHREC is equal to zero.  */
 
-static inline bool
+inline bool
 chrec_zerop (const_tree chrec)
 {
   if (chrec == NULL_TREE)
@@ -111,7 +111,7 @@ chrec_zerop (const_tree chrec)
 /* Determines whether CHREC is a loop invariant with respect to LOOP_NUM.
    Set the result in RES and return true when the property can be computed.  */
 
-static inline bool
+inline bool
 no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
 {
   tree scev;
@@ -129,7 +129,7 @@ no_evolution_in_loop_p (tree chrec, unsigned loop_num, bool *res)
 
 /* Build a polynomial chain of recurrence.  */
 
-static inline tree
+inline tree
 build_polynomial_chrec (unsigned loop_num,
 			tree left,
 			tree right)
@@ -167,7 +167,7 @@ build_polynomial_chrec (unsigned loop_num,
 
 /* Determines whether the expression CHREC is a constant.  */
 
-static inline bool
+inline bool
 evolution_function_is_constant_p (const_tree chrec)
 {
   if (chrec == NULL_TREE)
@@ -178,7 +178,7 @@ evolution_function_is_constant_p (const_tree chrec)
 
 /* Determine whether CHREC is an affine evolution function in LOOPNUM.  */
 
-static inline bool
+inline bool
 evolution_function_is_affine_in_loop (const_tree chrec, int loopnum)
 {
   if (chrec == NULL_TREE)
@@ -200,7 +200,7 @@ evolution_function_is_affine_in_loop (const_tree chrec, int loopnum)
 
 /* Determine whether CHREC is an affine evolution function or not.  */
 
-static inline bool
+inline bool
 evolution_function_is_affine_p (const_tree chrec)
 {
   return chrec
@@ -213,7 +213,7 @@ evolution_function_is_affine_p (const_tree chrec)
 
 /* Determines whether EXPR does not contains chrec expressions.  */
 
-static inline bool
+inline bool
 tree_does_not_contain_chrecs (const_tree expr)
 {
   return !tree_contains_chrecs (expr, NULL);
@@ -221,7 +221,7 @@ tree_does_not_contain_chrecs (const_tree expr)
 
 /* Returns the type of the chrec.  */
 
-static inline tree
+inline tree
 chrec_type (const_tree chrec)
 {
   if (automatically_generated_chrec_p (chrec))
@@ -230,7 +230,7 @@ chrec_type (const_tree chrec)
   return TREE_TYPE (chrec);
 }
 
-static inline tree
+inline tree
 chrec_fold_op (enum tree_code code, tree type, tree op0, tree op1)
 {
   switch (code)
diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h
index 50718c0642a..4d1a5c4a45e 100644
--- a/gcc/tree-data-ref.h
+++ b/gcc/tree-data-ref.h
@@ -592,7 +592,7 @@ extern bool dr_known_forward_stride_p (struct data_reference *);
 /* Return true when the base objects of data references A and B are
    the same memory object.  */
 
-static inline bool
+inline bool
 same_data_refs_base_objects (data_reference_p a, data_reference_p b)
 {
   return DR_NUM_DIMENSIONS (a) == DR_NUM_DIMENSIONS (b)
@@ -603,7 +603,7 @@ same_data_refs_base_objects (data_reference_p a, data_reference_p b)
    memory object with the same access functions.  Optionally skip the
    last OFFSET dimensions in the data reference.  */
 
-static inline bool
+inline bool
 same_data_refs (data_reference_p a, data_reference_p b, int offset = 0)
 {
   unsigned int i;
@@ -641,7 +641,7 @@ known_dependences_p (vec<ddr_p> dependence_relations)
    LEVEL = 0 means a lexicographic dependence, i.e. a dependence due
    to the sequence of statements, not carried by any loop.  */
 
-static inline unsigned
+inline unsigned
 dependence_level (lambda_vector dist_vect, int length)
 {
   int i;
@@ -655,7 +655,7 @@ dependence_level (lambda_vector dist_vect, int length)
 
 /* Return the dependence level for the DDR relation.  */
 
-static inline unsigned
+inline unsigned
 ddr_dependence_level (ddr_p ddr)
 {
   unsigned vector;
@@ -672,7 +672,7 @@ ddr_dependence_level (ddr_p ddr)
 
 /* Return the index of the variable VAR in the LOOP_NEST array.  */
 
-static inline int
+inline int
 index_in_loop_nest (int var, const vec<loop_p> &loop_nest)
 {
   class loop *loopi;
@@ -688,7 +688,7 @@ index_in_loop_nest (int var, const vec<loop_p> &loop_nest)
 /* Returns true when the data reference DR the form "A[i] = ..."
    with a stride equal to its unit type size.  */
 
-static inline bool
+inline bool
 adjacent_dr_p (struct data_reference *dr)
 {
   /* If this is a bitfield store bail out.  */
@@ -709,7 +709,7 @@ void split_constant_offset (tree , tree *, tree *);
 
 /* Compute the greatest common divisor of a VECTOR of SIZE numbers.  */
 
-static inline lambda_int
+inline lambda_int
 lambda_vector_gcd (lambda_vector vector, int size)
 {
   int i;
@@ -726,7 +726,7 @@ lambda_vector_gcd (lambda_vector vector, int size)
 
 /* Allocate a new vector of given SIZE.  */
 
-static inline lambda_vector
+inline lambda_vector
 lambda_vector_new (int size)
 {
   /* ???  We shouldn't abuse the GC allocator here.  */
@@ -735,7 +735,7 @@ lambda_vector_new (int size)
 
 /* Clear out vector VEC1 of length SIZE.  */
 
-static inline void
+inline void
 lambda_vector_clear (lambda_vector vec1, int size)
 {
   memset (vec1, 0, size * sizeof (*vec1));
@@ -744,7 +744,7 @@ lambda_vector_clear (lambda_vector vec1, int size)
 /* Returns true when the vector V is lexicographically positive, in
    other words, when the first nonzero element is positive.  */
 
-static inline bool
+inline bool
 lambda_vector_lexico_pos (lambda_vector v,
 			  unsigned n)
 {
@@ -763,7 +763,7 @@ lambda_vector_lexico_pos (lambda_vector v,
 
 /* Return true if vector VEC1 of length SIZE is the zero vector.  */
 
-static inline bool
+inline bool
 lambda_vector_zerop (lambda_vector vec1, int size)
 {
   int i;
@@ -775,7 +775,7 @@ lambda_vector_zerop (lambda_vector vec1, int size)
 
 /* Allocate a matrix of M rows x  N cols.  */
 
-static inline lambda_matrix
+inline lambda_matrix
 lambda_matrix_new (int m, int n, struct obstack *lambda_obstack)
 {
   lambda_matrix mat;
diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h
index d09ec7d4118..800dd2e9c0e 100644
--- a/gcc/tree-iterator.h
+++ b/gcc/tree-iterator.h
@@ -49,7 +49,7 @@ struct tree_stmt_iterator {
   tree operator* () const { return ptr->stmt; }
 };
 
-static inline tree_stmt_iterator
+inline tree_stmt_iterator
 tsi_start (tree t)
 {
   tree_stmt_iterator i;
@@ -60,7 +60,7 @@ tsi_start (tree t)
   return i;
 }
 
-static inline tree_stmt_iterator
+inline tree_stmt_iterator
 tsi_last (tree t)
 {
   tree_stmt_iterator i;
@@ -71,37 +71,37 @@ tsi_last (tree t)
   return i;
 }
 
-static inline bool
+inline bool
 tsi_end_p (tree_stmt_iterator i)
 {
   return i.ptr == NULL;
 }
 
-static inline bool
+inline bool
 tsi_one_before_end_p (tree_stmt_iterator i)
 {
   return i.ptr != NULL && i.ptr->next == NULL;
 }
 
-static inline void
+inline void
 tsi_next (tree_stmt_iterator *i)
 {
   ++(*i);
 }
 
-static inline void
+inline void
 tsi_prev (tree_stmt_iterator *i)
 {
   --(*i);
 }
 
-static inline tree *
+inline tree *
 tsi_stmt_ptr (tree_stmt_iterator i)
 {
   return &(*i);
 }
 
-static inline tree
+inline tree
 tsi_stmt (tree_stmt_iterator i)
 {
   return *i;
diff --git a/gcc/tree-outof-ssa.h b/gcc/tree-outof-ssa.h
index 75264ed2b8a..d69c5a7e68d 100644
--- a/gcc/tree-outof-ssa.h
+++ b/gcc/tree-outof-ssa.h
@@ -53,7 +53,7 @@ extern struct ssaexpand SA;
 
 /* Returns the RTX expression representing the storage of the outof-SSA
    partition that the SSA name EXP is a member of.  */
-static inline rtx
+inline rtx
 get_rtx_for_ssa_name (tree exp)
 {
   int p = partition_find (SA.map->var_partition, SSA_NAME_VERSION (exp));
@@ -65,7 +65,7 @@ get_rtx_for_ssa_name (tree exp)
 
 /* If TER decided to forward the definition of SSA name EXP this function
    returns the defining statement, otherwise NULL.  */
-static inline gimple *
+inline gimple *
 get_gimple_for_ssa_name (tree exp)
 {
   int v = SSA_NAME_VERSION (exp);
diff --git a/gcc/tree-phinodes.h b/gcc/tree-phinodes.h
index 29b2143589b..932a461e987 100644
--- a/gcc/tree-phinodes.h
+++ b/gcc/tree-phinodes.h
@@ -31,7 +31,7 @@ extern void remove_phi_nodes (basic_block);
 extern tree degenerate_phi_result (gphi *);
 extern void set_phi_nodes (basic_block, gimple_seq);
 
-static inline use_operand_p
+inline use_operand_p
 gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
 {
   return &gimple_phi_arg (gs, i)->imm_use;
@@ -39,7 +39,7 @@ gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
 
 /* Return the phi argument which contains the specified use.  */
 
-static inline int
+inline int
 phi_arg_index_from_use (use_operand_p use)
 {
   struct phi_arg_d *element, *root;
diff --git a/gcc/tree-scalar-evolution.h b/gcc/tree-scalar-evolution.h
index d26bfc7ba79..c58a8a16e81 100644
--- a/gcc/tree-scalar-evolution.h
+++ b/gcc/tree-scalar-evolution.h
@@ -46,7 +46,7 @@ extern tree compute_overall_effect_of_inner_loop (class loop *, tree);
 /* Returns the basic block preceding LOOP, or the CFG entry block when
    the loop is function's body.  */
 
-static inline basic_block
+inline basic_block
 block_before_loop (loop_p loop)
 {
   edge preheader = loop_preheader_edge (loop);
@@ -57,7 +57,7 @@ block_before_loop (loop_p loop)
    symbolic form.  LOOP is the loop in which symbolic names have to
    be analyzed and instantiated.  */
 
-static inline tree
+inline tree
 instantiate_parameters (class loop *loop, tree chrec)
 {
   return instantiate_scev (loop_preheader_edge (loop), loop, chrec);
@@ -65,7 +65,7 @@ instantiate_parameters (class loop *loop, tree chrec)
 
 /* Returns the loop of the polynomial chrec CHREC.  */
 
-static inline class loop *
+inline class loop *
 get_chrec_loop (const_tree chrec)
 {
   return get_loop (cfun, CHREC_VARIABLE (chrec));
diff --git a/gcc/tree-sra.h b/gcc/tree-sra.h
index e817d0cdd6d..f20266c4622 100644
--- a/gcc/tree-sra.h
+++ b/gcc/tree-sra.h
@@ -24,7 +24,7 @@ bool type_internals_preclude_sra_p (tree type, const char **msg);
 /* Return true iff TYPE is stdarg va_list type (which early SRA and IPA-SRA
    should leave alone).  */
 
-static inline bool
+inline bool
 is_va_list_type (tree type)
 {
   return TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (va_list_type_node);
diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h
index ac676422e41..dce27323247 100644
--- a/gcc/tree-ssa-alias.h
+++ b/gcc/tree-ssa-alias.h
@@ -186,7 +186,7 @@ extern GTY(()) struct pt_solution ipa_escaped_pt;
    overlap.  SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the
    range is open-ended.  Otherwise return false.  */
 
-static inline bool
+inline bool
 ranges_overlap_p (HOST_WIDE_INT pos1,
 		  unsigned HOST_WIDE_INT size1,
 		  HOST_WIDE_INT pos2,
diff --git a/gcc/tree-ssa-live.h b/gcc/tree-ssa-live.h
index 33d35496df6..de665d6bad0 100644
--- a/gcc/tree-ssa-live.h
+++ b/gcc/tree-ssa-live.h
@@ -109,7 +109,7 @@ region_contains_p (var_map map, basic_block bb)
 
 /* Return number of partitions in MAP.  */
 
-static inline unsigned
+inline unsigned
 num_var_partitions (var_map map)
 {
   return map->num_partitions;
@@ -119,7 +119,7 @@ num_var_partitions (var_map map)
 /* Given partition index I from MAP, return the variable which represents that
    partition.  */
 
-static inline tree
+inline tree
 partition_to_var (var_map map, int i)
 {
   tree name;
@@ -134,7 +134,7 @@ partition_to_var (var_map map, int i)
 /* Given ssa_name VERSION, if it has a partition in MAP,  return the var it
    is associated with.  Otherwise return NULL.  */
 
-static inline tree
+inline tree
 version_to_var (var_map map, int version)
 {
   int part;
@@ -151,7 +151,7 @@ version_to_var (var_map map, int version)
 /* Given VAR, return the partition number in MAP which contains it.
    NO_PARTITION is returned if it's not in any partition.  */
 
-static inline int
+inline int
 var_to_partition (var_map map, tree var)
 {
   int part;
@@ -166,7 +166,7 @@ var_to_partition (var_map map, tree var)
 /* Given VAR, return the variable which represents the entire partition
    it is a member of in MAP.  NULL is returned if it is not in a partition.  */
 
-static inline tree
+inline tree
 var_to_partition_to_var (var_map map, tree var)
 {
   int part;
@@ -180,7 +180,7 @@ var_to_partition_to_var (var_map map, tree var)
 
 /* Return the index into the basevar table for PARTITION's base in MAP.  */
 
-static inline int
+inline int
 basevar_index (var_map map, int partition)
 {
   gcc_checking_assert (partition >= 0
@@ -191,7 +191,7 @@ basevar_index (var_map map, int partition)
 
 /* Return the number of different base variables in MAP.  */
 
-static inline int
+inline int
 num_basevars (var_map map)
 {
   return map->num_basevars;
@@ -274,7 +274,7 @@ extern void destroy_live_vars (vec<bitmap_head> &);
 
 /*  Return TRUE if P is marked as a global in LIVE.  */
 
-static inline int
+inline int
 partition_is_global (tree_live_info_p live, int p)
 {
   gcc_checking_assert (live->global);
@@ -285,7 +285,7 @@ partition_is_global (tree_live_info_p live, int p)
 /* Return the bitmap from LIVE representing the live on entry blocks for
    partition P.  */
 
-static inline bitmap
+inline bitmap
 live_on_entry (tree_live_info_p live, basic_block bb)
 {
   gcc_checking_assert (live->livein
@@ -299,7 +299,7 @@ live_on_entry (tree_live_info_p live, basic_block bb)
 /* Return the bitmap from LIVE representing the live on exit partitions from
    block BB.  */
 
-static inline bitmap
+inline bitmap
 live_on_exit (tree_live_info_p live, basic_block bb)
 {
   gcc_checking_assert (live->liveout
@@ -312,7 +312,7 @@ live_on_exit (tree_live_info_p live, basic_block bb)
 
 /* Return the partition map which the information in LIVE utilizes.  */
 
-static inline var_map
+inline var_map
 live_var_map (tree_live_info_p live)
 {
   return live->map;
@@ -321,7 +321,7 @@ live_var_map (tree_live_info_p live)
 
 /* Mark partition P as live on entry to basic block BB in LIVE.  */
 
-static inline void
+inline void
 make_live_on_entry (tree_live_info_p live, basic_block bb , int p)
 {
   bitmap_set_bit (&live->livein[bb->index], p);
diff --git a/gcc/tree-ssa-loop-manip.h b/gcc/tree-ssa-loop-manip.h
index f0b1ed00f9a..d49273a3987 100644
--- a/gcc/tree-ssa-loop-manip.h
+++ b/gcc/tree-ssa-loop-manip.h
@@ -27,7 +27,7 @@ extern void create_iv (tree, tree, tree, class loop *, gimple_stmt_iterator *,
 extern void rewrite_into_loop_closed_ssa (bitmap, unsigned);
 extern void verify_loop_closed_ssa (bool, class loop * = NULL);
 
-static inline void
+inline void
 checking_verify_loop_closed_ssa (bool verify_ssa_p, class loop *loop = NULL)
 {
   if (flag_checking)
diff --git a/gcc/tree-ssa-loop.h b/gcc/tree-ssa-loop.h
index d42ccd455f0..3fd4cd45466 100644
--- a/gcc/tree-ssa-loop.h
+++ b/gcc/tree-ssa-loop.h
@@ -71,7 +71,7 @@ extern unsigned tree_num_loop_insns (class loop *, struct eni_weights *);
 
 /* Returns the loop of the statement STMT.  */
 
-static inline class loop *
+inline class loop *
 loop_containing_stmt (gimple *stmt)
 {
   basic_block bb = gimple_bb (stmt);
diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h
index 946cd95f125..ae36bcdb893 100644
--- a/gcc/tree-ssa-operands.h
+++ b/gcc/tree-ssa-operands.h
@@ -106,14 +106,14 @@ extern void debug_immediate_uses_for (tree var);
 extern void unlink_stmt_vdef (gimple *);
 
 /* Return the tree pointed-to by USE.  */
-static inline tree
+inline tree
 get_use_from_ptr (use_operand_p use)
 {
   return *(use->use);
 }
 
 /* Return the tree pointed-to by DEF.  */
-static inline tree
+inline tree
 get_def_from_ptr (def_operand_p def)
 {
   return *def;
diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h
index c9921e56971..be4cb457873 100644
--- a/gcc/tree-ssa-propagate.h
+++ b/gcc/tree-ssa-propagate.h
@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* If SIM_P is true, statement S will be simulated again.  */
 
-static inline void
+inline void
 prop_set_simulate_again (gimple *s, bool visit_p)
 {
   gimple_set_visited (s, visit_p);
@@ -34,7 +34,7 @@ prop_set_simulate_again (gimple *s, bool visit_p)
 
 /* Return true if statement T should be simulated again.  */
 
-static inline bool
+inline bool
 prop_simulate_again_p (gimple *s)
 {
   return gimple_visited_p (s);
diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h
index a6f5973a368..675240ebb9d 100644
--- a/gcc/tree-ssa-sccvn.h
+++ b/gcc/tree-ssa-sccvn.h
@@ -68,7 +68,7 @@ typedef const struct vn_nary_op_s *const_vn_nary_op_t;
 
 /* Return the size of a vn_nary_op_t with LENGTH operands.  */
 
-static inline size_t
+inline size_t
 sizeof_vn_nary_op (unsigned int length)
 {
   return sizeof (struct vn_nary_op_s) + sizeof (tree) * length - sizeof (tree);
@@ -166,7 +166,7 @@ enum vn_kind vn_get_stmt_kind (gimple *);
 /* Hash the type TYPE using bits that distinguishes it in the
    types_compatible_p sense.  */
 
-static inline hashval_t
+inline hashval_t
 vn_hash_type (tree type)
 {
   return (INTEGRAL_TYPE_P (type)
@@ -177,7 +177,7 @@ vn_hash_type (tree type)
 /* Hash the constant CONSTANT with distinguishing type incompatible
    constants in the types_compatible_p sense.  */
 
-static inline hashval_t
+inline hashval_t
 vn_hash_constant_with_type (tree constant)
 {
   inchash::hash hstate;
@@ -189,7 +189,7 @@ vn_hash_constant_with_type (tree constant)
 /* Compare the constants C1 and C2 with distinguishing type incompatible
    constants in the types_compatible_p sense.  */
 
-static inline bool
+inline bool
 vn_constant_eq_with_type (tree c1, tree c2)
 {
   return (expressions_equal_p (c1, c2)
@@ -286,7 +286,7 @@ unsigned int get_constant_value_id (tree);
 unsigned int get_or_alloc_constant_value_id (tree);
 
 /* Return true if V is a value id for a constant.  */
-static inline bool
+inline bool
 value_id_constant_p (unsigned int v)
 {
   return (int)v < 0;
diff --git a/gcc/tree-ssa.h b/gcc/tree-ssa.h
index 2153cefd226..fa8c8082311 100644
--- a/gcc/tree-ssa.h
+++ b/gcc/tree-ssa.h
@@ -63,7 +63,7 @@ extern void mark_ssa_maybe_undefs (void);
 /* Return TRUE iff VAR is marked as maybe-undefined.  See
    mark_ssa_maybe_undefs.  */
 
-static inline bool
+inline bool
 ssa_name_maybe_undef_p (tree var)
 {
   gcc_checking_assert (TREE_CODE (var) == SSA_NAME);
@@ -72,7 +72,7 @@ ssa_name_maybe_undef_p (tree var)
 
 /* Set (or clear, depending on VALUE) VAR's maybe-undefined mark.  */
 
-static inline void
+inline void
 ssa_name_set_maybe_undef (tree var, bool value = true)
 {
   gcc_checking_assert (TREE_CODE (var) == SSA_NAME);
@@ -84,7 +84,7 @@ extern void execute_update_addresses_taken (void);
 
 /* Given an edge_var_map V, return the PHI arg definition.  */
 
-static inline tree
+inline tree
 redirect_edge_var_map_def (edge_var_map *v)
 {
   return v->def;
@@ -92,7 +92,7 @@ redirect_edge_var_map_def (edge_var_map *v)
 
 /* Given an edge_var_map V, return the PHI result.  */
 
-static inline tree
+inline tree
 redirect_edge_var_map_result (edge_var_map *v)
 {
   return v->result;
@@ -100,7 +100,7 @@ redirect_edge_var_map_result (edge_var_map *v)
 
 /* Given an edge_var_map V, return the PHI arg location.  */
 
-static inline location_t
+inline location_t
 redirect_edge_var_map_location (edge_var_map *v)
 {
   return v->locus;
@@ -108,7 +108,7 @@ redirect_edge_var_map_location (edge_var_map *v)
 
 /* Verify SSA invariants, if internal consistency checks are enabled.  */
 
-static inline void
+inline void
 checking_verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
 {
   if (flag_checking)
diff --git a/gcc/tree-ssanames.h b/gcc/tree-ssanames.h
index b45b37b43e7..b09e71bf779 100644
--- a/gcc/tree-ssanames.h
+++ b/gcc/tree-ssanames.h
@@ -91,7 +91,7 @@ extern void flush_ssaname_freelist (void);
 /* Return an SSA_NAME node for variable VAR defined in statement STMT
    in function cfun.  */
 
-static inline tree
+inline tree
 make_ssa_name (tree var, gimple *stmt = NULL)
 {
   return make_ssa_name_fn (cfun, var, stmt);
@@ -100,7 +100,7 @@ make_ssa_name (tree var, gimple *stmt = NULL)
 /* Return an SSA_NAME node using the template SSA name NAME defined in
    statement STMT in function cfun.  */
 
-static inline tree
+inline tree
 copy_ssa_name (tree var, gimple *stmt = NULL)
 {
   return copy_ssa_name_fn (cfun, var, stmt);
@@ -109,7 +109,7 @@ copy_ssa_name (tree var, gimple *stmt = NULL)
 /*  Creates a duplicate of a SSA name NAME tobe defined by statement STMT
     in function cfun.  */
 
-static inline tree
+inline tree
 duplicate_ssa_name (tree var, gimple *stmt)
 {
   return duplicate_ssa_name_fn (cfun, var, stmt);
@@ -117,7 +117,7 @@ duplicate_ssa_name (tree var, gimple *stmt)
 
 /* Release the SSA name NAME used in function cfun.  */
 
-static inline void
+inline void
 release_ssa_name (tree name)
 {
   release_ssa_name_fn (cfun, name);
@@ -126,7 +126,7 @@ release_ssa_name (tree name)
 /* Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
    in function cfun.  Arrange so that it uses NAME in dumps.  */
 
-static inline tree
+inline tree
 make_temp_ssa_name (tree type, gimple *stmt, const char *name)
 {
   tree ssa_name;
diff --git a/gcc/tree-streamer.h b/gcc/tree-streamer.h
index acca901d660..170d61cf20b 100644
--- a/gcc/tree-streamer.h
+++ b/gcc/tree-streamer.h
@@ -90,7 +90,7 @@ void streamer_tree_cache_delete (struct streamer_tree_cache_d *);
 
 /* Return the tree node at slot IX in CACHE.  */
 
-static inline tree
+inline tree
 streamer_tree_cache_get_tree (struct streamer_tree_cache_d *cache, unsigned ix)
 {
   return cache->nodes[ix];
@@ -98,20 +98,20 @@ streamer_tree_cache_get_tree (struct streamer_tree_cache_d *cache, unsigned ix)
 
 /* Return the tree hash value at slot IX in CACHE.  */
 
-static inline hashval_t
+inline hashval_t
 streamer_tree_cache_get_hash (struct streamer_tree_cache_d *cache, unsigned ix)
 {
   return cache->hashes[ix];
 }
 
-static inline void
+inline void
 bp_pack_machine_mode (struct bitpack_d *bp, machine_mode mode)
 {
   streamer_mode_table[mode] = 1;
   bp_pack_enum (bp, machine_mode, 1 << 8, mode);
 }
 
-static inline machine_mode
+inline machine_mode
 bp_unpack_machine_mode (struct bitpack_d *bp)
 {
   return (machine_mode)
diff --git a/gcc/tree-switch-conversion.h b/gcc/tree-switch-conversion.h
index 07b11a998a5..4e97164e0ef 100644
--- a/gcc/tree-switch-conversion.h
+++ b/gcc/tree-switch-conversion.h
@@ -914,7 +914,7 @@ switch_decision_tree::reset_out_edges_aux (gswitch *swtch)
 
 /* Release CLUSTERS vector and destruct all dynamically allocated items.  */
 
-static inline void
+inline void
 release_clusters (vec<cluster *> &clusters)
 {
   for (unsigned i = 0; i < clusters.length (); i++)
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 4ba653712e9..9cf2fb23fe3 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -969,7 +969,7 @@ public:
    stack.  */
 typedef opt_pointer_wrapper <loop_vec_info> opt_loop_vec_info;
 
-static inline loop_vec_info
+inline loop_vec_info
 loop_vec_info_for_loop (class loop *loop)
 {
   return (loop_vec_info) loop->aux;
@@ -1641,7 +1641,7 @@ vector_costs::suggested_unroll_factor () const
        && TYPE_PRECISION (TYPE) == 1		\
        && TYPE_UNSIGNED (TYPE)))
 
-static inline bool
+inline bool
 nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
 {
   return (loop->inner
@@ -1652,7 +1652,7 @@ nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
    Return the initial value of the variable on entry to the containing
    loop.  */
 
-static inline tree
+inline tree
 vect_phi_initial_value (gphi *phi)
 {
   basic_block bb = gimple_bb (phi);
@@ -1664,7 +1664,7 @@ vect_phi_initial_value (gphi *phi)
 /* Return true if STMT_INFO should produce a vector mask type rather than
    a normal nonmask type.  */
 
-static inline bool
+inline bool
 vect_use_mask_type_p (stmt_vec_info stmt_info)
 {
   return stmt_info->mask_precision && stmt_info->mask_precision != ~0U;
@@ -1673,7 +1673,7 @@ vect_use_mask_type_p (stmt_vec_info stmt_info)
 /* Return TRUE if a statement represented by STMT_INFO is a part of a
    pattern.  */
 
-static inline bool
+inline bool
 is_pattern_stmt_p (stmt_vec_info stmt_info)
 {
   return stmt_info->pattern_stmt_p;
@@ -1692,7 +1692,7 @@ vect_orig_stmt (stmt_vec_info stmt_info)
 
 /* Return the later statement between STMT1_INFO and STMT2_INFO.  */
 
-static inline stmt_vec_info
+inline stmt_vec_info
 get_later_stmt (stmt_vec_info stmt1_info, stmt_vec_info stmt2_info)
 {
   if (gimple_uid (vect_orig_stmt (stmt1_info)->stmt)
@@ -1715,7 +1715,7 @@ vect_stmt_to_vectorize (stmt_vec_info stmt_info)
 
 /* Return true if BB is a loop header.  */
 
-static inline bool
+inline bool
 is_loop_header_bb_p (basic_block bb)
 {
   if (bb == (bb->loop_father)->header)
@@ -1726,7 +1726,7 @@ is_loop_header_bb_p (basic_block bb)
 
 /* Return pow2 (X).  */
 
-static inline int
+inline int
 vect_pow2 (int x)
 {
   int i, res = 1;
@@ -1739,7 +1739,7 @@ vect_pow2 (int x)
 
 /* Alias targetm.vectorize.builtin_vectorization_cost.  */
 
-static inline int
+inline int
 builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
 			    tree vectype, int misalign)
 {
@@ -1749,7 +1749,7 @@ builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
 
 /* Get cost by calling cost target builtin.  */
 
-static inline
+inline
 int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
 {
   return builtin_vectorization_cost (type_of_cost, NULL, 0);
@@ -1757,7 +1757,7 @@ int vect_get_stmt_cost (enum vect_cost_for_stmt type_of_cost)
 
 /* Alias targetm.vectorize.init_cost.  */
 
-static inline vector_costs *
+inline vector_costs *
 init_cost (vec_info *vinfo, bool costing_for_scalar)
 {
   return targetm.vectorize.create_costs (vinfo, costing_for_scalar);
@@ -1769,7 +1769,7 @@ extern void dump_stmt_cost (FILE *, int, enum vect_cost_for_stmt,
 
 /* Alias targetm.vectorize.add_stmt_cost.  */
 
-static inline unsigned
+inline unsigned
 add_stmt_cost (vector_costs *costs, int count,
 	       enum vect_cost_for_stmt kind,
 	       stmt_vec_info stmt_info, slp_tree node,
@@ -1784,7 +1784,7 @@ add_stmt_cost (vector_costs *costs, int count,
   return cost;
 }
 
-static inline unsigned
+inline unsigned
 add_stmt_cost (vector_costs *costs, int count, enum vect_cost_for_stmt kind,
 	       enum vect_cost_model_location where)
 {
@@ -1795,7 +1795,7 @@ add_stmt_cost (vector_costs *costs, int count, enum vect_cost_for_stmt kind,
 
 /* Alias targetm.vectorize.add_stmt_cost.  */
 
-static inline unsigned
+inline unsigned
 add_stmt_cost (vector_costs *costs, stmt_info_for_cost *i)
 {
   return add_stmt_cost (costs, i->count, i->kind, i->stmt_info, i->node,
@@ -1804,7 +1804,7 @@ add_stmt_cost (vector_costs *costs, stmt_info_for_cost *i)
 
 /* Alias targetm.vectorize.finish_cost.  */
 
-static inline void
+inline void
 finish_cost (vector_costs *costs, const vector_costs *scalar_costs,
 	     unsigned *prologue_cost, unsigned *body_cost,
 	     unsigned *epilogue_cost, unsigned *suggested_unroll_factor = NULL)
@@ -1845,7 +1845,7 @@ extern int dr_misalignment (dr_vec_info *dr_info, tree vectype,
 #define SET_DR_MISALIGNMENT(DR, VAL) set_dr_misalignment (DR, VAL)
 
 /* Only defined once DR_MISALIGNMENT is defined.  */
-static inline const poly_uint64
+inline const poly_uint64
 dr_target_alignment (dr_vec_info *dr_info)
 {
   if (STMT_VINFO_GROUPED_ACCESS (dr_info->stmt))
@@ -1854,7 +1854,7 @@ dr_target_alignment (dr_vec_info *dr_info)
 }
 #define DR_TARGET_ALIGNMENT(DR) dr_target_alignment (DR)
 
-static inline void
+inline void
 set_dr_target_alignment (dr_vec_info *dr_info, poly_uint64 val)
 {
   dr_info->target_alignment = val;
@@ -1864,7 +1864,7 @@ set_dr_target_alignment (dr_vec_info *dr_info, poly_uint64 val)
 /* Return true if data access DR_INFO is aligned to the targets
    preferred alignment for VECTYPE (which may be less than a full vector).  */
 
-static inline bool
+inline bool
 aligned_access_p (dr_vec_info *dr_info, tree vectype)
 {
   return (dr_misalignment (dr_info, vectype) == 0);
@@ -1874,7 +1874,7 @@ aligned_access_p (dr_vec_info *dr_info, tree vectype)
    respect to the targets preferred alignment for VECTYPE, and FALSE
    otherwise.  */
 
-static inline bool
+inline bool
 known_alignment_for_access_p (dr_vec_info *dr_info, tree vectype)
 {
   return (dr_misalignment (dr_info, vectype) != DR_MISALIGNMENT_UNKNOWN);
@@ -1883,7 +1883,7 @@ known_alignment_for_access_p (dr_vec_info *dr_info, tree vectype)
 /* Return the minimum alignment in bytes that the vectorized version
    of DR_INFO is guaranteed to have.  */
 
-static inline unsigned int
+inline unsigned int
 vect_known_alignment_in_bytes (dr_vec_info *dr_info, tree vectype)
 {
   int misalignment = dr_misalignment (dr_info, vectype);
@@ -1898,7 +1898,7 @@ vect_known_alignment_in_bytes (dr_vec_info *dr_info, tree vectype)
    (which for outer loop vectorization might not be the behavior recorded
    in DR_INFO itself).  */
 
-static inline innermost_loop_behavior *
+inline innermost_loop_behavior *
 vect_dr_behavior (vec_info *vinfo, dr_vec_info *dr_info)
 {
   stmt_vec_info stmt_info = dr_info->stmt;
@@ -1936,7 +1936,7 @@ get_dr_vinfo_offset (vec_info *vinfo,
 
 
 /* Return the vect cost model for LOOP.  */
-static inline enum vect_cost_model
+inline enum vect_cost_model
 loop_cost_model (loop_p loop)
 {
   if (loop != NULL
@@ -1947,7 +1947,7 @@ loop_cost_model (loop_p loop)
 }
 
 /* Return true if the vect cost model is unlimited.  */
-static inline bool
+inline bool
 unlimited_cost_model (loop_p loop)
 {
   return loop_cost_model (loop) == VECT_COST_MODEL_UNLIMITED;
@@ -1957,7 +1957,7 @@ unlimited_cost_model (loop_p loop)
    if the first iteration should use a partial mask in order to achieve
    alignment.  */
 
-static inline bool
+inline bool
 vect_use_loop_mask_for_alignment_p (loop_vec_info loop_vinfo)
 {
   return (LOOP_VINFO_FULLY_MASKED_P (loop_vinfo)
@@ -1968,7 +1968,7 @@ vect_use_loop_mask_for_alignment_p (loop_vec_info loop_vinfo)
    NUNITS elements.  NUNITS should be based on the vectorization factor,
    so it is always a known multiple of the number of elements in VECTYPE.  */
 
-static inline unsigned int
+inline unsigned int
 vect_get_num_vectors (poly_uint64 nunits, tree vectype)
 {
   return exact_div (nunits, TYPE_VECTOR_SUBPARTS (vectype)).to_constant ();
@@ -1979,7 +1979,7 @@ vect_get_num_vectors (poly_uint64 nunits, tree vectype)
    vectorization factor divided by the number of elements in
    VECTYPE and is always known at compile time.  */
 
-static inline unsigned int
+inline unsigned int
 vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
 {
   return vect_get_num_vectors (LOOP_VINFO_VECT_FACTOR (loop_vinfo), vectype);
@@ -1988,7 +1988,7 @@ vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
 /* Update maximum unit count *MAX_NUNITS so that it accounts for
    NUNITS.  *MAX_NUNITS can be 1 if we haven't yet recorded anything.  */
 
-static inline void
+inline void
 vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
 {
   /* All unit counts have the form vec_info::vector_size * X for some
@@ -2001,7 +2001,7 @@ vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
    the number of units in vector type VECTYPE.  *MAX_NUNITS can be 1
    if we haven't yet recorded any vector types.  */
 
-static inline void
+inline void
 vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
 {
   vect_update_max_nunits (max_nunits, TYPE_VECTOR_SUBPARTS (vectype));
@@ -2012,7 +2012,7 @@ vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
    Pick a reasonable estimate if the vectorization factor isn't
    known at compile time.  */
 
-static inline unsigned int
+inline unsigned int
 vect_vf_for_cost (loop_vec_info loop_vinfo)
 {
   return estimated_poly_value (LOOP_VINFO_VECT_FACTOR (loop_vinfo));
@@ -2022,7 +2022,7 @@ vect_vf_for_cost (loop_vec_info loop_vinfo)
    Pick a reasonable estimate if the exact number isn't known at
    compile time.  */
 
-static inline unsigned int
+inline unsigned int
 vect_nunits_for_cost (tree vec_type)
 {
   return estimated_poly_value (TYPE_VECTOR_SUBPARTS (vec_type));
@@ -2030,7 +2030,7 @@ vect_nunits_for_cost (tree vec_type)
 
 /* Return the maximum possible vectorization factor for LOOP_VINFO.  */
 
-static inline unsigned HOST_WIDE_INT
+inline unsigned HOST_WIDE_INT
 vect_max_vf (loop_vec_info loop_vinfo)
 {
   unsigned HOST_WIDE_INT vf;
@@ -2160,7 +2160,7 @@ extern unsigned record_stmt_cost (stmt_vector_for_cost *, int,
 
 /* Overload of record_stmt_cost with VECTYPE derived from STMT_INFO.  */
 
-static inline unsigned
+inline unsigned
 record_stmt_cost (stmt_vector_for_cost *body_cost_vec, int count,
 		  enum vect_cost_for_stmt kind, stmt_vec_info stmt_info,
 		  int misalign, enum vect_cost_model_location where)
diff --git a/gcc/tree.h b/gcc/tree.h
index c656cd5b7bf..92ac0e6a214 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1280,7 +1280,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
    location.  */
 #define CAN_HAVE_LOCATION_P(NODE) ((NODE) && EXPR_P (NODE))
 
-static inline source_range
+inline source_range
 get_expr_source_range (tree expr)
 {
   location_t loc = EXPR_LOCATION (expr);
@@ -3263,7 +3263,7 @@ extern void decl_fini_priority_insert (tree, priority_type);
 /* Set decl_type of a DECL.  Set it to T when SET is true, or reset
    it to NONE.  */
 
-static inline void
+inline void
 set_function_decl_type (tree decl, function_decl_type t, bool set)
 {
   if (set)
@@ -4009,7 +4009,7 @@ any_integral_type_check (const_tree __t, const char *__f, int __l,
 /* Compute the number of operands in an expression node NODE.  For
    tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
    otherwise it is looked up from the node's code.  */
-static inline int
+inline int
 tree_operand_length (const_tree node)
 {
   if (VL_EXP_CLASS_P (node))
@@ -4139,7 +4139,7 @@ SET_TYPE_VECTOR_SUBPARTS (tree node, poly_uint64 subparts)
 /* Return true if we can construct vector types with the given number
    of subparts.  */
 
-static inline bool
+inline bool
 valid_vector_subparts_p (poly_uint64 subparts)
 {
   unsigned HOST_WIDE_INT coeff0 = subparts.coeffs[0];
@@ -4587,7 +4587,7 @@ extern tree build5 (enum tree_code, tree, tree, tree, tree, tree,
 
 /* _loc versions of build[1-5].  */
 
-static inline tree
+inline tree
 build1_loc (location_t loc, enum tree_code code, tree type,
 	    tree arg1 CXX_MEM_STAT_INFO)
 {
@@ -4597,7 +4597,7 @@ build1_loc (location_t loc, enum tree_code code, tree type,
   return t;
 }
 
-static inline tree
+inline tree
 build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1 CXX_MEM_STAT_INFO)
 {
@@ -4607,7 +4607,7 @@ build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
   return t;
 }
 
-static inline tree
+inline tree
 build3_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1, tree arg2 CXX_MEM_STAT_INFO)
 {
@@ -4617,7 +4617,7 @@ build3_loc (location_t loc, enum tree_code code, tree type, tree arg0,
   return t;
 }
 
-static inline tree
+inline tree
 build4_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1, tree arg2, tree arg3 CXX_MEM_STAT_INFO)
 {
@@ -4627,7 +4627,7 @@ build4_loc (location_t loc, enum tree_code code, tree type, tree arg0,
   return t;
 }
 
-static inline tree
+inline tree
 build5_loc (location_t loc, enum tree_code code, tree type, tree arg0,
 	    tree arg1, tree arg2, tree arg3, tree arg4 CXX_MEM_STAT_INFO)
 {
@@ -5174,7 +5174,7 @@ extern tree get_narrower (tree, int *);
 
 /* Return true if T is an expression that get_inner_reference handles.  */
 
-static inline bool
+inline bool
 handled_component_p (const_tree t)
 {
   switch (TREE_CODE (t))
@@ -5195,7 +5195,7 @@ handled_component_p (const_tree t)
 
 /* Return true T is a component with reverse storage order.  */
 
-static inline bool
+inline bool
 reverse_storage_order_for_component_p (tree t)
 {
   /* The storage order only applies to scalar components.  */
@@ -5233,7 +5233,7 @@ reverse_storage_order_for_component_p (tree t)
    outer type, a VIEW_CONVERT_EXPR can modify the storage order because
    it can change the partition of the aggregate object into scalars.  */
 
-static inline bool
+inline bool
 storage_order_barrier_p (const_tree t)
 {
   if (TREE_CODE (t) != VIEW_CONVERT_EXPR)
@@ -5274,7 +5274,7 @@ extern bool real_zerop (const_tree);
 
 /* Initialize the iterator I with arguments from function FNDECL  */
 
-static inline void
+inline void
 function_args_iter_init (function_args_iterator *i, const_tree fntype)
 {
   i->next = TYPE_ARG_TYPES (fntype);
@@ -5283,7 +5283,7 @@ function_args_iter_init (function_args_iterator *i, const_tree fntype)
 /* Return a pointer that holds the next argument if there are more arguments to
    handle, otherwise return NULL.  */
 
-static inline tree *
+inline tree *
 function_args_iter_cond_ptr (function_args_iterator *i)
 {
   return (i->next) ? &TREE_VALUE (i->next) : NULL;
@@ -5292,14 +5292,14 @@ function_args_iter_cond_ptr (function_args_iterator *i)
 /* Return the next argument if there are more arguments to handle, otherwise
    return NULL.  */
 
-static inline tree
+inline tree
 function_args_iter_cond (function_args_iterator *i)
 {
   return (i->next) ? TREE_VALUE (i->next) : NULL_TREE;
 }
 
 /* Advance to the next argument.  */
-static inline void
+inline void
 function_args_iter_next (function_args_iterator *i)
 {
   gcc_assert (i->next != NULL_TREE);
@@ -5311,7 +5311,7 @@ function_args_iter_next (function_args_iterator *i)
    so the function returns true for all but the innermost and outermost
    blocks into which an expression has been inlined.  */
 
-static inline bool
+inline bool
 inlined_function_outer_scope_p (const_tree block)
 {
  return LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (block)) != UNKNOWN_LOCATION;
@@ -5385,7 +5385,7 @@ extern const char *combined_fn_name (combined_fn);
    pointer.  Assumes all pointers are interchangeable, which is sort
    of already assumed by gcc elsewhere IIRC.  */
 
-static inline int
+inline int
 struct_ptr_eq (const void *a, const void *b)
 {
   const void * const * x = (const void * const *) a;
@@ -5393,7 +5393,7 @@ struct_ptr_eq (const void *a, const void *b)
   return *x == *y;
 }
 
-static inline hashval_t
+inline hashval_t
 struct_ptr_hash (const void *a)
 {
   const void * const * x = (const void * const *) a;
@@ -5401,7 +5401,7 @@ struct_ptr_hash (const void *a)
 }
 
 /* Return nonzero if CODE is a tree code that represents a truth value.  */
-static inline bool
+inline bool
 truth_value_p (enum tree_code code)
 {
   return (TREE_CODE_CLASS (code) == tcc_comparison
@@ -5412,7 +5412,7 @@ truth_value_p (enum tree_code code)
 
 /* Return whether TYPE is a type suitable for an offset for
    a POINTER_PLUS_EXPR.  */
-static inline bool
+inline bool
 ptrofftype_p (tree type)
 {
   return (INTEGRAL_TYPE_P (type)
@@ -5423,7 +5423,7 @@ ptrofftype_p (tree type)
 /* Return true if the argument is a complete type or an array
    of unknown bound (whose type is incomplete but) whose elements
    have complete type.  */
-static inline bool
+inline bool
 complete_or_array_type_p (const_tree type)
 {
   return COMPLETE_TYPE_P (type)
@@ -5482,7 +5482,7 @@ extern void add_expr (const_tree, hash &, unsigned int = 0);
 
 /* Compat version until all callers are converted. Return hash for
    TREE with SEED.  */
-static inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed)
+inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed)
 {
   inchash::hash hstate (seed);
   inchash::add_expr (tree, hstate);
@@ -5776,7 +5776,7 @@ typedef hash_map<tree,tree,decl_tree_traits> decl_tree_map;
 
 /* Initialize the abstract argument list iterator object ITER with the
    arguments from CALL_EXPR node EXP.  */
-static inline void
+inline void
 init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
 {
   iter->t = exp;
@@ -5784,7 +5784,7 @@ init_call_expr_arg_iterator (tree exp, call_expr_arg_iterator *iter)
   iter->i = 0;
 }
 
-static inline void
+inline void
 init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator *iter)
 {
   iter->t = exp;
@@ -5794,7 +5794,7 @@ init_const_call_expr_arg_iterator (const_tree exp, const_call_expr_arg_iterator
 
 /* Return the next argument from abstract argument list iterator object ITER,
    and advance its state.  Return NULL_TREE if there are no more arguments.  */
-static inline tree
+inline tree
 next_call_expr_arg (call_expr_arg_iterator *iter)
 {
   tree result;
@@ -5805,7 +5805,7 @@ next_call_expr_arg (call_expr_arg_iterator *iter)
   return result;
 }
 
-static inline const_tree
+inline const_tree
 next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
 {
   const_tree result;
@@ -5820,14 +5820,14 @@ next_const_call_expr_arg (const_call_expr_arg_iterator *iter)
    past and return the first argument.  Useful in for expressions, e.g.
      for (arg = first_call_expr_arg (exp, &iter); arg;
           arg = next_call_expr_arg (&iter))   */
-static inline tree
+inline tree
 first_call_expr_arg (tree exp, call_expr_arg_iterator *iter)
 {
   init_call_expr_arg_iterator (exp, iter);
   return next_call_expr_arg (iter);
 }
 
-static inline const_tree
+inline const_tree
 first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
 {
   init_const_call_expr_arg_iterator (exp, iter);
@@ -5836,7 +5836,7 @@ first_const_call_expr_arg (const_tree exp, const_call_expr_arg_iterator *iter)
 
 /* Test whether there are more arguments in abstract argument list iterator
    ITER, without changing its state.  */
-static inline bool
+inline bool
 more_call_expr_args_p (const call_expr_arg_iterator *iter)
 {
   return (iter->i < iter->n);
@@ -5853,7 +5853,7 @@ more_call_expr_args_p (const call_expr_arg_iterator *iter)
        (arg) = next_const_call_expr_arg (&(iter)))
 
 /* Return true if tree node T is a language-specific node.  */
-static inline bool
+inline bool
 is_lang_specific (const_tree t)
 {
   return TREE_CODE (t) == LANG_TYPE || TREE_CODE (t) >= NUM_TREE_CODES;
@@ -5871,7 +5871,7 @@ is_lang_specific (const_tree t)
   (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (builtin_decl_explicit (BUILTIN))))
 
 /* Return the tree node for an explicit standard builtin function or NULL.  */
-static inline tree
+inline tree
 builtin_decl_explicit (enum built_in_function fncode)
 {
   gcc_checking_assert (BUILTIN_VALID_P (fncode));
@@ -5880,7 +5880,7 @@ builtin_decl_explicit (enum built_in_function fncode)
 }
 
 /* Return the tree node for an implicit builtin function or NULL.  */
-static inline tree
+inline tree
 builtin_decl_implicit (enum built_in_function fncode)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5900,7 +5900,7 @@ extern tree build_builtin_unreachable (location_t);
 /* Set explicit builtin function nodes and whether it is an implicit
    function.  */
 
-static inline void
+inline void
 set_builtin_decl (enum built_in_function fncode, tree decl, bool implicit_p)
 {
   size_t ufncode = (size_t)fncode;
@@ -5915,7 +5915,7 @@ set_builtin_decl (enum built_in_function fncode, tree decl, bool implicit_p)
 
 /* Set the implicit flag for a builtin function.  */
 
-static inline void
+inline void
 set_builtin_decl_implicit_p (enum built_in_function fncode, bool implicit_p)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5928,7 +5928,7 @@ set_builtin_decl_implicit_p (enum built_in_function fncode, bool implicit_p)
 
 /* Set the declared flag for a builtin function.  */
 
-static inline void
+inline void
 set_builtin_decl_declared_p (enum built_in_function fncode, bool declared_p)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5942,7 +5942,7 @@ set_builtin_decl_declared_p (enum built_in_function fncode, bool declared_p)
 /* Return whether the standard builtin function can be used as an explicit
    function.  */
 
-static inline bool
+inline bool
 builtin_decl_explicit_p (enum built_in_function fncode)
 {
   gcc_checking_assert (BUILTIN_VALID_P (fncode));
@@ -5951,7 +5951,7 @@ builtin_decl_explicit_p (enum built_in_function fncode)
 
 /* Return whether the standard builtin function can be used implicitly.  */
 
-static inline bool
+inline bool
 builtin_decl_implicit_p (enum built_in_function fncode)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5963,7 +5963,7 @@ builtin_decl_implicit_p (enum built_in_function fncode)
 
 /* Return whether the standard builtin function was declared.  */
 
-static inline bool
+inline bool
 builtin_decl_declared_p (enum built_in_function fncode)
 {
   size_t uns_fncode = (size_t)fncode;
@@ -5983,7 +5983,7 @@ builtin_decl_declared_p (enum built_in_function fncode)
    Avoid using this, as it's generally better to use attributes rather
    than to check for functions by name.  */
 
-static inline bool
+inline bool
 maybe_special_function_p (const_tree fndecl)
 {
   tree name_decl = DECL_NAME (fndecl);
@@ -6001,7 +6001,7 @@ maybe_special_function_p (const_tree fndecl)
 /* Return true if T (assumed to be a DECL) is a global variable.
    A variable is considered global if its storage is not automatic.  */
 
-static inline bool
+inline bool
 is_global_var (const_tree t)
 {
   return (TREE_STATIC (t) || DECL_EXTERNAL (t));
@@ -6011,7 +6011,7 @@ is_global_var (const_tree t)
    maybe aliased if it has its address taken by the local TU
    or possibly by another TU and might be modified through a pointer.  */
 
-static inline bool
+inline bool
 may_be_aliased (const_tree var)
 {
   return (TREE_CODE (var) != CONST_DECL
@@ -6025,7 +6025,7 @@ may_be_aliased (const_tree var)
 }
 
 /* Return pointer to optimization flags of FNDECL.  */
-static inline struct cl_optimization *
+inline struct cl_optimization *
 opts_for_fn (const_tree fndecl)
 {
   tree fn_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
@@ -6035,7 +6035,7 @@ opts_for_fn (const_tree fndecl)
 }
 
 /* Return pointer to target flags of FNDECL.  */
-static inline cl_target_option *
+inline cl_target_option *
 target_opts_for_fn (const_tree fndecl)
 {
   tree fn_opts = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
diff --git a/gcc/wide-int.h b/gcc/wide-int.h
index b3c19ec451c..a450a744c9f 100644
--- a/gcc/wide-int.h
+++ b/gcc/wide-int.h
@@ -3495,7 +3495,7 @@ wi::set_bit_in_zero (unsigned int bit)
 
 /* Accumulate a set of overflows into OVERFLOW.  */
 
-static inline void
+inline void
 wi::accumulate_overflow (wi::overflow_type &overflow,
 			 wi::overflow_type suboverflow)
 {
-- 
2.39.2.422.gc867e4fa18


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

* [PATCH] don't declare header-defined functions both static and inline, pt 2
  2023-01-31  8:42   ` Jakub Jelinek
                       ` (2 preceding siblings ...)
  2023-02-16 13:37     ` Patrick Palka
@ 2023-02-16 13:44     ` Patrick Palka
  2023-02-27 15:13       ` Patrick Palka
  3 siblings, 1 reply; 9+ messages in thread
From: Patrick Palka @ 2023-02-16 13:44 UTC (permalink / raw)
  To: gcc-patches; +Cc: Patrick Palka

This fixes some header-defined functions that are undesirably declared
static and weren't caught by the "^static inline" pattern used in the
previous patch.

gcc/ChangeLog:

	* hash-table.h (gt_pch_nx<hash_table<D>): Remove static.
	* lra-int.h (lra_change_class): Likewise.
	* recog.h (which_op_alt): Likewise.
	* sel-sched-ir.h (sel_bb_empty_or_nop_p): Replace static with
	inline.
---
 gcc/hash-table.h   | 2 +-
 gcc/lra-int.h      | 2 +-
 gcc/recog.h        | 2 +-
 gcc/sel-sched-ir.h | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gcc/hash-table.h b/gcc/hash-table.h
index 3f87ec06f37..c0c6e1cd83d 100644
--- a/gcc/hash-table.h
+++ b/gcc/hash-table.h
@@ -1275,7 +1275,7 @@ hashtab_entry_note_pointers (void *obj, void *h, gt_pointer_operator op,
 }
 
 template<typename D>
-static void
+void
 gt_pch_nx (hash_table<D> *h)
 {
   h->check_complete_insertion ();
diff --git a/gcc/lra-int.h b/gcc/lra-int.h
index 73f8eb004b0..a400a0f85e2 100644
--- a/gcc/lra-int.h
+++ b/gcc/lra-int.h
@@ -428,7 +428,7 @@ lra_get_regno_hard_regno (int regno)
 
 /* Change class of pseudo REGNO to NEW_CLASS.  Print info about it
    using TITLE.  Output a new line if NL_P.  */
-static void inline
+inline void
 lra_change_class (int regno, enum reg_class new_class,
 		  const char *title, bool nl_p)
 {
diff --git a/gcc/recog.h b/gcc/recog.h
index 764fa90afde..539a27c3edf 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -382,7 +382,7 @@ extern const operand_alternative *recog_op_alt;
    on operand OP of the current instruction alternative (which_alternative).
    Only valid after calling preprocess_constraints and constrain_operands.  */
 
-inline static const operand_alternative *
+inline const operand_alternative *
 which_op_alt ()
 {
   gcc_checking_assert (IN_RANGE (which_alternative, 0,
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 7034a1ab06c..0e87134c6db 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -1096,7 +1096,7 @@ get_loop_exit_edges_unique_dests (const class loop *loop)
   return edges;
 }
 
-static bool
+inline bool
 sel_bb_empty_or_nop_p (basic_block bb)
 {
   insn_t first = sel_bb_head (bb), last;
-- 
2.39.2.422.gc867e4fa18


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

* Re: [PATCH] don't declare header-defined functions both static and inline
  2023-02-16 13:37     ` Patrick Palka
@ 2023-02-16 13:50       ` Jakub Jelinek
  0 siblings, 0 replies; 9+ messages in thread
From: Jakub Jelinek @ 2023-02-16 13:50 UTC (permalink / raw)
  To: Patrick Palka; +Cc: Richard Biener, gcc-patches

On Thu, Feb 16, 2023 at 08:37:34AM -0500, Patrick Palka wrote:
> I can confirm that this patch only modifies headers that reside in
> $prefix/lib/gcc/x86_64-pc-linux-gnu/13.0.1/plugin/include/
> (with --enable-languages=c,c++,fortran,objc,obj-c++ --enable-jit make install)
> 
> Good point, I was able to scrape the functions modified by this patch
> with the below shell script which outputs the name of each function that
> has at least two overloads/definitions (possibly in different headers),
> followed by the headers in which it's defined:
> 
> I manually verified that none of these function definitions conflict
> with each other.

> Bootstrapping with objc enabled revealed a minor manual changed was
> needed in gcc/objc/objc-act.cc to avoid a redeclaration mismatch error.
> 
> -- >8 --
> 
> Subject: [PATCH] don't declare header-defined functions both static and inline
> 
> Many functions defined in our headers are declared 'static inline' which
> is a C idiom that predates GCC's move to C++ as the implementation
> language.  But in C++ the inline keyword is more than just a compiler
> hint, and is sufficient to give the function the intended semantics.
> In fact declaring a function both static and inline is a pessimization
> since static effectively disables the desired definition merging
> behavior enabled by inline, and is also a source of (harmless) ODR
> violations when a static inline function gets called from a non-static
> inline one (such as tree_operand_check calling tree_operand_length).
> 
> This patch mechanically fixes the vast majority of occurrences of this
> anti-pattern throughout the compiler's headers via the command line
> 
>   echo gcc/*.h gcc/*/*.h | xargs sed -i 's/^static inline/inline/g'
> 
> The patch also manually removes the redundant declarations of is_ivar
> and lookup_category in gcc/objc/objc-act.cc which would otherwise
> conflict with those in objc-act.h (due to the difference in staticness).
> 
> Besides fixing some ODR violations, this speeds up stage1 cc1plus by
> about 2% and reduces the size of its text segment by 1.5MB.

Thanks for doing the extra work, LGTM for trunk then.

> gcc/ChangeLog:
> 
> 	* addresses.h: Mechanically drop 'static' from 'static inline'
> 	functions via s/^static inline/inline/g.
> 	* asan.h: Likewise.
> 	* attribs.h: Likewise.
> 	* basic-block.h: Likewise.
> 	* bitmap.h: Likewise.
> 	* cfghooks.h: Likewise.
> 	* cfgloop.h: Likewise.
> 	* cgraph.h: Likewise.
> 	* cselib.h: Likewise.
> 	* data-streamer.h: Likewise.
> 	* debug.h: Likewise.
> 	* df.h: Likewise.
> 	* diagnostic.h: Likewise.
> 	* dominance.h: Likewise.
> 	* dumpfile.h: Likewise.
> 	* emit-rtl.h: Likewise.
> 	* except.h: Likewise.
> 	* expmed.h: Likewise.
> 	* expr.h: Likewise.
> 	* fixed-value.h: Likewise.
> 	* gengtype.h: Likewise.
> 	* gimple-expr.h: Likewise.
> 	* gimple-iterator.h: Likewise.
> 	* gimple-predict.h: Likewise.
> 	* gimple-range-fold.h: Likewise.
> 	* gimple-ssa.h: Likewise.
> 	* gimple.h: Likewise.
> 	* graphite.h: Likewise.
> 	* hard-reg-set.h: Likewise.
> 	* hash-map.h: Likewise.
> 	* hash-set.h: Likewise.
> 	* hash-table.h: Likewise.
> 	* hwint.h: Likewise.
> 	* input.h: Likewise.
> 	* insn-addr.h: Likewise.
> 	* internal-fn.h: Likewise.
> 	* ipa-fnsummary.h: Likewise.
> 	* ipa-icf-gimple.h: Likewise.
> 	* ipa-inline.h: Likewise.
> 	* ipa-modref.h: Likewise.
> 	* ipa-prop.h: Likewise.
> 	* ira-int.h: Likewise.
> 	* ira.h: Likewise.
> 	* lra-int.h: Likewise.
> 	* lra.h: Likewise.
> 	* lto-streamer.h: Likewise.
> 	* memmodel.h: Likewise.
> 	* omp-general.h: Likewise.
> 	* optabs-query.h: Likewise.
> 	* optabs.h: Likewise.
> 	* plugin.h: Likewise.
> 	* pretty-print.h: Likewise.
> 	* range.h: Likewise.
> 	* read-md.h: Likewise.
> 	* recog.h: Likewise.
> 	* regs.h: Likewise.
> 	* rtl-iter.h: Likewise.
> 	* rtl.h: Likewise.
> 	* sbitmap.h: Likewise.
> 	* sched-int.h: Likewise.
> 	* sel-sched-ir.h: Likewise.
> 	* sese.h: Likewise.
> 	* sparseset.h: Likewise.
> 	* ssa-iterators.h: Likewise.
> 	* system.h: Likewise.
> 	* target-globals.h: Likewise.
> 	* target.h: Likewise.
> 	* timevar.h: Likewise.
> 	* tree-chrec.h: Likewise.
> 	* tree-data-ref.h: Likewise.
> 	* tree-iterator.h: Likewise.
> 	* tree-outof-ssa.h: Likewise.
> 	* tree-phinodes.h: Likewise.
> 	* tree-scalar-evolution.h: Likewise.
> 	* tree-sra.h: Likewise.
> 	* tree-ssa-alias.h: Likewise.
> 	* tree-ssa-live.h: Likewise.
> 	* tree-ssa-loop-manip.h: Likewise.
> 	* tree-ssa-loop.h: Likewise.
> 	* tree-ssa-operands.h: Likewise.
> 	* tree-ssa-propagate.h: Likewise.
> 	* tree-ssa-sccvn.h: Likewise.
> 	* tree-ssa.h: Likewise.
> 	* tree-ssanames.h: Likewise.
> 	* tree-streamer.h: Likewise.
> 	* tree-switch-conversion.h: Likewise.
> 	* tree-vectorizer.h: Likewise.
> 	* tree.h: Likewise.
> 	* wide-int.h: Likewise.
> 
> gcc/c-family/ChangeLog:
> 
> 	* c-common.h: Mechanically drop static from static inline
> 	functions via s/^static inline/inline/g.
> 
> gcc/c/ChangeLog:
> 
> 	* c-parser.h: Mechanically drop static from static inline
> 	functions via s/^static inline/inline/g.
> 
> gcc/cp/ChangeLog:
> 
> 	* cp-tree.h: Mechanically drop static from static inline
> 	functions via s/^static inline/inline/g.
> 
> gcc/fortran/ChangeLog:
> 
> 	* gfortran.h: Mechanically drop static from static inline
> 	functions via s/^static inline/inline/g.
> 
> gcc/jit/ChangeLog:
> 
> 	* jit-dejagnu.h: Mechanically drop static from static inline
> 	functions via s/^static inline/inline/g.
> 	* jit-recording.h: Likewise.
> 
> gcc/objc/ChangeLog:
> 
> 	* objc-act.h: Mechanically drop static from static inline
> 	functions via s/^static inline/inline/g.
> 	* objc-map.h: Likewise.
> 	* objc-act.cc: Remove the redundant redeclarations of is_ivar
> 	and lookup_category.

	Jakub


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

* Re: [PATCH] don't declare header-defined functions both static and inline, pt 2
  2023-02-16 13:44     ` [PATCH] don't declare header-defined functions both static and inline, pt 2 Patrick Palka
@ 2023-02-27 15:13       ` Patrick Palka
  0 siblings, 0 replies; 9+ messages in thread
From: Patrick Palka @ 2023-02-27 15:13 UTC (permalink / raw)
  To: Patrick Palka; +Cc: gcc-patches

On Thu, 16 Feb 2023, Patrick Palka wrote:

> This fixes some header-defined functions that are undesirably declared
> static and weren't caught by the "^static inline" pattern used in the
> previous patch.
> 
> gcc/ChangeLog:
> 
> 	* hash-table.h (gt_pch_nx<hash_table<D>): Remove static.
> 	* lra-int.h (lra_change_class): Likewise.
> 	* recog.h (which_op_alt): Likewise.
> 	* sel-sched-ir.h (sel_bb_empty_or_nop_p): Replace static with
> 	inline.

I went ahead and pushed this since I reckon it's a fairly safe/obvious
follow-up to the main patch
(https://gcc.gnu.org/pipermail/gcc-patches/2023-February/612130.html).

> ---
>  gcc/hash-table.h   | 2 +-
>  gcc/lra-int.h      | 2 +-
>  gcc/recog.h        | 2 +-
>  gcc/sel-sched-ir.h | 2 +-
>  4 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/gcc/hash-table.h b/gcc/hash-table.h
> index 3f87ec06f37..c0c6e1cd83d 100644
> --- a/gcc/hash-table.h
> +++ b/gcc/hash-table.h
> @@ -1275,7 +1275,7 @@ hashtab_entry_note_pointers (void *obj, void *h, gt_pointer_operator op,
>  }
>  
>  template<typename D>
> -static void
> +void
>  gt_pch_nx (hash_table<D> *h)
>  {
>    h->check_complete_insertion ();
> diff --git a/gcc/lra-int.h b/gcc/lra-int.h
> index 73f8eb004b0..a400a0f85e2 100644
> --- a/gcc/lra-int.h
> +++ b/gcc/lra-int.h
> @@ -428,7 +428,7 @@ lra_get_regno_hard_regno (int regno)
>  
>  /* Change class of pseudo REGNO to NEW_CLASS.  Print info about it
>     using TITLE.  Output a new line if NL_P.  */
> -static void inline
> +inline void
>  lra_change_class (int regno, enum reg_class new_class,
>  		  const char *title, bool nl_p)
>  {
> diff --git a/gcc/recog.h b/gcc/recog.h
> index 764fa90afde..539a27c3edf 100644
> --- a/gcc/recog.h
> +++ b/gcc/recog.h
> @@ -382,7 +382,7 @@ extern const operand_alternative *recog_op_alt;
>     on operand OP of the current instruction alternative (which_alternative).
>     Only valid after calling preprocess_constraints and constrain_operands.  */
>  
> -inline static const operand_alternative *
> +inline const operand_alternative *
>  which_op_alt ()
>  {
>    gcc_checking_assert (IN_RANGE (which_alternative, 0,
> diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
> index 7034a1ab06c..0e87134c6db 100644
> --- a/gcc/sel-sched-ir.h
> +++ b/gcc/sel-sched-ir.h
> @@ -1096,7 +1096,7 @@ get_loop_exit_edges_unique_dests (const class loop *loop)
>    return edges;
>  }
>  
> -static bool
> +inline bool
>  sel_bb_empty_or_nop_p (basic_block bb)
>  {
>    insn_t first = sel_bb_head (bb), last;
> -- 
> 2.39.2.422.gc867e4fa18
> 
> 


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

end of thread, other threads:[~2023-02-27 15:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-31  3:37 [PATCH] don't declare header-defined functions both static and inline Patrick Palka
2023-01-31  7:05 ` Richard Biener
2023-01-31  8:42   ` Jakub Jelinek
2023-01-31  9:09     ` Richard Biener
2023-01-31 10:21     ` Eric Botcazou
2023-02-16 13:37     ` Patrick Palka
2023-02-16 13:50       ` Jakub Jelinek
2023-02-16 13:44     ` [PATCH] don't declare header-defined functions both static and inline, pt 2 Patrick Palka
2023-02-27 15:13       ` Patrick Palka

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).