Commit 36811bfd authored by Ben Gamari's avatar Ben Gamari 🐢
Browse files

AsmCodeGen: Ensure LLVM .line directives are sorted

Apparently some Clang 3.6 expects these to be sorted.

Patch due to Peter Wortmann.

Fixes #10687.
parent 59883ae3
......@@ -82,6 +82,7 @@ import qualified Stream
import Data.List
import Data.Maybe
import Data.Ord ( comparing )
import Control.Exception
#if __GLASGOW_HASKELL__ < 709
import Control.Applicative (Applicative(..))
......@@ -428,12 +429,15 @@ cmmNativeGens dflags this_mod modLoc ncgImpl h dbgMap us
cmmNativeGen dflags this_mod modLoc ncgImpl us fileIds dbgMap
cmm count
let newFileIds = fileIds' `minusUFM` fileIds
-- Generate .file directives for every new file that has been
-- used. Note that it is important that we generate these in
-- ascending order, as Clang's 3.6 assembler complains.
let newFileIds = sortBy (comparing snd) $ eltsUFM $ fileIds' `minusUFM` fileIds
pprDecl (f,n) = ptext (sLit "\t.file ") <> ppr n <+>
doubleQuotes (ftext f)
emitNativeCode dflags h $ vcat $
map pprDecl (eltsUFM newFileIds) ++
map pprDecl newFileIds ++
map (pprNatCmmDecl ncgImpl) native
-- force evaluation all this stuff to avoid space leaks
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment