Thread overview
bugzilla.gdcproject.org: No confirmation mail; cpuid.d:838:17: error: PIC register clobbered by 'ebx' in ' asm'
Feb 19, 2018
kdevel
Feb 21, 2018
Johannes Pfau
Feb 21, 2018
kdevel
Feb 22, 2018
Johannes Pfau
Feb 22, 2018
kdevel
Feb 23, 2018
Johannes Pfau
Feb 25, 2018
kdevel
Feb 25, 2018
Johannes Pfau
Feb 26, 2018
Eugene Wissner
February 19, 2018
I do not get a confirmation email from bugzilla after entering my e-mail address here: https://bugzilla.gdcproject.org/createaccount.cgi

I tried to build patched versions of GCC 4.8.5 and 4.9.4 but this happened:

.../gcc-4.8.5/libphobos/libdruntime/core/cpuid.d: In function 'cpuidX86':
.../gcc-4.8.5/libphobos/libdruntime/core/cpuid.d:838:17: error: PIC register clobbered by 'ebx' in ' asm'
"cpuid" : "=a" a, "=c" c : "a" 0x8000_0008 : "ebx", "edx";
^

patch branch gdc-4.8 commit 8b43f71621673c4d0f3f0665c397a1d80d5b434e

and

.../gcc-4.9.4/libphobos/libdruntime/core/cpuid.d: In function 'cpuidX86':
.../gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:838:17: error: PIC register clobbered by 'ebx' in ' asm'
"cpuid" : "=a" a, "=c" c : "a" 0x8000_0008 : "ebx", "edx";
^

patch branch gdc-4.9 commit 93a9105be173472a9e57aa12c43528ae15d1319c
February 21, 2018
Am Mon, 19 Feb 2018 19:43:49 +0000
schrieb kdevel <kdevel@vogtner.de>:

> I do not get a confirmation email from bugzilla after entering my e-mail address here: https://bugzilla.gdcproject.org/createaccount.cgi
> 
> I tried to build patched versions of GCC 4.8.5 and 4.9.4 but this happened:
> 
> .../gcc-4.8.5/libphobos/libdruntime/core/cpuid.d: In function
> 'cpuidX86':
> .../gcc-4.8.5/libphobos/libdruntime/core/cpuid.d:838:17: error:
> PIC register clobbered by 'ebx' in ' asm'
> "cpuid" : "=a" a, "=c" c : "a" 0x8000_0008 : "ebx", "edx";
> ^
> 
> patch branch gdc-4.8 commit 8b43f71621673c4d0f3f0665c397a1d80d5b434e
> 
> and
> 
> .../gcc-4.9.4/libphobos/libdruntime/core/cpuid.d: In function
> 'cpuidX86':
> .../gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:838:17: error:
> PIC register clobbered by 'ebx' in ' asm'
> "cpuid" : "=a" a, "=c" c : "a" 0x8000_0008 : "ebx", "edx";
> ^
> 
> patch branch gdc-4.9 commit 93a9105be173472a9e57aa12c43528ae15d1319c

Thanks for the report. That's a bug which was for some reason not caught by the CI. I guess it's a i686 only bug and IIRC that isn't tested right now.

I'll submit a fix later today or tomorrow.


-- Johannes

February 21, 2018
On Wednesday, 21 February 2018 at 07:58:29 UTC, Johannes Pfau wrote:
> Am Mon, 19 Feb 2018 19:43:49 +0000
> schrieb kdevel <kdevel@vogtner.de>:

[...]

> I'll submit a fix later today or tomorrow.

Great. But one question: Why did I receive an "noreply" notification email to my e-Mail-Address?

From the header:

From: D Programming Language Forum <no-reply@forum.dlang.org>
Return-Path: <no-reply@forum.dlang.org>
Received: from k3.1azy.net (k3.1azy.net [178.33.224.37])
	(using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits))
Subject: Johannes Pfau replied to your post in the thread "bugzilla.gdcproject.org: No confirmation mail; cpuid.d:838:17: error: PIC register clobbered by 'ebx' in ' asm'"


February 22, 2018
Am Wed, 21 Feb 2018 21:31:41 +0000
schrieb kdevel <kdevel%%@vogtner.de>:

> On Wednesday, 21 February 2018 at 07:58:29 UTC, Johannes Pfau wrote:
> > Am Mon, 19 Feb 2018 19:43:49 +0000
> > schrieb kdevel <kdevel@vogtner.de>:
> 
> [...]
> 
> > I'll submit a fix later today or tomorrow.
> 

I've pushed an update to the gdc-4.9 branch. Please report back whether this fixes the issue.

> Great. But one question: Why did I receive an "noreply" notification email to my e-Mail-Address?

I think this has been answered on the D newsgroup.

-- Johannes

February 22, 2018
On Thursday, 22 February 2018 at 19:52:12 UTC, Johannes Pfau wrote:
> I've pushed an update to the gdc-4.9 branch. Please report back whether this fixes the issue.

Not really:

checking for expf... /scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:833:45: error: basic type expected, not {
             version(GNU) pure nothrow @nogc {
                                             ^
/scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:833:45: error: no identifier for declarator _error_
             version(GNU) pure nothrow @nogc {
                                             ^
/scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:835:15: error: found 'else' instead of statement
             } else asm pure nothrow @nogc {
               ^
/scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:844:5: error: declaration expected, not 'if'
     if (max_extended_cpuid >= 0x8000_0004) {
     ^
/scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:848:21: error: unexpected ( in declarator
             gnuCpuid(0x8000_0002, pnb[0], pnb[1], pnb[ 2], pnb[ 3]);
                     ^
/scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:848:22: error: basic type expected, not 2147483650U
             gnuCpuid(0x8000_0002, pnb[0], pnb[1], pnb[ 2], pnb[ 3]);
                      ^
/scratch/mockbuild1/bld-4.9.4/gcc-4.9.4/libphobos/libdruntime/core/cpuid.d:848:22: error: found '2147483650U' when expecting ')'
             gnuCpuid(0x8000_0002, pnb[0], pnb[1], pnb[ 2], pnb[ 3]);

...
February 23, 2018
Am Thu, 22 Feb 2018 21:34:34 +0000
schrieb kdevel <kdevel@vogtner.de>:

> On Thursday, 22 February 2018 at 19:52:12 UTC, Johannes Pfau wrote:
> > I've pushed an update to the gdc-4.9 branch. Please report back whether this fixes the issue.
> 
> Not really:
> 

Looks like you're at commit c8ccdcfd1abf15b95b64821d5173e79f76c9dafe,
which is a broken version I accidentally committed.
The next commit, 8a6b7a49ff9d4233e637a6a7e1ca4c1978540060, should fix
this problem.


-- Johannes

February 25, 2018
On Friday, 23 February 2018 at 07:48:47 UTC, Johannes Pfau wrote:
> Am Thu, 22 Feb 2018 21:34:34 +0000
> schrieb kdevel <kdevel@vogtner.de>:
>
>> On Thursday, 22 February 2018 at 19:52:12 UTC, Johannes Pfau wrote:
>> > I've pushed an update to the gdc-4.9 branch. Please report back whether this fixes the issue.
>> 
>> Not really:
>> 
>
> Looks like you're at commit c8ccdcfd1abf15b95b64821d5173e79f76c9dafe,
> which is a broken version I accidentally committed.
> The next commit, 8a6b7a49ff9d4233e637a6a7e1ca4c1978540060, should fix
> this problem.

It does. Now I have an issue with a language feature. With dmd v2.078.2 this
code compiles:

void function () [string] disp;
static this () {
   enum typenames = ["float", "double", "real", "short", "int", "long"];
   static foreach (s; typenames) {
      pragma (msg, s);
      disp[s] = mixin ("&mymain!" ~ s);
   }
}

but gdc (GCC 4.9.4) complains:

dotbench.d:65:11: Fehler: basic type expected, not foreach
    static foreach (s; typenames) {
           ^
dotbench.d:65:11: Fehler: no identifier for declarator _error_
    static foreach (s; typenames) {
           ^



February 25, 2018
Am Sun, 25 Feb 2018 00:05:44 +0000 schrieb kdevel:
> 
> but gdc (GCC 4.9.4) complains:
> 
> dotbench.d:65:11: Fehler: basic type expected, not foreach
>      static foreach (s; typenames) {
>             ^
> dotbench.d:65:11: Fehler: no identifier for declarator _error_
>      static foreach (s; typenames) {
>             ^

Unfortunately, static foreach is not supported in GDC right now. Maybe we'll get a static foreach backport soon (https://dlang.slack.com/ archives/C6LTP6MV1/p1519419332000480 ), otherwise static foreach will only start working once we switch GDC to the D frontend (https:// github.com/D-Programming-GDC/GDC/pull/550 ).

-- 
Johannes
February 26, 2018
On Sunday, 25 February 2018 at 09:36:51 UTC, Johannes Pfau wrote:
> Am Sun, 25 Feb 2018 00:05:44 +0000 schrieb kdevel:
>> 
>> but gdc (GCC 4.9.4) complains:
>> 
>> dotbench.d:65:11: Fehler: basic type expected, not foreach
>>      static foreach (s; typenames) {
>>             ^
>> dotbench.d:65:11: Fehler: no identifier for declarator _error_
>>      static foreach (s; typenames) {
>>             ^
>
> Unfortunately, static foreach is not supported in GDC right now. Maybe we'll get a static foreach backport soon (https://dlang.slack.com/ archives/C6LTP6MV1/p1519419332000480 ), otherwise static foreach will only start working once we switch GDC to the D frontend (https:// github.com/D-Programming-GDC/GDC/pull/550 ).

I didn't come that far with the backport. Some bugs are very difficult to find (for me) and the D implementation uses some template features that aren't really translatable into pre-C++11 C++. So I'm not sure that I'll finish this. Especially I don't know if it is worth it. It depends how soon gdc will be merged with the upstream.