Jump to page: 1 2
Thread overview
[Issue 17352] [REG 2.075a] Internal error: ddmd/backend/elfobj.c 1739 on duplicate definition
[Issue 17352] Internal error: ddmd/backend/elfobj.c 1739 on duplicate definition
Apr 26, 2017
Ketmar Dark
Apr 26, 2017
Ketmar Dark
Apr 26, 2017
b2.temp@gmx.com
Apr 28, 2017
Martin Nowak
Apr 28, 2017
Ketmar Dark
May 31, 2017
Martin Nowak
Jun 29, 2017
Martin Nowak
Mar 21, 2020
Basile-z
April 26, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

Ketmar Dark <ketmar@ketmar.no-ip.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ketmar@ketmar.no-ip.org

--
April 26, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

--- Comment #1 from Ketmar Dark <ketmar@ketmar.no-ip.org> ---
some details regarding the bug:

previously, dmd happily creates .o file, and then linker complains about duplicate definition. and now, i have no way to know *what* symbol was defined multiple times.

so this is not about "compiler doesn't check for two `foo()`s", it's about compiler ICEing now, and i have no way to know which symbol i redefined.

--
April 26, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

b2.temp@gmx.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |b2.temp@gmx.com
            Summary|Internal error:             |[REG 2.075a] Internal
                   |ddmd/backend/elfobj.c 1739  |error:
                   |on duplicate definition     |ddmd/backend/elfobj.c 1739
                   |                            |on duplicate definition

--- Comment #2 from b2.temp@gmx.com ---
x86-64 seems to be affected too but in a different way. The example provided previously compiles and links, instead of complaining about double definition.

--
April 28, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@dawg.eu

--- Comment #3 from Martin Nowak <code@dawg.eu> ---
That goes on me I think, you've just found another way to emit 2 different functions with identical mangling.

https://github.com/dlang/dmd/pull/6719, fix for Issue 17339

This should be an error in the frontend already, b/c the 2 foos aren't overrideable.

--
April 28, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

--- Comment #4 from Ketmar Dark <ketmar@ketmar.no-ip.org> ---
yeah. but the frontend will check for conflicting overloads only when `foo()`
will be called. i guess this was done to gain some compilation speed by not
checking each symbol against other symbols (O(n^2), i think).

but this can be done differently, by using a hash table of all emited mangled names. this should be amortized O(n), and virtually painless.

i mean, yes, the frontend should check for conflicting overloads even if they weren't called anywhere.

--
May 31, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

--- Comment #5 from Martin Nowak <code@dawg.eu> ---
(In reply to Ketmar Dark from comment #4)
> i mean, yes, the frontend should check for conflicting overloads even if they weren't called anywhere.

Could be easily checked in overloadInsert et.al.

--
June 29, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

--- Comment #6 from Martin Nowak <code@dawg.eu> ---
cat > bug.d << CODE
void bug(Args...)()
{
}

void test(bool coin)
{
    if (coin)
    {
        string foobar;
        bug!foobar();
    }
    else
    {
        string foobar;
        bug!foobar();
    }
}
CODE
----
dmd -c bug.d
----
Internal error: ddmd/backend/elfobj.c 1739
----

This is a real instance of this bug caused by ambiguous mangling of local variables (see issue 14831).

Interestingly enough `void bug(alias var)()` only outputs a single template
instance :o.

--
July 01, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

--- Comment #7 from github-bugzilla@puremagic.com ---
Commits pushed to stable at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/76affab78fec0c9acb0253d9672c5c0bdf843dd4 fix Issue 17352 - Internal error: ddmd/backend/elfobj.c 1739 on duplicate definition

https://github.com/dlang/dmd/commit/3440f186b246f76c1dba53c0d67e01e00dea633c Merge pull request #6955 from MartinNowak/fix17352

fix Issue 17352 - Internal error: ddmd/backend/elfobj.c 1739 on duplicate definition

--
July 01, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--
July 05, 2017
https://issues.dlang.org/show_bug.cgi?id=17352

--- Comment #8 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/76affab78fec0c9acb0253d9672c5c0bdf843dd4 fix Issue 17352 - Internal error: ddmd/backend/elfobj.c 1739 on duplicate definition

https://github.com/dlang/dmd/commit/3440f186b246f76c1dba53c0d67e01e00dea633c Merge pull request #6955 from MartinNowak/fix17352

--
« First   ‹ Prev
1 2