diff --git a/gcc/jit/jit-playback.c b/gcc/jit/jit-playback.c
index f721e5c..ab7a668 100644
--- a/gcc/jit/jit-playback.c
+++ b/gcc/jit/jit-playback.c
@@ -472,7 +472,8 @@
 	      const char *name,
 	      const auto_vec<param *> *params,
 	      int is_variadic,
-	      enum built_in_function builtin_id)
+	      enum built_in_function builtin_id,
+	      enum gcc_jit_inline_mode inline_mode)
 {
   int i;
   param *param;
@@ -496,6 +497,30 @@
   /* FIXME: this uses input_location: */
   tree fndecl = build_fn_decl (name, fn_type);
 
+  if (inline_mode != GCC_JIT_INLINE_MODE_DEFAULT)
+  {
+    switch (inline_mode)
+    {
+        case GCC_JIT_INLINE_MODE_DEFAULT:
+            break;
+        case GCC_JIT_INLINE_MODE_ALWAYS_INLINE:
+            DECL_DECLARED_INLINE_P (fndecl) = 1;
+            DECL_DISREGARD_INLINE_LIMITS (fndecl) = 1; // FIXME: this line breaks compilation of sysroot, but seems required to make inlining work.
+            // FIXME: could it be because it's calling an external function?
+            DECL_ATTRIBUTES (fndecl) =
+                tree_cons (get_identifier ("always_inline"),
+                        NULL,
+                        DECL_ATTRIBUTES (fndecl));
+            break;
+        case GCC_JIT_INLINE_MODE_NO_INLINE:
+            DECL_UNINLINABLE (fndecl) = 1;
+            break;
+        case GCC_JIT_INLINE_MODE_INLINE:
+            DECL_DECLARED_INLINE_P (fndecl) = 1;
+            break;
+    }
+  }
+
   if (loc)
     set_tree_location (fndecl, loc);
 
diff --git a/gcc/jit/jit-playback.h b/gcc/jit/jit-playback.h
index b5d71aa..c81061f 100644
--- a/gcc/jit/jit-playback.h
+++ b/gcc/jit/jit-playback.h
@@ -104,7 +104,8 @@
 		const char *name,
 		const auto_vec<param *> *params,
 		int is_variadic,
-		enum built_in_function builtin_id);
+		enum built_in_function builtin_id,
+		enum gcc_jit_inline_mode inline_mode);
 
   lvalue *
   new_global (location *loc,
diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c
index 0aa535e..c2436d7 100644
--- a/gcc/jit/jit-recording.c
+++ b/gcc/jit/jit-recording.c
@@ -3957,7 +3957,8 @@
   m_builtin_id (builtin_id),
   m_locals (),
   m_blocks (),
-  m_fn_ptr_type (NULL)
+  m_fn_ptr_type (NULL),
+  m_inline_mode(GCC_JIT_INLINE_MODE_DEFAULT)
 {
   for (int i = 0; i< num_params; i++)
     {
@@ -4016,7 +4017,8 @@
 				     m_name->c_str (),
 				     &params,
 				     m_is_variadic,
-				     m_builtin_id));
+				     m_builtin_id,
+				     m_inline_mode));
 }
 
 /* Create a recording::local instance and add it to
@@ -4231,6 +4233,15 @@
 }
 
 /* Implements the post-error-checking part of
+   gcc_jit_function_set_inline_mode.  */
+
+void
+recording::function::set_inline_mode(enum gcc_jit_inline_mode inline_mode)
+{
+  m_inline_mode = inline_mode;
+}
+
+/* Implements the post-error-checking part of
    gcc_jit_function_get_address.  */
 
 recording::rvalue *
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index 36c8fba..e598869 100644
--- a/gcc/jit/jit-recording.h
+++ b/gcc/jit/jit-recording.h
@@ -1263,6 +1263,8 @@
 
   void dump_to_dot (const char *path);
 
+  void set_inline_mode(enum gcc_jit_inline_mode);
+
   rvalue *get_address (location *loc);
 
 private:
@@ -1280,6 +1282,7 @@
   auto_vec<local *> m_locals;
   auto_vec<block *> m_blocks;
   type *m_fn_ptr_type;
+  gcc_jit_inline_mode m_inline_mode;
 };
 
 class block : public memento
diff --git a/gcc/jit/libgccjit.c b/gcc/jit/libgccjit.c
index 4783803..d4a47d8 100644
--- a/gcc/jit/libgccjit.c
+++ b/gcc/jit/libgccjit.c
@@ -551,6 +551,20 @@
 /* Public entrypoint.  See description in libgccjit.h.
 
    After error-checking, the real work is done by the
+   gcc::jit::recording::function::set_inline_mode method, in
+   jit-recording.c.  */
+
+void
+gcc_jit_function_set_inline_mode(gcc_jit_function *func, enum gcc_jit_inline_mode inline_mode)
+{
+  RETURN_IF_FAIL (func, NULL, NULL, "NULL function");
+
+  func->set_inline_mode(inline_mode);
+}
+
+/* Public entrypoint.  See description in libgccjit.h.
+
+   After error-checking, the real work is done by the
    gcc::jit::recording::type::is_bool method, in
    jit-recording.c.  */
 
diff --git a/gcc/jit/libgccjit.h b/gcc/jit/libgccjit.h
index e4ec6cf..179cc5c 100644
--- a/gcc/jit/libgccjit.h
+++ b/gcc/jit/libgccjit.h
@@ -1745,6 +1745,19 @@
 extern gcc_jit_type *
 gcc_jit_type_is_array (gcc_jit_type *type);
 
+#define LIBGCCJIT_HAVE_gcc_jit_function_set_inline_mode
+
+enum gcc_jit_inline_mode
+{
+    GCC_JIT_INLINE_MODE_DEFAULT,
+    GCC_JIT_INLINE_MODE_ALWAYS_INLINE,
+    GCC_JIT_INLINE_MODE_NO_INLINE,
+    GCC_JIT_INLINE_MODE_INLINE,
+};
+
+extern void
+gcc_jit_function_set_inline_mode(gcc_jit_function *func, enum gcc_jit_inline_mode inline_mode);
+
 /* Return non-zero if the type is a bool.  */
 extern int
 gcc_jit_type_is_bool (gcc_jit_type *type);
diff --git a/gcc/jit/libgccjit.map b/gcc/jit/libgccjit.map
index a30cca5..78bda91 100644
--- a/gcc/jit/libgccjit.map
+++ b/gcc/jit/libgccjit.map
@@ -252,3 +252,8 @@
     gcc_jit_context_new_rvalue_from_struct;
     gcc_jit_context_new_rvalue_from_array;
 } LIBGCCJIT_ABI_20;
+
+LIBGCCJIT_ABI_22 {
+  global:
+    gcc_jit_function_set_inline_mode;
+} LIBGCCJIT_ABI_21;
