Jump to page: 1 2
Thread overview
[Issue 14133] [REG 2.067] struct ctor init compiles very slow and produces excessive amounts of code
Mar 20, 2015
Martin Nowak
Mar 20, 2015
Martin Nowak
Mar 20, 2015
Martin Nowak
Mar 20, 2015
Martin Nowak
Mar 20, 2015
Martin Nowak
[Issue 14133] change in struct ctor lowering generates excessive init code
Mar 22, 2015
Kenji Hara
Aug 19, 2023
Basile-z
March 20, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P3
                 CC|                            |code@dawg.eu
            Summary|change in struct ctor       |[REG 2.067] struct ctor
                   |lowering generates          |init compiles very slow and
                   |excessive init code         |produces excessive amounts
                   |                            |of code
           Severity|normal                      |regression

--- Comment #1 from Martin Nowak <code@dawg.eu> ---
cat > bug.d << CODE
struct Bug
{
    size_t[16 * 1024] data;
}

void test()
{
    auto b = Bug();
}
CODE

----
dmd -c bug
----

It looks like related to issue 11233, but is most likely due to the change struct literal code, that not performs field assignment instead of copying the init array.

--
March 20, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

--- Comment #2 from Martin Nowak <code@dawg.eu> ---
mov    %eax,-0x20000(%rbp)
mov    %eax,-0x1fffc(%rbp)
mov    %eax,-0x1fff8(%rbp)
...
mov    %ecx,-0x1f804(%rbp)
xor    %edx,%edx           // Why edx all of a sudden?
mov    %edx,-0x1f800(%rbp)
...
mov    %edx,-0xc(%rbp)
mov    %edx,-0x8(%rbp)
mov    %edx,-0x4(%rbp)

In total 32768 4-byte assignments to initialize the struct.

--
March 20, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |etcimon@gmail.com

--- Comment #3 from Martin Nowak <code@dawg.eu> ---
Reported by Etienne Cimon. https://github.com/rejectedsoftware/vibe.d/issues/1016#issuecomment-83735025

--
March 20, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

--- Comment #4 from Martin Nowak <code@dawg.eu> ---
There is a 2nd variation of this bug. Even when assigning an better sinit
symbol, it is deleted for assignments. This was added with a fix for issue
7502.
No clue why
https://github.com/D-Programming-Language/dmd/commit/3f88f156879841ef79162916b2dbbf28e2a1fcc3?diff=unified#diff-6e3ab8a500e476994f345ede433811bbR3538.

cat > bug.d << CODE
struct Bug
{
    size_t[16 * 1024] data;
}

void test()
{
    Bug b;
    b = Bug();
}
CODE

----
dmd -c bug
----

--
March 20, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #5 from Martin Nowak <code@dawg.eu> ---
https://github.com/D-Programming-Language/dmd/pull/4506

--
March 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

--- Comment #6 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/99dab7d640db15b8ee8ade1ad1430298884e013f
Partial fix for issue 14133 - generate precise fillHoles code for struct
literal expression

https://github.com/D-Programming-Language/dmd/commit/ce11286e21f54b07675ce4abe116a83c931f94c6 Merge pull request #4508 from 9rnsr/fix14133

[REG2.067a] Partial fix for issue 14133 - generate precise fillHoles code for struct literal expression

--
March 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

--- Comment #7 from github-bugzilla@puremagic.com ---
Commit pushed to 2.067 at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/9d8ebb2f3a146b1e4fb4d125e36c7514cde420cb Merge pull request #4508 from 9rnsr/fix14133

[REG2.067a] Partial fix for issue 14133 - generate precise fillHoles code for struct literal expression

--
March 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|pull                        |
            Summary|[REG 2.067] struct ctor     |change in struct ctor
                   |init compiles very slow and |lowering generates
                   |produces excessive amounts  |excessive init code
                   |of code                     |
           Severity|regression                  |normal

--- Comment #8 from Kenji Hara <k.hara.pg@gmail.com> ---
The issue case in comment #4 will be fixed in 2.067 release, so change back the importance to "normal".

--
April 11, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

--- Comment #9 from github-bugzilla@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/9d8ebb2f3a146b1e4fb4d125e36c7514cde420cb Merge pull request #4508 from 9rnsr/fix14133

--
June 17, 2015
https://issues.dlang.org/show_bug.cgi?id=14133

--- Comment #10 from github-bugzilla@puremagic.com ---
Commits pushed to stable at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/99dab7d640db15b8ee8ade1ad1430298884e013f
Partial fix for issue 14133 - generate precise fillHoles code for struct
literal expression

https://github.com/D-Programming-Language/dmd/commit/ce11286e21f54b07675ce4abe116a83c931f94c6 Merge pull request #4508 from 9rnsr/fix14133

--
« First   ‹ Prev
1 2