This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Dwarf2out frame insns


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]