diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-04-20 11:05:06 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-04-22 23:14:57 -0400 |
commit | 4b4a8b60a5b403e02117ab0a30a386664845586b (patch) | |
tree | 9812fef655d88bf53723899b462f4f6abfbb9833 /docs | |
parent | c29f0fa6ee831ec8a223561312d7176ef87a7ece (diff) | |
download | haskell-4b4a8b60a5b403e02117ab0a30a386664845586b.tar.gz |
llvmGen: Remove -fast-llvm flag
Issue #18076 drew my attention to the undocumented `-fast-llvm` flag for
the LLVM code generator introduced in
22733532171330136d87533d523f565f2a4f102f. Speaking to Moritz about this,
the motivation for this flag was to avoid potential incompatibilities
between LLVM and the assembler/linker toolchain by making LLVM
responsible for machine-code generation.
Unfortunately, this cannot possibly work: the LLVM backend's mangler
performs a number of transforms on the assembler generated by LLVM that
are necessary for correctness. These are currently:
* mangling Haskell functions' symbol types to be `object` instead of
`function` on ELF platforms (necessary for tables-next-to-code)
* mangling AVX instructions to ensure that we don't assume alignment
(which LLVM otherwise does)
* mangling Darwin's subsections-via-symbols directives
Given that these are all necessary I don't believe that we can support
`-fast-llvm`. Let's rather remove it.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/users_guide/expected-undocumented-flags.txt | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/docs/users_guide/expected-undocumented-flags.txt b/docs/users_guide/expected-undocumented-flags.txt index ea8543b58c..5e2101b03d 100644 --- a/docs/users_guide/expected-undocumented-flags.txt +++ b/docs/users_guide/expected-undocumented-flags.txt @@ -78,7 +78,6 @@ -fallow-overlapping-instances -fallow-undecidable-instances -farrows --fast-llvm -fbang-patterns -fbuilding-cabal-package -fconstraint-solver-iterations |