What is the precise definition of NOTE_INSN_FUNCTION_BEG?
Jeff Law
law@redhat.com
Tue Apr 30 17:01:00 GMT 2019
On 4/30/19 10:48 AM, Matthew Malcomson wrote:
> Hi Jeff,
>
> On 30/04/19 16:29, Jeff Law wrote:
>> On 1/4/19 9:03 AM, Matthew Malcomson wrote:
>>> Hi there,
>>>
>>> I'm trying to figure out precisely what NOTE_INSN_FUNCTION_BEG means and
>>> hoping someone here knows.
>> It doesn't mean very much anymore. I believe it was used to
>> distinguish between stuff like copying incoming arguments into pseudos
>> and real user code.
>>
>> However, in a world with instruction scheduling and other code motion it
>> just doesn't have much use because it's so imprecise, particularly as we
>> get deeper into the RTL pipeline.
>>
>
> Ah, I guess an imprecise marker probably needs an imprecise definition ;-)
>
>>>
>> Well, the question I'd ask is precisely what are you trying to mark?
>
>
> I'm wanting to mark the first instruction from "user code".
> I'm trying to fix PR88432, where gdb puts the breakpoint from the
> "start" command in the wrong place.
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88432
>
> Gdb breaks on the second debug line entry in a function, which in
> practice is the instruction directly after NOTE_INSN_FUNCTION_BEG.
>
>
> The "fuzzy" definition from gccint.info didn't seem to explain what was
> to happen with compiler inserted code that was not part of the prologue,
> and this was what I was hoping to nail down.
>
> When looking, it seemed the note was being used in three slightly
> different ways (I went into more information in the cover letter of my
> [RFC] patch https://gcc.gnu.org/ml/gcc-patches/2019-01/msg00543.html ),
> and I was hoping to get a precise definition so I could decide what
> approach to take.
ISTM that we should place the stack protector bits before the
NOTE_INSN_FUNCTION_BEG. At least in the non-optimizing compile case
that should make the right thing happen.
Jeff
More information about the Gcc
mailing list