Thread overview
[dmd-internals] [D-Programming-Language/dmd] eaac7b: fix build breakage
Feb 25, 2012
GitHub
Feb 28, 2012
Rainer Schuetze
Feb 28, 2012
Walter Bright
Feb 28, 2012
Rainer Schuetze
Feb 29, 2012
Walter Bright
Mar 02, 2012
Rainer Schuetze
February 24, 2012
  Branch: refs/heads/master
  Home:   https://github.com/D-Programming-Language/dmd
  Commit: eaac7ba53fc1f913120693b2c8bca4d22574fa7e
      https://github.com/D-Programming-Language/dmd/commit/eaac7ba53fc1f913120693b2c8bca4d22574fa7e
  Author: Walter Bright <walter@walterbright.com>
  Date:   2012-02-24 (Fri, 24 Feb 2012)

  Changed paths:
    M src/backend/bcomplex.h
  M src/backend/cc.h
  M src/backend/cdef.h
  M src/backend/cg87.c
  M src/backend/debug.c
  M src/backend/el.c
  M src/posix.mak
  M src/root/longdouble.c
  M src/root/longdouble.h
  M src/win32.mak

  Log Message:
  -----------
  fix build breakage





February 28, 2012
Thanks for merging in the vcbuild patch.

I guess this commit was made to fix building dmc, but it broke the MS build at 2 places. I have prepared a pull request, but wanted to ask what the right way to fix them is:

On 25.02.2012 03:47, GitHub wrote:
>    Branch: refs/heads/master
>    Home:   https://github.com/D-Programming-Language/dmd
>    Commit: eaac7ba53fc1f913120693b2c8bca4d22574fa7e
>        https://github.com/D-Programming-Language/dmd/commit/eaac7ba53fc1f913120693b2c8bca4d22574fa7e
>    Author: Walter Bright<walter@walterbright.com>
>    Date:   2012-02-24 (Fri, 24 Feb 2012)
>
>    Changed paths:
>      M src/backend/bcomplex.h
>    M src/backend/cc.h
>    M src/backend/cdef.h

this line was reverted:

+inline char *prettyident(Symbol *s) { return CPP ? cpp_prettyident(s) : s->Sident; }


but it causes a link failure due to missing symbol cpp_prettyident. Where should I put its implementation? dsymbol.c? Maybe it should be added to the D source unconditionally, not only for _MSC_VER.

>    M src/backend/cg87.c

reverted the use of longdouble. If I read the includes correctly, it should be defined in cdef.h for a C compiler aswell. Why should it not be used?

>    M src/backend/debug.c
>    M src/backend/el.c
>    M src/posix.mak
>    M src/root/longdouble.c
>    M src/root/longdouble.h
>    M src/win32.mak
>
>    Log Message:
>    -----------
>    fix build breakage
>
>
>
>
>
> _______________________________________________
> dmd-internals mailing list
> dmd-internals@puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals



February 28, 2012

On 2/28/2012 12:41 AM, Rainer Schuetze wrote:
>
> this line was reverted:
> +inline char *prettyident(Symbol *s) { return CPP ? cpp_prettyident(s) : s->Sident; }
>
> but it causes a link failure due to missing symbol cpp_prettyident. Where should I put its implementation? dsymbol.c? Maybe it should be added to the D source unconditionally, not only for _MSC_VER.

The thing is, CPP is 0. So it should never be calling cpp_prettyident. Other compilers optimize it away.

>
>>    M src/backend/cg87.c
>
> reverted the use of longdouble. If I read the includes correctly, it should be defined in cdef.h for a C compiler aswell. Why should it not be used?

Not sure what happened there.



February 28, 2012
On 28.02.2012 10:56, Walter Bright wrote:
>
>
> On 2/28/2012 12:41 AM, Rainer Schuetze wrote:
>>
>> this line was reverted:
>> +inline char *prettyident(Symbol *s) { return CPP ? cpp_prettyident(s) : s->Sident; }
>>
>> but it causes a link failure due to missing symbol cpp_prettyident. Where should I put its implementation? dsymbol.c? Maybe it should be added to the D source unconditionally, not only for _MSC_VER.
>
> The thing is, CPP is 0. So it should never be calling cpp_prettyident. Other compilers optimize it away.
>

I assumed they do, but obviously the Microsoft compiler does not, especially in debug builds. I'd say it does not hurt to add this function with an assert(false) somewhere.My best guesses are dsymbol.c or glue.c? Objections?

>>
>>>    M src/backend/cg87.c
>>
>> reverted the use of longdouble. If I read the includes correctly, it should be defined in cdef.h for a C compiler aswell. Why should it not be used?
>
> Not sure what happened there.
>

Ok, then I'll put them back in.

Maybe you disliked the ld_... constants? I can name these similar to M_..._L, but it needs additional constants for 0 and 1.



February 28, 2012

On 2/28/2012 11:37 AM, Rainer Schuetze wrote:
> On 28.02.2012 10:56, Walter Bright wrote:
>>
>>
>> On 2/28/2012 12:41 AM, Rainer Schuetze wrote:
>>>
>>> this line was reverted:
>>> +inline char *prettyident(Symbol *s) { return CPP ? cpp_prettyident(s) : s->Sident; }
>>>
>>> but it causes a link failure due to missing symbol cpp_prettyident. Where should I put its implementation? dsymbol.c? Maybe it should be added to the D source unconditionally, not only for _MSC_VER.
>>
>> The thing is, CPP is 0. So it should never be calling cpp_prettyident. Other compilers optimize it away.
>>
>
> I assumed they do, but obviously the Microsoft compiler does not, especially in debug builds. I'd say it does not hurt to add this function with an assert(false) somewhere.My best guesses are dsymbol.c or glue.c? Objections?

No, just be sure the result compiles. The previous iteration did not compile with anything but MSVC.

>
>>>
>>>>    M src/backend/cg87.c
>>>
>>> reverted the use of longdouble. If I read the includes correctly, it should be defined in cdef.h for a C compiler aswell. Why should it not be used?
>>
>> Not sure what happened there.
>>
>
> Ok, then I'll put them back in.
>
> Maybe you disliked the ld_... constants? I can name these similar to M_..._L, but it needs additional constants for 0 and 1.
>

I don't remember what happened with that.


March 02, 2012
On 2/29/2012 6:25 AM, Walter Bright wrote:
>
>
> On 2/28/2012 11:37 AM, Rainer Schuetze wrote:
>>
>> I assumed they do, but obviously the Microsoft compiler does not, especially in debug builds. I'd say it does not hurt to add this function with an assert(false) somewhere.My best guesses are dsymbol.c or glue.c? Objections?
>
> No, just be sure the result compiles. The previous iteration did not compile with anything but MSVC.

I finally got around to creating a pull request for these: https://github.com/D-Programming-Language/dmd/pull/777

With these, I can stay up to date with dmd development and compile my projects almost twice as fast ;-)

Thanks,
Rainer