Hi,
this patch fixes PR80855, an nvptx target bug where we generate invalid
ptx assembly when encountering label values.
Fixed by emitting "a sorry, unimplemented" message instead.
Tested on nvptx target.
Committed as obvious.
Thanks,
- Tom
Add "sorry, target cannot support label values" for nvptx
2017-06-09 Tom de Vries <t...@codesourcery.com>
PR target/80855
* config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
"target cannot support label values" when encountering LABEL_REF.
* gcc.target/nvptx/label-values.c: New test.
---
gcc/config/nvptx/nvptx.md | 3 +++
gcc/testsuite/gcc.target/nvptx/label-values.c | 14 ++++++++++++++
4 files changed, 28 insertions(+)
diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md
index f2ed63b..f2b0905 100644
--- a/gcc/config/nvptx/nvptx.md
+++ b/gcc/config/nvptx/nvptx.md
@@ -254,6 +254,9 @@
emit_move_insn (operands[0], tmp);
DONE;
}
+
+ if (GET_CODE (operands[1]) == LABEL_REF)
+ sorry ("target cannot support label values");
})
(define_insn "zero_extendqihi2"
diff --git a/gcc/testsuite/gcc.target/nvptx/label-values.c b/gcc/testsuite/gcc.target/nvptx/label-values.c
new file mode 100644
index 0000000..350510e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/nvptx/label-values.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-Wno-pedantic" } */
+
+int
+main (void)
+{
+ goto L2;
+ L1:
+ return 0;
+ L2:
+ {
+ void *ptr = &&L1; /* { dg-message "sorry, unimplemented: target cannot support label values" "" } */
+ }
+}