* [PATCH] Prune some deadwood in dwarf2read.c:decode_locdesc
@ 2003-11-17 4:19 Daniel Jacobowitz
2003-11-18 21:52 ` Daniel Jacobowitz
0 siblings, 1 reply; 2+ messages in thread
From: Daniel Jacobowitz @ 2003-11-17 4:19 UTC (permalink / raw)
To: gdb-patches
This patch is obvious; barring comments I'll commit it in a day or two.
Neither of these flags is checked any more now that LOC_COMPUTED is used.
The current status quo, by the way, is that there is one caller of
decode_locdesc left which checks these global flags. I believe that that
call (for DW_AT_frame_base) is entirely dead and can be removed, after which
it will be possible to simplify decode_locdesc even further. But it's
slightly less trivially dead, so I'll do that in a separate patch when I'm
more awake.
After that, decode_locdesc will only ever be used in places where we expect
a constant result - a global variable, a structure offset, et cetera.
Everything else has been converted to LOC_COMPUTED and LOC_COMPUTED_ARG.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2003-11-16 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (optimized_out, islocal): Remove.
(decode_locdesc): Update comments. Don't set optimized_out
or islocal.
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.112
diff -u -p -r1.112 dwarf2read.c
--- dwarf2read.c 12 Nov 2003 17:10:55 -0000 1.112
+++ dwarf2read.c 17 Nov 2003 04:13:41 -0000
@@ -443,8 +443,6 @@ static struct pending **list_in_scope =
none of the flags are set, the object lives at the address returned
by decode_locdesc. */
-static int optimized_out; /* No ops in location in expression,
- so object was optimized out. */
static int isreg; /* Object lives in register.
decode_locdesc's return value is
the register number. */
@@ -454,12 +452,6 @@ static int offreg; /* Object's address
static int basereg; /* See `offreg'. */
static int isderef; /* Value described by flags above is
the address of a pointer to the object. */
-static int islocal; /* Variable is at the returned offset
- from the frame start, but there's
- no identified frame pointer for
- this function, so we can't say
- which register it's relative to;
- use LOC_LOCAL. */
/* DW_AT_frame_base values for the current function.
frame_base_reg is -1 if DW_AT_frame_base is missing, otherwise it
@@ -6891,8 +6883,10 @@ dwarf2_fundamental_type (struct objfile
FIXME: Implement more operations as necessary.
A location description containing no operations indicates that the
- object is optimized out. The global optimized_out flag is set for
- those, the return value is meaningless.
+ object is optimized out. The return value is meaningless for that case.
+ FIXME drow/2003-11-16: No callers check for this case any more; soon all
+ callers will only want a very basic result and this can become a
+ complaint.
When the result is a register number, the global isreg flag is set,
otherwise it is cleared.
@@ -6901,9 +6895,7 @@ dwarf2_fundamental_type (struct objfile
and the register number is returned in basereg, otherwise it is cleared.
When the DW_OP_fbreg operation is encountered without a corresponding
- DW_AT_frame_base attribute, the global islocal flag is set.
- Hopefully the machine dependent code knows how to set up a virtual
- frame pointer for the local references.
+ DW_AT_frame_base attribute, we complain.
Note that stack[0] is unused except as a default error return.
Note that stack overflow is not yet handled. */
@@ -6927,12 +6919,9 @@ decode_locdesc (struct dwarf_block *blk,
isreg = 0;
offreg = 0;
isderef = 0;
- islocal = 0;
- optimized_out = 1;
while (i < size)
{
- optimized_out = 0;
op = data[i++];
switch (op)
{
@@ -7073,7 +7062,6 @@ decode_locdesc (struct dwarf_block *blk,
{
complaint (&symfile_complaints,
"DW_AT_frame_base missing for DW_OP_fbreg");
- islocal = 1;
}
break;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Prune some deadwood in dwarf2read.c:decode_locdesc
2003-11-17 4:19 [PATCH] Prune some deadwood in dwarf2read.c:decode_locdesc Daniel Jacobowitz
@ 2003-11-18 21:52 ` Daniel Jacobowitz
0 siblings, 0 replies; 2+ messages in thread
From: Daniel Jacobowitz @ 2003-11-18 21:52 UTC (permalink / raw)
To: gdb-patches
On Sun, Nov 16, 2003 at 11:19:50PM -0500, Daniel Jacobowitz wrote:
> This patch is obvious; barring comments I'll commit it in a day or two.
> Neither of these flags is checked any more now that LOC_COMPUTED is used.
>
> The current status quo, by the way, is that there is one caller of
> decode_locdesc left which checks these global flags. I believe that that
> call (for DW_AT_frame_base) is entirely dead and can be removed, after which
> it will be possible to simplify decode_locdesc even further. But it's
> slightly less trivially dead, so I'll do that in a separate patch when I'm
> more awake.
>
> After that, decode_locdesc will only ever be used in places where we expect
> a constant result - a global variable, a structure offset, et cetera.
> Everything else has been converted to LOC_COMPUTED and LOC_COMPUTED_ARG.
>
> --
> Daniel Jacobowitz
> MontaVista Software Debian GNU/Linux Developer
>
> 2003-11-16 Daniel Jacobowitz <drow@mvista.com>
>
> * dwarf2read.c (optimized_out, islocal): Remove.
> (decode_locdesc): Update comments. Don't set optimized_out
> or islocal.
Checked in.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-11-18 21:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-11-17 4:19 [PATCH] Prune some deadwood in dwarf2read.c:decode_locdesc Daniel Jacobowitz
2003-11-18 21:52 ` Daniel Jacobowitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox