]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Revert OG12-only parts of "dwarf: Multi-register CFI address support"
authorTobias Burnus <tobias@codesourcery.com>
Wed, 31 Aug 2022 08:00:09 +0000 (10:00 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Wed, 31 Aug 2022 08:00:09 +0000 (10:00 +0200)
"dwarf: Multi-register CFI address support." was commited to upstream (GCC12)
as r12-5833-g13b6c7639cfdca892a3f02b63596b097e1839f38

It is based on an earlier version that was committed to OG11
as ce8e18474780aaae1abbfdde0543c948ae97da42

The OG11 version contained code that was not part of the upstream version
as the approach changed; however, when OG12 was created, those were
accidentally applied to OG12.

This commit removes (reverts) the additional code, i.e. the OG12 commits:

Reverts:
commit 3405728e403ce7054f09e9a69846a57f680060db
"dwarf: Multi-register CFI address support"

gcc/ChangeLog:

* dwarf2cfi.cc (get_cfa_from_loc_descr): Support register spans
with DW_OP_piece and DW_OP_LLVM_piece_end.
* dwarf2out.cc (build_cfa_loc): Support register spans.

include/ChangeLog:

* dwarf2.def (DW_OP_LLVM_piece_end): New extension operator.

Reverts:
commit 29ba2e4eeff0381e04a37a3c471c56cd887d2035
"Fix mis-merge of 'dwarf: Multi-register CFI address support'"

gcc/
* dwarf2cfi.cc (get_cfa_from_loc_descr): Check op against DW_OP_bregx.

gcc/ChangeLog.omp
gcc/dwarf2cfi.cc
gcc/dwarf2out.cc
include/ChangeLog.omp
include/dwarf2.def

index ff9d34b5c7ced432a62c540a42aeff33853ac3b9..e225f2721ab27dc771155407834cdac5d8cffc40 100644 (file)
@@ -1,3 +1,16 @@
+2022-08-31  Tobias Burnus  <tobias@codesourcery.com>
+
+       Revert:
+       2022-06-30  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+       * dwarf2cfi.cc (get_cfa_from_loc_descr): Check op against DW_OP_bregx.
+
+       2020-07-27  Andrew Stubbs  <ams@codesourcery.com>
+
+       * dwarf2cfi.cc (get_cfa_from_loc_descr): Support register spans
+       with DW_OP_piece and DW_OP_LLVM_piece_end.
+       * dwarf2out.cc (build_cfa_loc): Support register spans.
+
 2022-08-30  Tobias Burnus  <tobias@codesourcery.com>
 
        Backport from mainline:
index 1359280f519195af83a17079d0261b5abc7ecf24..ab7c5cc5b27b5fb48b0f63ee2240fda8054c7a33 100644 (file)
@@ -540,10 +540,6 @@ get_cfa_from_loc_descr (dw_cfa_location *cfa, struct dw_loc_descr_node *loc)
   cfa->indirect = 0;
   cfa->reg.set_by_dwreg (INVALID_REGNUM);
 
-  /* Record previous register pieces here.  */
-  struct cfa_reg span;
-  span.set_by_dwreg (INVALID_REGNUM);
-
   for (ptr = loc; ptr != NULL; ptr = ptr->dw_loc_next)
     {
       enum dwarf_location_atom op = ptr->dw_loc_opc;
@@ -626,9 +622,7 @@ get_cfa_from_loc_descr (dw_cfa_location *cfa, struct dw_loc_descr_node *loc)
                = (op == DW_OP_bregx
                   ? ptr->dw_loc_oprnd1.v.val_int : op - DW_OP_breg0);
              cfa->reg.set_by_dwreg (regno);
-             cfa->base_offset = (op == DW_OP_bregx
-                                 ? ptr->dw_loc_oprnd2.v.val_int
-                                 : ptr->dw_loc_oprnd1.v.val_int);
+             cfa->base_offset = ptr->dw_loc_oprnd1.v.val_int;
            }
          else
            {
@@ -653,24 +647,6 @@ get_cfa_from_loc_descr (dw_cfa_location *cfa, struct dw_loc_descr_node *loc)
              cfa->offset = 0;
            }
          break;
-       case DW_OP_piece:
-         if (span.reg != INVALID_REGNUM)
-           {
-             /* We only support contiguous pieces, for now.  */
-             gcc_assert (cfa->reg.reg == span.reg + span.span);
-             gcc_assert (known_eq (ptr->dw_loc_oprnd1.v.val_int,
-                                   span.span_width));
-             span.span++;
-             cfa->reg = span;
-           }
-         else
-           {
-             cfa->reg.span_width = ptr->dw_loc_oprnd1.v.val_int;
-             span = cfa->reg;
-           }
-         break;
-       case DW_OP_LLVM_piece_end:
-         break;
        case DW_OP_deref:
          cfa->indirect = 1;
          break;
@@ -729,7 +705,6 @@ get_cfa_from_loc_descr (dw_cfa_location *cfa, struct dw_loc_descr_node *loc)
          /* The offset is already in place.  */
          break;
        case DW_OP_plus_uconst:
-         gcc_assert (known_eq (cfa->offset, 0));
          cfa->offset = ptr->dw_loc_oprnd1.v.val_unsigned;
          break;
        default:
index 084d48c279b98b2155874207de2d78927eb16960..8364f3e4ee4f94eeb868828592e2199a9b096113 100644 (file)
@@ -2833,11 +2833,7 @@ build_cfa_loc (dw_cfa_location *cfa, poly_int64 offset)
       head = build_span_loc (cfa->reg);
 
       if (maybe_ne (offset, 0))
-       {
-         add_loc_descr (&head, new_loc_descr (DW_OP_LLVM_piece_end, 0, 0));
-         add_loc_descr (&head, new_loc_descr (DW_OP_deref, 0, 0));
          loc_descr_plus_const (&head, offset);
-       }
     }
   else if (cfa->indirect)
     {
index 167277b33e31bd45c5d267cedc543d775b02e911..141ac55cf7a3d9b74a421e6a0a7213ca279a7b44 100644 (file)
@@ -1,3 +1,10 @@
+2022-08-31  Tobias Burnus  <tobias@codesourcery.com>
+
+       Revert:
+       2020-07-27  Andrew Stubbs  <ams@codesourcery.com>
+
+       * dwarf2.def (DW_OP_LLVM_piece_end): New extension operator.
+
 2022-07-07  Tobias Burnus  <tobias@codesourcery.com>
 
        Backport from mainline:
index a3625a619bf1ea9997116f8ddb4ddc87474f36d7..4214c80907a09ca32342870f0127d49c6a811bd9 100644 (file)
@@ -704,12 +704,6 @@ DW_OP (DW_OP_PGI_omp_thread_num, 0xf8)
    to 0 except explicitly documented for one action.  Please refer AArch64 DWARF
    ABI documentation for details.  */
 DW_OP (DW_OP_AARCH64_operation, 0xea)
-
-/* AMD GCN extensions (originally for LLVM).  See
-   http://llvm.org/docs/AMDGPUDwarfExtensionsForHeterogeneousDebugging.html  */
-// This clashes with DW_OP_AARCH64_operation, so use an alias instead
-// DW_OP (DW_OP_LLVM_piece_end, 0xea)
-#define DW_OP_LLVM_piece_end DW_OP_AARCH64_operation
 DW_END_OP
 
 DW_FIRST_ATE (DW_ATE_void, 0x0)