Handle more _DIV_EXPR and MOD_EXPR codes in dwarf2out.c
Richard Kenner
kenner@vlsi1.ultra.nyu.edu
Fri Apr 18 22:07:00 GMT 2003
This fixes a bug where these codes will cause an ICE. It may well be the
case at this point that there is some situation where a position is
"off-by-one", but there have been no cases so far.
A test case is to compile the following with -g on a system using Dwarf2.
procedure bla is
function a_int return integer is
begin
return 1;
end a_int;
function a_string return string is
begin
return (1 .. 1 mod a_int => 'a');
end a_string;
begin
null;
end bla;
2002-07-25 Vincent Celier <celier@gnat.com>
* dwarf2out.c (loc_descriptor_from_tree): Treat all *_MOD_EXPR
and *_DIV_EXPR as TRUNC_*_EXPR.
*** gcc/dwarf2out.c 14 Apr 2003 21:12:45 -0000 1.419
--- gcc/dwarf2out.c 15 Apr 2003 18:00:07 -0000
*************** loc_descriptor_from_tree (loc, addressp)
*** 8816,8819 ****
--- 8816,8822 ----
goto do_binop;
+ case FLOOR_DIV_EXPR:
+ case CEIL_DIV_EXPR:
+ case ROUND_DIV_EXPR:
case TRUNC_DIV_EXPR:
op = DW_OP_div;
*************** loc_descriptor_from_tree (loc, addressp)
*** 8824,8827 ****
--- 8827,8833 ----
goto do_binop;
+ case FLOOR_MOD_EXPR:
+ case CEIL_MOD_EXPR:
+ case ROUND_MOD_EXPR:
case TRUNC_MOD_EXPR:
op = DW_OP_mod;
More information about the Gcc-patches
mailing list