| 1 | From |
| 2 | https://github.com/erikd/ghc-llvm-next/blob/llvm-3.8/patches/01-bitcast.patch |
| 3 | |
| 4 | diff -u -r ../ghc-8.0.1/compiler/llvmGen/Llvm/PpLlvm.hs ./compiler/llvmGen/Llvm/PpLlvm.hs |
| 5 | --- ../ghc-8.0.1/compiler/llvmGen/Llvm/PpLlvm.hs 2016-05-16 13:08:53.000000000 -0400 |
| 6 | +++ ./compiler/llvmGen/Llvm/PpLlvm.hs 2016-06-23 16:59:36.113778783 -0400 |
| 7 | @@ -73,7 +73,7 @@ |
| 8 | Nothing -> empty |
| 9 | |
| 10 | rhs = case dat of |
| 11 | - Just stat -> ppr stat |
| 12 | + Just stat -> pprSpecialStatic stat |
| 13 | Nothing -> ppr (pLower $ getVarType var) |
| 14 | |
| 15 | -- Position of linkage is different for aliases. |
| 16 | diff -u -r ../ghc-8.0.1/compiler/llvmGen/Llvm/Types.hs ./compiler/llvmGen/Llvm/Types.hs |
| 17 | --- ../ghc-8.0.1/compiler/llvmGen/Llvm/Types.hs 2016-05-16 13:08:53.000000000 -0400 |
| 18 | +++ ./compiler/llvmGen/Llvm/Types.hs 2016-06-23 17:00:14.569166114 -0400 |
| 19 | @@ -175,6 +175,11 @@ |
| 20 | ppr (LMSub s1 s2) |
| 21 | = pprStaticArith s1 s2 (sLit "sub") (sLit "fsub") "LMSub" |
| 22 | |
| 23 | +pprSpecialStatic :: LlvmStatic -> SDoc |
| 24 | +pprSpecialStatic (LMBitc v t) = |
| 25 | + ppr (pLower t) <> text ", bitcast (" <> ppr v <> text " to " <> ppr t <> char ')' |
| 26 | +pprSpecialStatic stat = ppr stat |
| 27 | + |
| 28 | pprStaticArith :: LlvmStatic -> LlvmStatic -> LitString -> LitString -> String -> SDoc |
| 29 | pprStaticArith s1 s2 int_op float_op op_name = |
| 30 | let ty1 = getStatType s1 |