This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Dwarf2out frame insns
- To: gcc-patches at gcc dot gnu dot org
- Subject: Dwarf2out frame insns
- From: Michael Meissner <meissner at redhat dot com>
- Date: Tue, 30 May 2000 21:40:59 -0400
The port I'm working on needs to support spliting loading large
constants with HIGH/LO_SUM. The normal method of spliting the
constant into 2 pieces and using an ADD or OR to glue the pieces
together will not work, since the instructions are set high/set low,
which do not modify the low/high bits respectiviely. The following
patch that I've committed adds supports for these instructions.
2000-05-30 Michael Meissner <meissner@redhat.com>
* dwarf2out.c (dwarf2out_frame_debug_expr): Ignore HIGH
instructions. Treat LO_SUM operations as loading the full integer
constant.
*** gcc/dwarf2out.c.~1~ Thu May 11 13:01:34 2000
--- gcc/dwarf2out.c Tue May 30 21:29:13 2000
*************** dwarf2out_frame_debug_expr (expr, label)
*** 1289,1294 ****
--- 1289,1304 ----
dwarf2out_def_cfa (label, cfa_reg, cfa_offset);
break;
+ /* Skip over HIGH, assuming it will be followed by a LO_SUM, which
+ will fill in all of the bits. */
+ case HIGH:
+ break;
+
+ case LO_SUM:
+ cfa_temp_reg = REGNO (dest);
+ cfa_temp_value = INTVAL (XEXP (src, 1));
+ break;
+
case MEM:
/* Saving a register to the stack. Make sure dest is relative to the
CFA register. */
--
Michael Meissner, Cygnus Solutions, a Red Hat company.
PMB 198, 174 Littleton Road #3, Westford, Massachusetts 01886, USA
Work: meissner@redhat.com phone: +1 978-486-9304
Non-work: meissner@spectacle-pond.org fax: +1 978-692-4482