[GHC] #15104: Update JMP_TBL targets during shortcutting for x86 codegen.
GHC
ghc-devs at haskell.org
Mon Apr 30 13:17:47 UTC 2018
#15104: Update JMP_TBL targets during shortcutting for x86 codegen.
-------------------------------------+-------------------------------------
Reporter: AndreasK | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.5
(NCG) |
Keywords: CodeGen | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): Phab:D4595 | Wiki Page:
-------------------------------------+-------------------------------------
Jump tables are generated from Cmm Code in a few steps:
1. We start with a CmmSwitch at the end of the Cmm pipeline which gets
turned into a JMP_TBL instruction.
2. During native codegen we generate static jump tables from JMP_TBL.
(generateJumpTables)
3. We shortcut jump targets, for jump tables by updating the static
tables. (shortcutBranches). This might update the jump targets with
calculated address not represented by a label.
After the third step the targets in the JMP_TBL instruction (which are the
original labels) and in the static data can be out of sync.
Phab:D4566 went part of the way, updating labels in JMP_TBL. However
without tables next to code labels can be updated to non-label jump
destinations which I did not consider at the time.
Phab:D4595 is intended to fix this.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15104>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list