#2722: <<loop> when compiling with -O option with ghc-6.10.0.20081019
----------------------------------+-----------------------------------------
Reporter: uwe | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 6.10.1 | Severity: normal
Keywords: Optimization Loop | Testcase:
Architecture: x86 | Os: Linux
----------------------------------+-----------------------------------------
When trying to compile HXT with ghc-6.10 rc1 all examples,
even the simplest ones give the following result. Here is an example:
{{{
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> ./HXmlParser
example1.xml
HXmlParser: <<loop>>
}}}
this only occurs, when compiling with -O (or -O2). When
compiling whithout any optimizaions, the programs run as
expected
Here is a more complete log of one example
The running example without -O
{{{
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.10.0.20081019
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> ghc-pkg list
/home/theo/lib/ghc-6.10.0.20081019/./package.conf:
Cabal-1.6.0.1, HUnit-1.2.0.2, QuickCheck-1.2.0.0, array-0.2.0.0,
base-3.0.3.0, base-4.0.0.0, bytestring-0.9.1.4, containers-0.2.0.0,
curl-1.3.2.1, directory-1.0.0.2, (dph-base-0.3), (dph-par-0.3),
(dph-prim-interface-0.3), (dph-prim-par-0.3), (dph-prim-seq-0.3),
(dph-seq-0.3), filepath-1.1.0.1, (ghc-6.10.0.20081019),
ghc-prim-0.1.0.0, haddock-2.2.2, haskell-src-1.0.1.3,
haskell98-1.0.1.0, hpc-0.5.0.2, html-1.0.1.2, hxt-8.2.0,
integer-0.1.0.0, mtl-1.1.0.2, network-2.2.0.0, old-locale-1.0.0.1,
old-time-1.0.0.1, packedstring-0.1.0.1, parallel-1.0.0.1,
parsec-2.1.0.1, pretty-1.0.1.0, process-1.0.1.0, random-1.0.0.1,
regex-base-0.72.0.2, regex-compat-0.71.0.1, regex-posix-0.72.0.3,
rts-1.0, stm-2.1.1.1, syb-0.1.0.0, tagsoup-0.6,
template-haskell-2.3.0.0, time-1.1.2.2, unix-2.3.1.0,
xhtml-3000.2.0.1
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> find
../../../src
-name '*.hi' | xargs rm -f
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> make local
GHCFLAGS=-Wall
ghc --make -o ./HXmlParser -Wall -fglasgow-exts -ignore-package hxt
-i../../../src ./HXmlParser.hs
[ 1 of 112] Compiling Text.XML.HXT.XPath.XPathKeywords (
../../../src/Text/XML/HXT/XPath/XPathKeywords.hs,
../../../src/Text/XML/HXT/XPath/XPathKeywords.o )
[ 2 of 112] Compiling Text.XML.HXT.IO.GetFILE (
../../../src/Text/XML/HXT/IO/GetFILE.hs,
../../../src/Text/XML/HXT/IO/GetFILE.o )
[ 3 of 112] Compiling Text.XML.HXT.DTDValidation.RE (
../../../src/Text/XML/HXT/DTDValidation/RE.hs,
../../../src/Text/XML/HXT/DTDValidation/RE.o )
...
[111 of 112] Compiling Text.XML.HXT.Arrow (
../../../src/Text/XML/HXT/Arrow.hs, ../../../src/Text/XML/HXT/Arrow.o )
[112 of 112] Compiling Main ( HXmlParser.hs, HXmlParser.o )
Linking ./HXmlParser ...
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> ./HXmlParser
example1.xml
<?xml version="1.0" encoding="UTF-8"?>
<?pi value="a processing instruction"?><a att1="test äöüß test"
att2="root">
<b btt2="b1" btt3="root"/>
<cü>hello world äöüß test</cü>
</a>
}}}
The same with -O
{{{
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser>
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> find
../../../src
-name '*.hi' | xargs rm -f
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> make clean
rm -f ./HXmlParser *.o *.hi
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> make local
GHCFLAGS="-Wall -O"
ghc --make -o ./HXmlParser -Wall -O -fglasgow-exts -ignore-package hxt
-i../../../src ./HXmlParser.hs
[ 1 of 112] Compiling Text.XML.HXT.XPath.XPathKeywords (
../../../src/Text/XML/HXT/XPath/XPathKeywords.hs,
../../../src/Text/XML/HXT/XPath/XPathKeywords.o )
[ 2 of 112] Compiling Text.XML.HXT.IO.GetFILE (
../../../src/Text/XML/HXT/IO/GetFILE.hs,
../../../src/Text/XML/HXT/IO/GetFILE.o )
[ 3 of 112] Compiling Text.XML.HXT.DTDValidation.RE (
../../../src/Text/XML/HXT/DTDValidation/RE.hs,
../../../src/Text/XML/HXT/DTDValidation/RE.o )
[ 4 of 112] Compiling Text.XML.HXT.RelaxNG.Unicode.Blocks (
../../../src/Text/XML/HXT/RelaxNG/Unicode/Blocks.hs,
../../../src/Text/XML/HXT/RelaxNG/Unicode/Blocks.o )
...
[111 of 112] Compiling Text.XML.HXT.Arrow (
../../../src/Text/XML/HXT/Arrow.hs, ../../../src/Text/XML/HXT/Arrow.o )
[112 of 112] Compiling Main ( HXmlParser.hs, HXmlParser.o )
Linking ./HXmlParser ...
[EMAIL PROTECTED]:~/haskell/hxt-ghc10/examples/arrows/hparser> ./HXmlParser
example1.xml
HXmlParser: <<loop>>
}}}
The only difference is the -O.
My guess is, that there could be problems with
the overloaded version of id and . (function comp.).
This is used in HXT because of various arrow types.
In the example going wrong, there is a list arrow
involved, that manages a state and runs in the IO monad.
It's rather hard to strip down this test case
to a smaller example, because I've no idea where to search
for this loop.
If neccessary I can prepare a tar archive with all sources
needed to reproduce this error.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2722>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs