Fix rare undefined asm temp end label error in x86

Authored by watashi on Oct 19 2018, 1:29 PM.



Encountered assembly error due to undefined label .LcaDcU_info_end for
following code generated by pprFrameProc:

  .long .Lblock{v caDcU}_info_fde_end-.Lblock{v caDcU}_info_fde
.Lblock{v caDcU}_info_fde:
  .long _nbHlD-.Lsection_frame
  .quad block{v caDcU}_info-1
  .quad .Lblock{v caDcU}_info_end-block{v caDcU}_info+1
  .byte 1

This diff fixed the error.

Test Plan

Also the case where we used to have assembly error is now fixed.
Unfortunately, I have limited insight here and cannot get a small enough repro
or test case for this.

Diff Detail

rGHC Glasgow Haskell Compiler
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.
watashi created this revision.Oct 19 2018, 1:29 PM
bgamari accepted this revision.Oct 28 2018, 11:22 AM

I think I see: Previously we only produced end symbols for the info tables of top-level procedures. However, blocks within a procedure may also have info tables, we will dutifully generate debug information for and consequently we get undefined symbols.

This revision is now accepted and ready to land.Oct 28 2018, 11:22 AM
This revision was automatically updated to reflect the committed changes.