on master help sign in
Merge pull request #2155 from identicalsnowflake/optimization

fix divNat segfaulting

commit4f4c99365511d7fe7921a1458d0dfe5200e4d23f authorNiklas Larsson <metaniklas@gmail.com> dateSat 18 Apr 2015, 11:14 (12 years ago) parent1f459e0387046a
5 files changed+19
idris.cabal+3 src/Idris/DataOpts.hs+6 test/bignum002/bignum002.idr+5 test/bignum002/expected+1 test/bignum002/run+4
idris.cabal+3
@@ -349,6 +349,9 @@ Extra-source-files:
349349 test/bignum001/run
350350 test/bignum001/*.idr
351351 test/bignum001/expected
352+ test/bignum002/run
353+ test/bignum002/*.idr
354+ test/bignum002/expected
352355
353356 test/delab001/*.idr
354357 test/delab001/run
src/Idris/DataOpts.hs+6
@@ -63,6 +63,12 @@ instance Optimisable (TT Name) where
6363 applyOpts (P _ (NS (UN fn) mod) _)
6464 | fn == txt "mult" && mod == prel
6565 = return (P Ref (sUN "prim__mulBigInt") Erased)
66+ applyOpts (P _ (NS (UN fn) mod) _)
67+ | fn == txt "divNat" && mod == prel
68+ = return (P Ref (sUN "prim__sdivBigInt") Erased)
69+ applyOpts (P _ (NS (UN fn) mod) _)
70+ | fn == txt "modNat" && mod == prel
71+ = return (P Ref (sUN "prim__sremBigInt") Erased)
6672 applyOpts (App _ (P _ (NS (UN fn) mod) _) x)
6773 | fn == txt "fromIntegerNat" && mod == prel
6874 = applyOpts x
test/bignum002/bignum002.idrnew file+5
@@ -0,0 +1,5 @@
1+module Main
2+
3+main : IO ()
4+main = do
5+ putStrLn $ show $ divNat 1809022195644390369852458 91238741987
test/bignum002/expectednew file+1
@@ -0,0 +1 @@
1+19827346982734
test/bignum002/runnew file+4
@@ -0,0 +1,4 @@
1+#!/usr/bin/env bash
2+idris $@ bignum002.idr -o bignum002
3+./bignum002
4+rm -f bignum002 *.ibc