tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Removing ARCNET stuffs



On 1 June 2015 at 15:13, Iain Hibbert <plunky%ogmig.net@localhost> wrote:
> On Mon, 1 Jun 2015, Andrew Cagney wrote:
>
>> PCC, as a "classic" C compiler, only generates debug information at
>> -O0.  This this is because the stabs code is restricted to the
>> un-optimized code generator path.
>
> this is not actually the case btw, and I don't recall it being like that
> in the last few years either..

Like I mentioned in another reply, I'm being a little fast and loose.

The file "cc/ccom/scan.l" from
http://pcc.ludd.ltu.se/fisheye/browse/pcc/pcc/cc/ccom/scan.l?r=1.127
which I'm assuming is the C parser is doing this:

#define STABS_LINE(x) if (gflag && cftnsp) stabs_line(x)
...
"\n"                    { ++lineno; STABS_LINE(lineno); }

which, I believe, is executing this:

        cprint(1, "\t.stabn %d,0,%d," STABLBL "\n" STABLBL ":\n",
            N_SLINE, line, stablbl, stablbl);

and this will will insert the stab into the assembler stream
(send_passt).  However, and here's the key thing, as best I can tell,
the stab isn't tied to an instruction, just a position in the
instruction stream.

If an optimizer so much as sneezes, re-ordering instructions for
instance, the information is wrong.

When the back-end goes to generate assembler, all it has, is a string.

In the case of variables.  They are generated at the start of a block,
so have no connection at all to the code.

perhaps I'm wrong?
Andrew

> regards,
> iain


Home | Main Index | Thread Index | Old Index