Weird "missing hi file" problem with a serializable Core patch

Sylvain Henry sylvain at haskus.fr
Thu Sep 17 10:53:37 UTC 2020


> By the time we do CorePrep, the hi files should already have been written.

I don't think so. When we generate real code we write the interface after the backend has generated the output object. See Note [Writing interface files] in GHC.Driver.Main

Cheers,
Sylvain

On 17/09/2020 12:17, Cheng Shao wrote:
> Hi Ben,
>
> The -ddump-if-trace output is attached here. The error is produced
> when compiling GHC.Types in ghc-prim.
>
>> Note that interface files are written after the Core pipeline is run.
> Sorry for the confusion, I didn't mean the Core simplifier pipeline. I
> mean the "Core -> Iface -> Core" roundtrip I tried to perform using
> the output of CorePrep. By the time we do CorePrep, the hi files
> should already have been written.
>
> On Wed, Sep 16, 2020 at 11:48 PM Ben Gamari <ben at smart-cactus.org> wrote:
>> Cheng Shao <cheng.shao at tweag.io> writes:
>>
>>> Hi all,
>>>
>>> Following a short chat in #ghc last week, I did a first attempt of
>>> reusing existing Iface logic to implement serialization for
>>> codegen-related Core. The implementation is included in the attached
>>> patch (~100 loc). As a quick and dirty validation of whether it works,
>>> I also modified the codegen pipeline logic to do a roundtrip: after
>>> CorePrep, the Core bits are converted to Iface, then we immediately
>>> convert it back and use it for later compiling.
>>>
>>> With the patch applied, stage-1 GHC would produce a "missing hi file"
>>> error like:
>>>
>>> : Bad interface file: _build/stage1/libraries/ghc-prim/build/GHC/Types.hi
>>>        _build/stage1/libraries/ghc-prim/build/GHC/Types.hi:
>>> openBinaryFile: does not exist (No such file or directory)
>>>
>> Hi Cheng,
>>
>> Which module is being compiled when this error is produced? Could you
>> provide -ddump-if-trace output for the failing compilation?
>>
>>> The error surprises me, since by the time we perform the Core-to-Core
>>> roundtrip, the .hi file should already have been written to disk. Is
>>> there anything obviously wrong with the implementation? I'd appreciate
>>> any pointers or further questions, thanks a lot!
>>>
>> Note that interface files are written after the Core pipeline is run.
>>
>> Cheers,
>>
>> - Ben
>>
>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20200917/505583b1/attachment.html>


More information about the ghc-devs mailing list