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

Reply via email to