GDC generates invalid assembly around fiber yield operations (Not re-reading data from clobberedd memory to registers)
Liran Zvibel via D.gnu
d.gnu at puremagic.com
Fri May 15 02:47:39 PDT 2015
Please feel free to use my code sample in the test suite.
I fill post a bug report.
Thanks!
Liran
> On May 15, 2015, at 10:23, Iain Buclaw via D.gnu <d.gnu at puremagic.com> wrote:
>
> On 15 May 2015 at 09:13, Iain Buclaw <ibuclaw at gdcproject.org> wrote:
>> On 15 May 2015 at 09:08, Johannes Pfau via D.gnu <d.gnu at puremagic.com> wrote:
>>> Am Thu, 14 May 2015 19:02:48 +0200
>>> schrieb Johannes Pfau <nospam at example.com>:
>>>
>>>> ...
>>>
>>> TLDR
>>> As a workaround replace
>>>
>>> globalSum += otherFunc();
>>>
>>> which GDC currently treats as
>>>
>>> globalSum = globalSum + otherFunc();
>>>
>>> with
>>>
>>> globalSum = otherFunc() + globalSum;
>>>
>>
>> That is an interesting workaround, should we perhaps reconsider our
>> code generation here?
>>
>
> I can confirm that C codegen does infact emit 'foo += bar()' as 'foo
> = bar() + foo'
>
> Which only strengthens the reasoning to change it.
>
> Liran, can you raise a bug report? Also, can we use your small sample
> (names will be anonymised) to put into the testsuite?
>
>
> Regards
> Iain.
More information about the D.gnu
mailing list