summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoritz Angermann <moritz.angermann@gmail.com>2020-08-20 02:11:26 +0000
committerMoritz Angermann <moritz.angermann@gmail.com>2020-09-09 09:58:44 +0800
commite876348b39006bd225d9b33b1e39db9891121f27 (patch)
treed20faf3c14d631bae37aa5c4f72d961246794f02
parent0eb1046802ad8c10d164c12851de47a174997436 (diff)
downloadhaskell-e876348b39006bd225d9b33b1e39db9891121f27.tar.gz
Disable trivial deadlock detection
-rw-r--r--compiler/GHC/CmmToAsm/AArch64/Ppr.hs19
1 files changed, 10 insertions, 9 deletions
diff --git a/compiler/GHC/CmmToAsm/AArch64/Ppr.hs b/compiler/GHC/CmmToAsm/AArch64/Ppr.hs
index 85a0272ff0..d773311011 100644
--- a/compiler/GHC/CmmToAsm/AArch64/Ppr.hs
+++ b/compiler/GHC/CmmToAsm/AArch64/Ppr.hs
@@ -120,7 +120,7 @@ pprBasicBlock :: NCGConfig -> LabelMap RawCmmStatics -> NatBasicBlock Instr
pprBasicBlock config info_env (BasicBlock blockid instrs)
= maybe_infotable $
pprLabel platform asmLbl $$
- vcat (map (pprInstr platform) (detectTrivialDeadlock optInstrs)) $$
+ vcat (map (pprInstr platform) (id {-detectTrivialDeadlock-} optInstrs)) $$
(if ncgDebugLevel config > 0
then ppr (mkAsmTempEndLabel asmLbl) <> char ':'
else empty
@@ -483,22 +483,23 @@ pprInstr platform instr = case instr of
text "\tstrh" <+> pprOp o1 <> comma <+> pprOp o2
STR f o1 o2 -> text "\tstr" <+> pprOp o1 <> comma <+> pprOp o2
+ LDR f o1 (OpImm (ImmIndex lbl' off)) | Just (_info, lbl) <- dynamicLinkerLabelInfo lbl' ->
+ text "\tadrp" <+> pprOp o1 <> comma <+> text ":got:" <> ppr lbl $$
+ text "\tldr" <+> pprOp o1 <> comma <+> text "[" <> pprOp o1 <> comma <+> text ":got_lo12:" <> ppr lbl <> text "]" $$
+ text "\tadd" <+> pprOp o1 <> comma <+> pprOp o1 <> comma <+> char '#' <> int off -- XXX: check that off is in 12bits.
+
LDR f o1 (OpImm (ImmIndex lbl off)) ->
text "\tadrp" <+> pprOp o1 <> comma <+> ppr lbl $$
text "\tadd" <+> pprOp o1 <> comma <+> pprOp o1 <> comma <+> text ":lo12:" <> ppr lbl $$
text "\tadd" <+> pprOp o1 <> comma <+> pprOp o1 <> comma <+> char '#' <> int off -- XXX: check that off is in 12bits.
- -- always GOT loads
- -- LDR f o1 (OpImm (ImmIndex lbl off)) ->
- -- text "\tadrp" <+> pprOp o1 <> comma <+> text ":got:" <> ppr lbl $$
- -- text "\tldr" <+> pprOp o1 <> comma <+> text "[" <> pprOp o1 <> comma <+> text":got_lo12:" <> ppr lbl <> text "]" $$
- -- text "\tadd" <+> pprOp o1 <> comma <+> pprOp o1 <> comma <+> char '#' <> int off -- XXX: check that off is in 12bits.
+
+ LDR f o1 (OpImm (ImmCLbl lbl')) | Just (_info, lbl) <- dynamicLinkerLabelInfo lbl' ->
+ text "\tadrp" <+> pprOp o1 <> comma <+> text ":got:" <> ppr lbl $$
+ text "\tldr" <+> pprOp o1 <> comma <+> text "[" <> pprOp o1 <> comma <+> text ":got_lo12:" <> ppr lbl <> text "]"
LDR f o1 (OpImm (ImmCLbl lbl)) ->
text "\tadrp" <+> pprOp o1 <> comma <+> ppr lbl $$
text "\tadd" <+> pprOp o1 <> comma <+> pprOp o1 <> comma <+> text ":lo12:" <> ppr lbl
- -- LDR f o1 (OpImm (ImmCLbl lbl)) ->
- -- text "\tadrp" <+> pprOp o1 <> comma <+> text ":got:" <> ppr lbl $$
- -- text "\tldr" <+> pprOp o1 <> comma <+> text "[" <> pprOp o1 <> comma <+> text":got_lo12:" <> ppr lbl <> text "]"
LDR f o1@(OpReg W8 (RegReal (RealRegSingle i))) o2 | i < 32 ->
text "\tldrsb" <+> pprOp o1 <> comma <+> pprOp o2