nios2: Don't disable relaxation with --gdwarf-N
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 26 Jan 2021 16:18:39 +0000 (08:18 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 26 Jan 2021 16:18:52 +0000 (08:18 -0800)
GCC 11 passes --gdwarf-5 to assembler to enable DWARF5 debug info.  Don't
disable relaxation when --gdwarf-N is specified.  The assembler generated
debug information will treat the sequence of the relaxed instructions as
a single instruction.

PR gas/27243
* config/tc-nios2.c (md_begin): Don't disable relaxation with
--gdwarf-N.
* testsuite/gas/nios2/relax.d: New file.
* testsuite/gas/nios2/relax.s: Likewise.

gas/ChangeLog
gas/config/tc-nios2.c
gas/testsuite/gas/nios2/relax.d [new file with mode: 0644]
gas/testsuite/gas/nios2/relax.s [new file with mode: 0644]

index e76a5bf531a36d7808c545e0d02e055527715754..b3eb7db8cf95ff8bcfbe343968113d5c9cec0267 100644 (file)
@@ -1,3 +1,11 @@
+2021-01-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/27243
+       * config/tc-nios2.c (md_begin): Don't disable relaxation with
+       --gdwarf-N.
+       * testsuite/gas/nios2/relax.d: New file.
+       * testsuite/gas/nios2/relax.s: Likewise.
+
 2021-01-26  Alan Modra  <amodra@gmail.com>
 
        * testsuite/gas/all/local-label-overflow.d: Use xfail rather than
index eea6687fcc4b0690a4e7fd0a46e2919040a35da1..be4536caa8a0d464788d7e25ed399a7d11a048bf 100644 (file)
@@ -3643,10 +3643,6 @@ md_begin (void)
   nios2_as_options.noat = FALSE;
   nios2_as_options.nobreak = FALSE;
 
-  /* Debug information is incompatible with relaxation.  */
-  if (debug_type != DEBUG_UNSPECIFIED)
-    nios2_as_options.relax = relax_none;
-
   /* Initialize the alignment data.  */
   nios2_current_align_seg = now_seg;
   nios2_last_label = NULL;
diff --git a/gas/testsuite/gas/nios2/relax.d b/gas/testsuite/gas/nios2/relax.d
new file mode 100644 (file)
index 0000000..ca01a4f
--- /dev/null
@@ -0,0 +1,25 @@
+#source: relax.s
+#as: --gdwarf-5
+#objdump: -w -WL -dr --prefix-addresses --show-raw-insn
+#name: NIOS2 relax with --gdwarf-5
+
+# Test relaxation with assembler generated debug info.
+.*:     file format elf32-littlenios2
+
+Contents of the .debug_line section:
+
+CU: ./relax.s:
+File +name +Line +number +Starting +address +View +Stmt
+relax.s +2 +0 +x
+relax.s +5 +0x10018 +x
+relax.s +- +0x1001c
+
+Disassembly of section .text:
+0x00000000 21400526    beq     r4,r5,0x00000018
+0x00000004 0002e03a    nextpc  at
+0x00000008 085fffc4    addi    at,at,32767
+0x0000000c 085fffc4    addi    at,at,32767
+0x00000010 08400484    addi    at,at,18
+0x00000014 0800683a    jmp     at
+       ...
+0x00010018 f800283a    ret
diff --git a/gas/testsuite/gas/nios2/relax.s b/gas/testsuite/gas/nios2/relax.s
new file mode 100644 (file)
index 0000000..ef417fd
--- /dev/null
@@ -0,0 +1,5 @@
+       .text
+       bne     r4, r5, 1f
+       .zero 0x10000
+1:
+       ret