libgccjit: Add the function attributes for setting the ABI
diff --git a/gcc/jit/jit-playback.cc b/gcc/jit/jit-playback.cc
index 347f9f9..6badbaf 100644
--- a/gcc/jit/jit-playback.cc
+++ b/gcc/jit/jit-playback.cc
@@ -583,6 +583,38 @@
       return "weak";
     case GCC_JIT_FN_ATTRIBUTE_NONNULL:
       return "nonnull";
+    case GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_CALL:
+        return "cmse_nonsecure_call";
+    case GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_ENTRY:
+        return "cmse_nonsecure_entry";
+    case GCC_JIT_FN_ATTRIBUTE_ARM_PCS:
+        return "pcs";
+    case GCC_JIT_FN_ATTRIBUTE_AVR_INTERRUPT:
+        return "interrupt";
+    case GCC_JIT_FN_ATTRIBUTE_AVR_NOBLOCK:
+        return "noblock";
+    case GCC_JIT_FN_ATTRIBUTE_AVR_SIGNAL:
+        return " signal";
+    case GCC_JIT_FN_ATTRIBUTE_GCN_AMDGPU_HSA_KERNEL:
+        return "amdgpu_hsa_kernel";
+    case GCC_JIT_FN_ATTRIBUTE_MSP430_INTERRUPT:
+        return "interrupt";
+    case GCC_JIT_FN_ATTRIBUTE_NVPTX_KERNEL:
+        return "kernel";
+    case GCC_JIT_FN_ATTRIBUTE_RISCV_INTERRUPT:
+        return "interrupt";
+    case GCC_JIT_FN_ATTRIBUTE_X86_FAST_CALL:
+      return "fastcall";
+    case GCC_JIT_FN_ATTRIBUTE_X86_INTERRUPT:
+      return "interrupt";
+    case GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI:
+      return "ms_abi";
+    case GCC_JIT_FN_ATTRIBUTE_X86_STDCALL:
+      return "stdcall";
+    case GCC_JIT_FN_ATTRIBUTE_X86_SYSV_ABI:
+      return "sysv_abi";
+    case GCC_JIT_FN_ATTRIBUTE_X86_THIS_CALL:
+      return "thiscall";
     case GCC_JIT_FN_ATTRIBUTE_MAX:
       return NULL;
   }
diff --git a/gcc/jit/jit-recording.cc b/gcc/jit/jit-recording.cc
index 4ac5d6b..3dccd41 100644
--- a/gcc/jit/jit-recording.cc
+++ b/gcc/jit/jit-recording.cc
@@ -4954,6 +4954,22 @@
   "GCC_JIT_FN_ATTRIBUTE_CONST",
   "GCC_JIT_FN_ATTRIBUTE_WEAK",
   "GCC_JIT_FN_ATTRIBUTE_NONNULL",
+  "GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_CALL",
+  "GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_ENTRY",
+  "GCC_JIT_FN_ATTRIBUTE_ARM_PCS",
+  "GCC_JIT_FN_ATTRIBUTE_AVR_INTERRUPT",
+  "GCC_JIT_FN_ATTRIBUTE_AVR_NOBLOCK",
+  "GCC_JIT_FN_ATTRIBUTE_AVR_SIGNAL",
+  "GCC_JIT_FN_ATTRIBUTE_GCN_AMDGPU_HSA_KERNEL",
+  "GCC_JIT_FN_ATTRIBUTE_MSP430_INTERRUPT",
+  "GCC_JIT_FN_ATTRIBUTE_NVPTX_KERNEL",
+  "GCC_JIT_FN_ATTRIBUTE_RISCV_INTERRUPT",
+  "GCC_JIT_FN_ATTRIBUTE_X86_FAST_CALL",
+  "GCC_JIT_FN_ATTRIBUTE_X86_INTERRUPT",
+  "GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI",
+  "GCC_JIT_FN_ATTRIBUTE_X86_STDCALL",
+  "GCC_JIT_FN_ATTRIBUTE_X86_SYSV_ABI",
+  "GCC_JIT_FN_ATTRIBUTE_X86_THIS_CALL",
 };
 
 std::string
diff --git a/gcc/jit/libgccjit.h b/gcc/jit/libgccjit.h
index 9ecd201..b9b036f 100644
--- a/gcc/jit/libgccjit.h
+++ b/gcc/jit/libgccjit.h
@@ -2169,6 +2169,36 @@
   GCC_JIT_FN_ATTRIBUTE_WEAK,
   GCC_JIT_FN_ATTRIBUTE_NONNULL,
 
+  // ARM attributes.
+  GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_CALL,
+  GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_ENTRY,
+  GCC_JIT_FN_ATTRIBUTE_ARM_PCS,
+
+  // AVR attributes.
+  GCC_JIT_FN_ATTRIBUTE_AVR_INTERRUPT,
+  GCC_JIT_FN_ATTRIBUTE_AVR_NOBLOCK,
+  GCC_JIT_FN_ATTRIBUTE_AVR_SIGNAL,
+
+  // AMD GCN attributes.
+  GCC_JIT_FN_ATTRIBUTE_GCN_AMDGPU_HSA_KERNEL,
+
+  // MSP430 attributes.
+  GCC_JIT_FN_ATTRIBUTE_MSP430_INTERRUPT,
+
+  // Nvidia PTX attributes.
+  GCC_JIT_FN_ATTRIBUTE_NVPTX_KERNEL,
+
+  // RISC-V attributes.
+  GCC_JIT_FN_ATTRIBUTE_RISCV_INTERRUPT,
+
+  // x86 attributes.
+  GCC_JIT_FN_ATTRIBUTE_X86_FAST_CALL,
+  GCC_JIT_FN_ATTRIBUTE_X86_INTERRUPT,
+  GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI,
+  GCC_JIT_FN_ATTRIBUTE_X86_STDCALL,
+  GCC_JIT_FN_ATTRIBUTE_X86_SYSV_ABI,
+  GCC_JIT_FN_ATTRIBUTE_X86_THIS_CALL,
+
   /* Maximum value of this enum, should always be last. */
   GCC_JIT_FN_ATTRIBUTE_MAX,
 };