diff --git a/addrcheck/ac_main.c b/addrcheck/ac_main.c
index ce653f7..0ff1b1e 100644
--- a/addrcheck/ac_main.c
+++ b/addrcheck/ac_main.c
@@ -217,7 +217,7 @@
              ? VGM_BIT_INVALID : VGM_BIT_VALID;
 }
 
-static __inline__ void set_abit ( Addr a, UChar abit )
+static /* __inline__ */ void set_abit ( Addr a, UChar abit )
 {
    AcSecMap* sm;
    UInt    sm_off;
@@ -257,7 +257,7 @@
 /*--- Setting permissions over address ranges.             ---*/
 /*------------------------------------------------------------*/
 
-static __inline__ 
+static /* __inline__ */
 void set_address_range_perms ( Addr a, UInt len, 
                                UInt example_a_bit )
 {
@@ -841,7 +841,7 @@
    FPU load and store checks, called from generated code.
    ------------------------------------------------------------------ */
 
-static __inline__ 
+static 
 void ac_fpu_ACCESS_check ( Addr addr, Int size, Bool isWrite )
 {
    /* Ensure the read area is both addressible and valid (ie,
diff --git a/cachegrind/cg_main.c b/cachegrind/cg_main.c
index e18f93c..db27b17 100644
--- a/cachegrind/cg_main.c
+++ b/cachegrind/cg_main.c
@@ -407,8 +407,8 @@
  * In all cases prepends new nodes to their chain.  Returns a pointer to the
  * cost centre.  Also sets BB_seen_before by reference. 
  */ 
-static __inline__ BBCC* get_BBCC(Addr bb_orig_addr, UCodeBlock* cb, 
-                                 Bool remove, Bool *BB_seen_before)
+static BBCC* get_BBCC(Addr bb_orig_addr, UCodeBlock* cb, 
+                      Bool remove, Bool *BB_seen_before)
 {
    file_node *curr_file_node;
    fn_node   *curr_fn_node;
diff --git a/cachegrind/cg_sim_gen.c b/cachegrind/cg_sim_gen.c
index 0f768ea..a5c1df0 100644
--- a/cachegrind/cg_sim_gen.c
+++ b/cachegrind/cg_sim_gen.c
@@ -112,7 +112,7 @@
     cachesim_initcache(config, &L);                                         \
 }                                                                           \
                                                                             \
-static __inline__                                                           \
+static /* __inline__ */                                                     \
 void cachesim_##L##_doref(Addr a, UChar size, ULong* m1, ULong *m2)         \
 {                                                                           \
    register UInt set1 = ( a         >> L.line_size_bits) & (L.sets_min_1);  \
diff --git a/coregrind/arch/x86-linux/vg_libpthread.c b/coregrind/arch/x86-linux/vg_libpthread.c
index 0d8abca..b5d3c46 100644
--- a/coregrind/arch/x86-linux/vg_libpthread.c
+++ b/coregrind/arch/x86-linux/vg_libpthread.c
@@ -1972,8 +1972,8 @@
  * this logic will become even more tortured.  Wait until we really
  * need it.
  */ 
-static inline int _open(const char *pathname, int flags, mode_t mode,
-			int (*openp)(const char *, int, mode_t))
+static int _open(const char *pathname, int flags, mode_t mode,
+	         int (*openp)(const char *, int, mode_t))
 {
    int fd;
    struct stat st;
diff --git a/coregrind/vg_from_ucode.c b/coregrind/vg_from_ucode.c
index 83bdd04..3e8c462 100644
--- a/coregrind/vg_from_ucode.c
+++ b/coregrind/vg_from_ucode.c
@@ -206,7 +206,8 @@
    VG_(emitB) ( (l >> 8) & 0x000000FF );
 }
 
-__inline__ void VG_(emitL) ( UInt l )
+/* __inline__ */
+void VG_(emitL) ( UInt l )
 {
    VG_(emitB) ( (l) & 0x000000FF );
    VG_(emitB) ( (l >> 8) & 0x000000FF );
@@ -473,7 +474,6 @@
    use_flags: set of (real) flags the instruction uses
    set_flags: set of (real) flags the instruction sets
 */
-__inline__ 
 void VG_(new_emit) ( Bool interacts_with_simd_flags, 
                      FlagSet use_flags, FlagSet set_flags )
 {
diff --git a/coregrind/vg_libpthread.c b/coregrind/vg_libpthread.c
index 0d8abca..b5d3c46 100644
--- a/coregrind/vg_libpthread.c
+++ b/coregrind/vg_libpthread.c
@@ -1972,8 +1972,8 @@
  * this logic will become even more tortured.  Wait until we really
  * need it.
  */ 
-static inline int _open(const char *pathname, int flags, mode_t mode,
-			int (*openp)(const char *, int, mode_t))
+static int _open(const char *pathname, int flags, mode_t mode,
+	         int (*openp)(const char *, int, mode_t))
 {
    int fd;
    struct stat st;
diff --git a/coregrind/vg_symtab2.c b/coregrind/vg_symtab2.c
index a95a982..34b460f 100644
--- a/coregrind/vg_symtab2.c
+++ b/coregrind/vg_symtab2.c
@@ -148,7 +148,7 @@
    recently, in which case we find the old index and return that.
    This avoids the most egregious duplications. */
 
-static __inline__
+static
 Int addStr ( SegInfo* si, Char* str )
 {
 #  define EMPTY    0xffffffff
@@ -269,7 +269,7 @@
 
 /* Top-level place to call to add a source-location mapping entry. */
 
-static __inline__
+static 
 void addLineInfo ( SegInfo* si,
                    Int      fnmoff,
                    Addr     this,
diff --git a/coregrind/vg_translate.c b/coregrind/vg_translate.c
index 331dc4a..da39131 100644
--- a/coregrind/vg_translate.c
+++ b/coregrind/vg_translate.c
@@ -1341,7 +1341,7 @@
 
 /* Change temp regs in u into real regs, as directed by the
  * temps[i]-->reals[i] mapping. */
-static __inline__
+static
 void patchUInstr ( UInstr* u, Int temps[], UInt reals[], Int n_tmap )
 {
    Int i;
@@ -1389,7 +1389,7 @@
    reg.  Otherwise return -1.  Used in redundant-PUT elimination.
    Note that this is not required for skins extending UCode because
    this happens before instrumentation. */
-static __inline__ 
+static
 Int maybe_uinstrReadsArchReg ( UInstr* u )
 {
    switch (u->opcode) {
diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c
index 0e72a55..08905b0 100644
--- a/helgrind/hg_main.c
+++ b/helgrind/hg_main.c
@@ -509,7 +509,7 @@
 
 /* Set a word.  The byte give by 'a' could be anywhere in the word -- the whole
  * word gets set. */
-static __inline__ 
+static /* __inline__ */
 void set_sword ( Addr a, shadow_word sword )
 {
    ESecMap* sm;
@@ -694,9 +694,9 @@
 }
 
 /* Compute the hash of a LockSet */
-static inline UInt hash_LockSet_w_wo(const LockSet *ls, 
-				     const Mutex *with,
-				     const Mutex *without)
+static UInt hash_LockSet_w_wo(const LockSet *ls, 
+			      const Mutex *with,
+			      const Mutex *without)
 {
    Int  i;
    UInt hash = ls->setsize + (with != NULL) - (without != NULL);
diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c
index eb78cec..9457228 100644
--- a/memcheck/mc_main.c
+++ b/memcheck/mc_main.c
@@ -198,7 +198,7 @@
    return sm->vbyte[sm_off];
 }
 
-static __inline__ void set_abit ( Addr a, UChar abit )
+static /* __inline__ */ void set_abit ( Addr a, UChar abit )
 {
    SecMap* sm;
    UInt    sm_off;
