Skip to content

tgmath.h broken when compiling C with clang-cl #45552

@llvmbot

Description

@llvmbot
Bugzilla Link 46207
Version trunk
OS Windows NT
Reporter LLVM Bugzilla Contributor
CC @CaseyCarter,@zmodem

Extended Description

The Universal CRT does not have a conforming complex.h. The tgmath.h header in Clang (https://github.com/llvm/llvm-project/blob/4cf5743b7784b2c2bff8be82e1a5cc37f8c68a36/clang/lib/Headers/tgmath.h) assumes a conforming complex.h and therefore cannot be compiled by clang-cl when building as C.

Repro:

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.7.0-pre.3.0
** Copyright (c) 2020 Microsoft Corporation
**********************************************************************

C:\Users\stwish\source>set "PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\Llvm\bin;%PATH%"

C:\Users\stwish\source>type tgmath_repro.c
#include <tgmath.h>

int main()
{
    return 0;
}

C:\Users\stwish\source>clang-cl tgmath_repro.c -ferror-limit=1
In file included from tgmath_repro.c:1:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\Llvm\lib\clang\10.0.0\include\tgmath.h(72,50): error: passing
      '_Complex float' to parameter of incompatible type '_Fcomplex' (aka 'struct _C_float_complex')
    __tg_acos(float _Complex __x) {return cacosf(__x);}
                                                 ^~~
C:\Program Files (x86)\Windows Kits\10\include\10.0.19620.0\ucrt\complex.h(98,50): note: passing argument to parameter '_Z' here
_ACRTIMP _Fcomplex __cdecl cacosf(_In_ _Fcomplex _Z);
                                                 ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 errors generated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillacclang:headersHeaders provided by Clang, e.g. for intrinsicsconfirmedVerified by a second partyplatform:windows

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions