Thread overview
[Issue 12862] [ICE] backend assertion (Internal error: backend/cg87.c 331) with inline, optimizing and floats
Jun 07, 2014
yebblies
Jun 16, 2014
Martin Nowak
Jun 19, 2014
Ola Østtveit
Aug 11, 2014
Martin Nowak
Sep 23, 2014
Vlad Levenfeld
Mar 10, 2019
Basile-z
Mar 21, 2020
Basile-z
June 07, 2014
https://issues.dlang.org/show_bug.cgi?id=12862

yebblies <yebblies@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yebblies@gmail.com
           Severity|enhancement                 |critical

--- Comment #1 from yebblies <yebblies@gmail.com> ---
I can't reproduce this on win32 or linux64

--
June 16, 2014
https://issues.dlang.org/show_bug.cgi?id=12862

--- Comment #2 from Martin Nowak <code@dawg.eu> ---
Mmh, the codegen assertion vanished with this commit (https://github.com/D-Programming-Language/dmd/commit/9efe7f74c2462e8743f5a479cd04f9be733be4b0). I reproduced another test case for the issue.

cat > bug.d << CODE
struct FPoint
{
    float x, y;
}

struct FRect
{
    float left, top, right, bottom;
    static FRect calcBounds(FPoint[] )
    {
        return FRect();
    }
}

struct Matrix
{
    FRect mapRect(FRect src) {
        FPoint[] pts = new FPoint[](1);
        pts[0].x = src.left;
        pts[0].y = src.top;
        return FRect.calcBounds(pts);
    }
}


// TODO: FPoint -> Point!T
struct Path
{
    @property FRect bounds()
    {
        if (points.length)
            return FRect();
        else
            return FRect();
    }

    FPoint[] points;
}

void foo()
{
    Matrix mat;
    Path path;
    mat.mapRect(path.bounds);
}
CODE

The issues first appeared with dmd2.060 and seems to be triggered by assigning
tym = TYucent to 16 byte structs that consist of either 4 floats or 2 doubles
in elstruct
(https://github.com/D-Programming-Language/dmd/blob/5cc1c812227440d199f265dec8fb976bea7ad943/src/backend/cgelem.c#L3077).
I don't understand that code good enough to fix the issue though.

--
June 19, 2014
https://issues.dlang.org/show_bug.cgi?id=12862

Ola Østtveit <olaa81@gmail.com> changed:

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

--
August 11, 2014
https://issues.dlang.org/show_bug.cgi?id=12862

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://issues.dlang.org/sh
                   |                            |ow_bug.cgi?id=5570

--
September 23, 2014
https://issues.dlang.org/show_bug.cgi?id=12862

Vlad Levenfeld <vlevenfeld@gmail.com> changed:

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

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

Andrei Alexandrescu <andrei@erdani.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|unspecified                 |D2

--
March 10, 2019
https://issues.dlang.org/show_bug.cgi?id=12862

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |b2.temp@gmx.com
         Resolution|---                         |WORKSFORME

--- Comment #3 from Basile-z <b2.temp@gmx.com> ---
this works fine nowadays (git 7036b216dcb5d2b8394ae5c12324227c8ca47187), w or w/o -O -inline, -m32 or -m64.

--
March 21, 2020
https://issues.dlang.org/show_bug.cgi?id=12862

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|b2.temp@gmx.com             |

--