Thread overview
[Issue 23725] ImportC fails to parse __asm __volatile on FreeBSD stdatomic.h and fenv.h
[Issue 23725] ImportC fails to parse __asm __volatile ("pause")
Feb 18, 2023
Walter Bright
Feb 18, 2023
Walter Bright
Feb 27, 2023
Iain Buclaw
Mar 19, 2023
Walter Bright
Mar 19, 2023
Dlang Bot
Mar 25, 2023
Walter Bright
May 31, 2023
Walter Bright
February 18, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ImportC

--
February 18, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|ImportC fails to parse      |ImportC fails to parse
                   |__asm __volatile ("pause")  |__asm __volatile on FreeBSD
                   |                            |stdatomic.h and fenv.h

--- Comment #1 from Walter Bright <bugzilla@digitalmars.com> ---
The trouble is __GNUCLIKE_ASM is always defined because __GNUC__ is defined. Turning off __GNUC__ causes a lot of error messages like the system .h files need to be edited.

__GNUCLIKE_ASM turns on use of the inline assembler.

--
February 27, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P3

--
March 19, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

--- Comment #2 from Walter Bright <bugzilla@digitalmars.com> ---
The troublesome block of code in ieeefp.h looks like:

#define __fldcw(addr)   __asm __volatile("fldcw %0" : : "m" (*(addr)))
#define __fldenv(addr)  __asm __volatile("fldenv %0" : : "m" (*(addr)))
#define __fnclex()      __asm __volatile("fnclex")
#define __fnstcw(addr)  __asm __volatile("fnstcw %0" : "=m" (*(addr)))
#define __fnstenv(addr) __asm __volatile("fnstenv %0" : "=m" (*(addr)))
#define __fnstsw(addr)  __asm __volatile("fnstsw %0" : "=m" (*(addr)))
#define __ldmxcsr(addr) __asm __volatile("ldmxcsr %0" : : "m" (*(addr)))
#define __stmxcsr(addr) __asm __volatile("stmxcsr %0" : "=m" (*(addr)))

--
March 19, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

Dlang Bot <dlang-bot@dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #3 from Dlang Bot <dlang-bot@dlang.rocks> ---
@WalterBright created dlang/dmd pull request #15004 "fix Issue 23725 - ImportC fails to parse __asm __volatile on FreeBSD …" fixing this issue:

- fix Issue 23725 - ImportC fails to parse __asm __volatile on FreeBSD stdatomic.h and fenv.h

https://github.com/dlang/dmd/pull/15004

--
March 25, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

--- Comment #4 from Walter Bright <bugzilla@digitalmars.com> ---
Fixed by https://github.com/dlang/dmd/pull/15012

--
May 31, 2023
https://issues.dlang.org/show_bug.cgi?id=23725

Walter Bright <bugzilla@digitalmars.com> changed:

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

--