[PATCH] Fix PR90901, debug-expr expansion of deleted labels
Richard Biener
rguenther@suse.de
Tue Jun 18 08:16:00 GMT 2019
The following deals with
(note/s 5 0 0 ("lab") NOTE_INSN_DELETED_LABEL 2)
appearing in DECL_RTL of LABEL_DECLs which expand_debug_expr doesn't
expect. copy_rtx cannot deal with any notes so the following simply
treats NOTE_P DECL_RTL as if it was optimized away.
Bootstrap / regtest running on x86_64-unknown-linux-gnu.
Richard.
2019-06-18 Richard Biener <rguenther@suse.de>
PR debug/90900
* cfgexpand.c (expand_debug_expr): Treat NOTE_P DECL_RTL
as if optimized away.
* gcc.dg/gomp/pr90900.c: New testcase.
Index: gcc/cfgexpand.c
===================================================================
--- gcc/cfgexpand.c (revision 272405)
+++ gcc/cfgexpand.c (working copy)
@@ -4387,7 +4387,11 @@ expand_debug_expr (tree exp)
op0 = DECL_RTL_IF_SET (exp);
/* This decl was probably optimized away. */
- if (!op0)
+ if (!op0
+ /* At least label RTXen are sometimes replaced by
+ NOTE_INSN_DELETED_LABEL. Any notes here are not
+ handled by copy_rtx. */
+ || NOTE_P (op0))
{
if (!VAR_P (exp)
|| DECL_EXTERNAL (exp)
Index: gcc/testsuite/gcc.dg/gomp/pr90900.c
===================================================================
--- gcc/testsuite/gcc.dg/gomp/pr90900.c (nonexistent)
+++ gcc/testsuite/gcc.dg/gomp/pr90900.c (working copy)
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fopenmp -g" } */
+
+void f (int a)
+{
+ void *x = &&lab;
+#pragma omp parallel
+ if (a)
+ { lab: __builtin_unreachable(); }
+ x;
+}
More information about the Gcc-patches
mailing list