How can I report what I think a compiler's frontend bug

Mike Wey via Digitalmars-d digitalmars-d at puremagic.com
Sun Mar 20 15:59:12 PDT 2016


On 03/20/2016 11:37 PM, Vincent R wrote:
> On Sunday, 20 March 2016 at 19:06:32 UTC, Johan Engelen wrote:
>> On Sunday, 20 March 2016 at 17:57:12 UTC, Vincent R wrote:
>>> On Sunday, 20 March 2016 at 16:16:18 UTC, Marco Leise wrote:
>>>> Am Sun, 20 Mar 2016 11:28:19 +0000
>>>> schrieb Vincent R <lol at dlang.org>:
>>>>
>>>>> Hi,
>>>>>
>>>>> I would like to start a new project (a bonjour/zeroconf wrapper
>>>>> and a gui browser using it).
>>>>> For the gui part I would like to use my existing skills using
>>>>> wxWidgets wrapper (wxD).
>>>>> So I have started to report a problem a few months ago:
>>>>> https://forum.dlang.org/post/rtarlodeojnmedgsnscb@forum.dlang.org
>>>>>
>>>>> But so far(DMD32 D Compiler v2.070.2) it's still not fixed.
>>>>> Do you think it will be fixed one day ?
>>>>>
>>>>> Thanks
>>>>
>>>> Yes, I think it will be fixed one day, since - as you know
>>>> by reading the very thread you linked - it is already reported
>>>> and the GDC developers chimed in and considered it critical.
>>>> There are also 118 open critical/blocker bugs that were
>>>> reported before yours. Most of them by people here on the
>>>> forums and you would need to explain to us why your bug
>>>> deserves higher attention than the others (154 in total).
>>>>
>>>> Dlang is free open-source software and there is only a hand full of
>>>> people who are fixing bugs in the compiler just for the sake of
>>>> improving it. Most people contribute occasionally when they are
>>>> interested in a solution to a particular problem.
>>>>
>>>> If you really need this fixed now ... you know the drill. I suggest
>>>> you analyze the problem and start a discussion about it. Honestly
>>>> asking why the compiler emits duplicate symbols in a reduced test
>>>> case might have yielded you some good responses from the people who
>>>> wrote the code.
>>>
>>> Ok first maybe it's already reported to GDC but to me it's not only a
>>> gdc bug since it also happens with dmd. So I don't know how bugs are
>>> fixed in the differents compilers but I suppose they share the same
>>> frontend (maybe I am mistaken) and in this case I prefer not to wait
>>> for gdc developers to fix it but to see if for instance some dmd
>>> developers have some time to fix it.
>>> I just want to use the language and don't have time to dig inside its
>>> inner workings, so I think D is not for me. This project was the
>>> opportunity to learn the language by fixing an unmaintained library
>>> (wxD) but it's not as easy as I thought.
>>
>> What may speed-up bug fixing a lot is preparing a nice testcase that
>> is *as small as possible*.
>> As you can see in the bug report [1], there is already a testcase. It
>> is a good start, but it is not very minimal: contains a lot of
>> comments etc. That is a lot of distraction / bother (for me at least).
>> One way to help here is to minimize it further, and distill it down to
>> the essential thing that appears to trigger the bug. You can do that
>> without knowing any compiler internals.
>> It can be very time consuming to make such a testcase, which may
>> discourage developers fixing of your bug.
>>
>> [1] https://issues.dlang.org/show_bug.cgi?id=15324
>
> Ok I think I have found the problem, here is the testcase:
>
> alias TreeItemId wxTreeItemId;
>      public class TreeItemId : wxObject
>      {
>          public this(IntPtr wxobj)
>          {
>              super(wxobj);
>          }
>
>          private this(IntPtr wxobj, bool memOwn)
>          {
>              super(wxobj);
>              this.memOwn = memOwn;
>          }
>
>          public this()
>          {
>              this(wxTreeItemId_ctor(), true);
>          }
>
>          public this(void* pItem)
>          {
>              this(wxTreeItemId_ctor2(pItem), true);
>          }
>
>          override protected void dtor() { wxTreeItemId_dtor(wxobj); }
>      }
>
> The problem is I think between public this(void* pItem) and public
> this(IntPtr wxobj)
> because from what I understand they are the same.
> If I comment one of the two constructors it seems to remove the warning
> about duplicated symbols. Now I need to understand what the original
> author wanted to do by declaring these 2 constructors.
>

AFIAK IntPtr used to be a typedef from void*, this probably changed to 
an alias when typedef was deprecated.

-- 
Mike Wey


More information about the Digitalmars-d mailing list