Fix rare undefined asm temp end label error in x86
ClosedPublic

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

Details

Summary

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

.Lsat_sa8fp{v}_info_fde_end:
  .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
./validate

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.

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.