Patchwork dwarf2cfi.c patch for [was new port: msp430-elf]

login
register
mail settings
Submitter DJ Delorie
Date May 10, 2013, 11:49 p.m.
Message ID <201305102349.r4ANnQ6m001898@greed.delorie.com>
Download mbox | patch
Permalink /patch/243099/
State New
Headers show

Comments

DJ Delorie - May 10, 2013, 11:49 p.m.
> > Note that I had to make a few changes (fixes?)  in the MI portions of
> > gcc to avoid problems I encountered, I don't know if these changes are
> > "correct" or if there are better ways to avoid those cases.  Those
> 
> In any case, they should best be posted in separate messages, each one 
> with its own rationale.

Here's the second of those...

Patch

Index: dwarf2cfi.c
===================================================================
--- dwarf2cfi.c	(revision 198591)
+++ dwarf2cfi.c	(working copy)
@@ -277,12 +277,19 @@  expand_builtin_init_dwarf_reg_sizes (tre
 	    {
 	      if (save_mode == VOIDmode)
 		continue;
 	      wrote_return_column = true;
 	    }
 	  size = GET_MODE_SIZE (save_mode);
+
+          /* Entries in the dwarf_reg_size_table must be big enough to hold an _Unwind_Word
+             even if this is bigger than reg_raw_mode.  This can happen on targets where the
+             pointer size is larger than the integer size, and not a power-of-two.  (Eg MSP430).  */
+          if (size < GET_MODE_SIZE (targetm.unwind_word_mode ()))
+            size = GET_MODE_SIZE (targetm.unwind_word_mode ());
+
 	  if (offset < 0)
 	    continue;
 
 	  emit_move_insn (adjust_address (mem, mode, offset),
 			  gen_int_mode (size, mode));
 	}