[PATCH] Typed DWARF stack

Jason Merrill jason@redhat.com
Fri Apr 29 21:01:00 GMT 2011


On 04/16/2011 04:11 AM, Jakub Jelinek wrote:
> +	  case dw_val_class_const_double:
> +	    {
> +	      unsigned HOST_WIDE_INT first, second;
> +	      l = 2 * HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR;
> +
> +	      dw2_asm_output_data (1, l, NULL);
> +	      if (WORDS_BIG_ENDIAN)
> +		{
> +		  first = val2->v.val_double.high;
> +		  second = val2->v.val_double.low;
> +		}
> +	      else
> +		{
> +		  first = val2->v.val_double.low;
> +		  second = val2->v.val_double.high;
> +		}
> +	      dw2_asm_output_data (HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR,
> +				   first, NULL);
> +	      dw2_asm_output_data (HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR,
> +				   second, NULL);
> +	    }

How about moving the 2* into the first call to dw2_asm_output_data so 
that the later calls can just use 'l'?

> +	unsigned r = val1->v.val_unsigned;
> +	unsigned long o = get_base_type_offset (val2->v.val_die_ref.die);
> +	if (for_eh_or_skip>= 0)
> +	  r = DWARF2_FRAME_REG_OUT (r, for_eh_or_skip);
> +	gcc_assert (size_of_uleb128 (r)
> +		    == size_of_uleb128 (val1->v.val_unsigned)&&  o);

Maybe move this assert inside the if?

> +  /* Sort by increasing usage count, as when readding the last

"reading"

OK with these changes.

Jason



More information about the Gcc-patches mailing list