[jhc] For "signum (...::Word)", jhc/gcc reports "error: duplicate case value"
Thorkil Naur
naur at post11.tele.dk
Fri Dec 5 13:46:12 UTC 2014
Hello jhc,
Using
$ uname -a
Linux tn24 3.13.0-39-generic #66-Ubuntu SMP Tue Oct 28 13:31:23 UTC 2014 i686 i686 i686 GNU/Linux
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.2
$ jhc --version
jhc 0.8.2 (mydniquipepo-32)
compiled by ghc-7.4 on a i386 running linux
$
and with
$ cat Signum1.hs
import Data.Word
s = "-47"
main = do
print $ "SignumWord " ++ s ++ " = " ++ show (signum (read s::Word))
$
I get the following response from jhc:
$ jhc Signum1.hs -o Signum1
jhc Signum1.hs -o Signum1
jhc 0.8.2 (mydniquipepo-32)
Finding Dependencies...
Using Ho Cache: '/home/tn/.jhc/cache'
Main [Signum1.hs]
Typechecking...
[1 of 1] Main (.............................................)
Compiling...
[1 of 1] Main <..................................................>
Collected Compilation...
-- TypeAnalyzeMethods
-- BoxifyProgram
-- Boxy WorkWrap
-- LambdaLift
Converting to Grin...
Updatable CAFS: 3
Constant CAFS: 6
Recursive CAFS: 0
WARNING: Wrapper still exists at grin transformation time: theMain$10::Jhc.Prim.Prim.(,) Jhc.Type.Word.Word::* Jhc.Prim.Prim.[] Jhc.Type.Basic.Char::*::*::* -> Jhc.Prim.Prim.[] Jhc.Type.Word.Word::*::*
WARNING: Wrapper still exists at grin transformation time: Jhc.Text.Read.119_isCharName::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Jhc.Text.Read.lexLitChar$10::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Jhc.Text.Read.lexLitChar$7::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Jhc.Text.Read.lexLitChar$4::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Jhc.Text.Read.78_isIdChar::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Jhc.Text.Read.77_isSym::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Prelude.CType.isOctDigit::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Prelude.CType.isDigit::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
WARNING: Wrapper still exists at grin transformation time: Prelude.CType.isHexDigit::Jhc.Type.Basic.Char::* -> Jhc.Prim.Prim.Bool::*
-- Speculative Execution Optimization
-- Node Usage Analysis
-- Grin Devolution
Writing "/tmp/jhc_nEVZY9/main_code.c"
Running: gcc /tmp/jhc_nEVZY9/rts/profile.c /tmp/jhc_nEVZY9/rts/rts_support.c /tmp/jhc_nEVZY9/rts/gc_none.c /tmp/jhc_nEVZY9/rts/jhc_rts.c /tmp/jhc_nEVZY9/lib/lib_cbits.c /tmp/jhc_nEVZY9/rts/gc_jgc.c /tmp/jhc_nEVZY9/rts/stableptr.c -I/tmp/jhc_nEVZY9/cbits -I/tmp/jhc_nEVZY9 /tmp/jhc_nEVZY9/main_code.c -o Signum1 '-std=gnu99' -D_GNU_SOURCE '-falign-functions=4' -ffast-math -Wextra -Wall -Wno-unused-parameter -fno-strict-aliasing -DNDEBUG -O3 '-D_JHC_GC=_JHC_GC_JGC'
In file included from /tmp/jhc_nEVZY9/jhc_rts_header.h:72:0,
from /tmp/jhc_nEVZY9/main_code.c:5:
/tmp/jhc_nEVZY9/main_code.c: In function ‘ftheMain’:
/tmp/jhc_nEVZY9/rts/jhc_rts.h:54:24: warning: statement with no effect [-Wunused-value]
#define RAW_SET_16(w) (wptr_t)(((uintptr_t)(w) << 16) | P_VALUE)
^
/tmp/jhc_nEVZY9/rts/jhc_rts.h:64:27: note: in expansion of macro ‘RAW_SET_16’
#define SET_RAW_TAG(x) RAW_SET_16(x)
^
/tmp/jhc_nEVZY9/main_code.c:5882:17: note: in expansion of macro ‘SET_RAW_TAG’
SET_RAW_TAG(CJhc_Prim_Prim_$LR);
^
/tmp/jhc_nEVZY9/main_code.c: In function ‘ftheMain$d11’:
/tmp/jhc_nEVZY9/main_code.c:5946:21: error: duplicate case value
case 0:
^
/tmp/jhc_nEVZY9/main_code.c:5942:21: error: previously used here
case 0:
^
Exiting abnormally. Work directory is '/tmp/jhc_nEVZY9'
jhc: user error (C code did not compile.)
$
In /tmp/jhc_nEVZY9/main_code.c, I find:
ftheMain$d11(gc_t gc)
{
wptr_t v100008;
wptr_t v100012;
wptr_t v100016;
v100008 = fJhc_Text_Read_nonnull(gc,SET_RAW_TAG(P1__Prelude_CType_isDigit),c186);
sptr_t v94776804 = demote(v100008);
v100012 = ftheMain$d7(gc,v94776804);
v100016 = fJhc_Basics_concatMap(gc,SET_RAW_TAG(P1__theMain$d10),v100012);
if (SET_RAW_TAG(CJhc_Prim_Prim_$BE) == v100016) {
jhc_error("Prelude.error: Prelude.read: no parse");
return NULL;
} else {
sptr_t v1868;
sptr_t v1870;
/* ("CJhc.Prim.Prim.:" ni1868 ni1870) */
v1868 = ((struct sCJhc_Prim_Prim_$x3a*)v100016)->a1;
v1870 = ((struct sCJhc_Prim_Prim_$x3a*)v100016)->a2;
{ gc_frame0(gc,1,v1868);
wptr_t v100018 = eval(gc,v1870);
if (SET_RAW_TAG(CJhc_Prim_Prim_$BE) == v100018) {
uint32_t v84995212;
wptr_t v100020 = eval(gc,v1868);
v84995212 = ((struct sCJhc_Type_Word_Word*)v100020)->a1;
switch (v84995212) {
case 0:
{ return PROMOTE(c187);
}
break;
case 0:
{ return PROMOTE(c188);
}
break;
default:
{ return PROMOTE(c189);
}
break;
}
} else {
/* ("CJhc.Prim.Prim.:" ni0 ni0) */
jhc_error("Prelude.error: Prelude.read: ambiguous parse");
return NULL;
}
}
}
}
I have checked the jhc mailing list back to January 2013, but could not
find anything that seemed to address this, so any advice on how to
proceed would be most appreciated.
Additional information: I have built jhc from
http://repetae.net/dist/jhc-0.8.2.tar.gz
The build (make jhc) failed initially with
...
[ 71 of 186] Compiling Util.Gen ( src/Util/Gen.hs, src/Util/Gen.o )
src/Util/Gen.hs:11:35:
Module `GenUtil' does not export `intercalate'
make[1]: *** [jhc] Error 1
make[1]: Leaving directory `/home/tn/tn/jhc/jhc-0.8.2'
make: *** [all] Error 2
Removing ", intercalate" from the line
import GenUtil hiding(replicateM, intercalate)
in jhc-0.8.2/src/Util/Gen.hs seemed to fix that problem, however.
I also attempted to build jhc from the darcs repository as it appeared
2014-Dec-04, but got:
...
[121 of 198] Compiling Deriving.Ord ( src/Deriving/Ord.hs, obj/norm/Deriving/Ord.o )
[122 of 198] Compiling Deriving.Traverse ( src/Deriving/Traverse.hs, obj/norm/Deriving/Traverse.o )
src/Deriving/Traverse.hs:29:56: parse error on input `->'
make: *** [jhc] Error 1
src/Deriving/Traverse.hs contains:
29: deriveFunctor der at Derive {..} mod d at D { vars = reverse -> ~(fv:_), .. } = do
Thanks a lot in advance for any help and advice.
Best regards
Thorkil
More information about the jhc
mailing list