https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83589

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
Using this rudimentary workaround, I got the failing tests of this PR passing
again:
...
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index afb0e4dd185..3ac28b3d903 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -78,6 +78,7 @@
 #include "target-def.h"

 #define WORKAROUND_PTXJIT_BUG 1
+#define WORKAROUND_PTXJIT_BUG_2 1

 /* The various PTX memory areas an object might reside in.  */
 enum nvptx_data_area
@@ -4431,6 +4432,12 @@ nvptx_reorg (void)
   if (TARGET_UNIFORM_SIMT)
     nvptx_reorg_uniform_simt ();

+#if WORKAROUND_PTXJIT_BUG_2
+  for (rtx_insn *insn = get_insns (); insn; insn = NEXT_INSN (insn))
+    if (LABEL_P (insn))
+      emit_insn_before (gen_fake_nop (), insn);
+#endif
+
   regstat_free_n_sets_and_refs ();

   df_finish_pass (true);
diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md
index f9c087b6d22..909484c329a 100644
--- a/gcc/config/nvptx/nvptx.md
+++ b/gcc/config/nvptx/nvptx.md
@@ -994,6 +994,15 @@
   ""
   "")

+(define_insn "fake_nop"
+  [(const_int 1)]
+  ""
+  "{
+     .reg .u32 %%nop_src;
+     .reg .u32 %%nop_dst;
+     mov.u32 %%nop_dst, %%nop_src;
+   }")
+
 (define_insn "return"
   [(return)]
   ""
...

Reply via email to