Commit 417b3023 by Alexandre Oliva Committed by Jakub Jelinek

dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and DW_OP_implicit_value…

dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and DW_OP_implicit_value even without dwarf_version 4.

	* dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
	DW_OP_implicit_value even without dwarf_version 4.

From-SVN: r151815
parent e7f373fa
2009-09-17 Alexandre Oliva <aoliva@redhat.com>
* dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
DW_OP_implicit_value even without dwarf_version 4.
2009-09-17 Jan Hubicka <jh@suse.cz> 2009-09-17 Jan Hubicka <jh@suse.cz>
* dwarf2out.c: Include tree-pass.h and gimple.h. * dwarf2out.c: Include tree-pass.h and gimple.h.
......
...@@ -11777,7 +11777,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode, ...@@ -11777,7 +11777,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
break; break;
case CONST_INT: case CONST_INT:
if (mode != VOIDmode && mode != BLKmode && dwarf_version >= 4) if (mode != VOIDmode && mode != BLKmode)
{ {
HOST_WIDE_INT i = INTVAL (rtl); HOST_WIDE_INT i = INTVAL (rtl);
int litsize; int litsize;
...@@ -11831,7 +11831,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode, ...@@ -11831,7 +11831,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
break; break;
case CONST_DOUBLE: case CONST_DOUBLE:
if (mode != VOIDmode && dwarf_version >= 4) if (mode != VOIDmode)
{ {
/* Note that a CONST_DOUBLE rtx could represent either an integer /* Note that a CONST_DOUBLE rtx could represent either an integer
or a floating-point constant. A CONST_DOUBLE is used whenever or a floating-point constant. A CONST_DOUBLE is used whenever
...@@ -11862,7 +11862,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode, ...@@ -11862,7 +11862,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
break; break;
case CONST_VECTOR: case CONST_VECTOR:
if (mode != VOIDmode && dwarf_version >= 4) if (mode != VOIDmode)
{ {
unsigned int elt_size = GET_MODE_UNIT_SIZE (GET_MODE (rtl)); unsigned int elt_size = GET_MODE_UNIT_SIZE (GET_MODE (rtl));
unsigned int length = CONST_VECTOR_NUNITS (rtl); unsigned int length = CONST_VECTOR_NUNITS (rtl);
...@@ -11950,8 +11950,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode, ...@@ -11950,8 +11950,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
&& SYMBOL_REF_TLS_MODEL (rtl) != TLS_MODEL_NONE) && SYMBOL_REF_TLS_MODEL (rtl) != TLS_MODEL_NONE)
break; break;
case LABEL_REF: case LABEL_REF:
if (mode != VOIDmode && GET_MODE_SIZE (mode) == DWARF2_ADDR_SIZE if (mode != VOIDmode && GET_MODE_SIZE (mode) == DWARF2_ADDR_SIZE)
&& dwarf_version >= 4)
{ {
loc_result = new_loc_descr (DW_OP_implicit_value, loc_result = new_loc_descr (DW_OP_implicit_value,
DWARF2_ADDR_SIZE, 0); DWARF2_ADDR_SIZE, 0);
...@@ -11963,8 +11962,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode, ...@@ -11963,8 +11962,7 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
default: default:
if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE (rtl) == mode if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE (rtl) == mode
&& GET_MODE_SIZE (GET_MODE (rtl)) <= DWARF2_ADDR_SIZE && GET_MODE_SIZE (GET_MODE (rtl)) <= DWARF2_ADDR_SIZE)
&& dwarf_version >= 4)
{ {
/* Value expression. */ /* Value expression. */
loc_result = mem_loc_descriptor (rtl, VOIDmode, initialized); loc_result = mem_loc_descriptor (rtl, VOIDmode, initialized);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment