Thread overview
[Bug 151] ICE in gimplify_expr, at gimplify.c:8538
Aug 14, 2014
Johannes Pfau
Aug 20, 2014
Iain Buclaw
Aug 20, 2014
Iain Buclaw
August 14, 2014
http://bugzilla.gdcproject.org/show_bug.cgi?id=151

Johannes Pfau <johannespfau@gmail.com> changed:

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

--- Comment #1 from Johannes Pfau <johannespfau@gmail.com> ---
So where exactly is the bug?

The .init symbol is readonly so the only issue I see here is that the frontend allows this code to compile. But this is a bug for issues.dlang.org then.

-- 
You are receiving this mail because:
You are watching all bug changes.


August 14, 2014
http://bugzilla.gdcproject.org/show_bug.cgi?id=151

art.08.09@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |art.08.09@gmail.com

--- Comment #2 from art.08.09@gmail.com ---
(In reply to Johannes Pfau from comment #1)
> So where exactly is the bug?

Every ICE is always a compiler bug. It can be harmless (ie just a wrong/missing error message), but it can also be a symptom of a real problem.

> The .init symbol is readonly so the only issue I see here is that the frontend allows this code to compile. But this is a bug for issues.dlang.org then.

      auto p = &S.init.i;
      *p = 42;

is actually accepted. And optimized away completely at >O0. :) While that is a frontend and language problem, this bug is just about the ICE caused by the original version.

-- 
You are receiving this mail because:
You are watching all bug changes.


August 20, 2014
http://bugzilla.gdcproject.org/show_bug.cgi?id=151

--- Comment #3 from Iain Buclaw <ibuclaw@gdcproject.org> ---
Seconded.  ICE's are either codegen bugs for valid code, or bad codegen that should have been stopped at semantic passes.

I'd probably put this into the former.

While the code:

*&S.init.i = 42;

Looks as though you are trying to alter the default initialiser, this is not actually the case.  .init is a getter @property, not a field.  It should compile to some sort of code resembling this:

(*&(_tmp = S.init)).i = 42;

Which is a noop under optimisations as the _tmp variable is not used (read).

-- 
You are receiving this mail because:
You are watching all bug changes.


August 20, 2014
http://bugzilla.gdcproject.org/show_bug.cgi?id=151

--- Comment #4 from Iain Buclaw <ibuclaw@gdcproject.org> ---
Or maybe not... :)

I'm seeing this in the code dump:

{
  0 = 42;
}


Ooops!

-- 
You are receiving this mail because:
You are watching all bug changes.


June 11
https://bugzilla.gdcproject.org/show_bug.cgi?id=151

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #5 from Iain Buclaw <ibuclaw@gdcproject.org> ---
https://issues.dlang.org/show_bug.cgi?id=17491

-- 
You are receiving this mail because:
You are watching all bug changes.
June 15
https://bugzilla.gdcproject.org/show_bug.cgi?id=151

Iain Buclaw <ibuclaw@gdcproject.org> changed:

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

--- Comment #6 from Iain Buclaw <ibuclaw@gdcproject.org> ---
https://github.com/D-Programming-GDC/GDC/pull/489

-- 
You are receiving this mail because:
You are watching all bug changes.