Bug 20600 – C++ header output `-HC` can't write size_t correctly

Status
RESOLVED
Resolution
FIXED
Severity
enhancement
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2020-02-23T02:33:00Z
Last change time
2020-11-07T16:15:04Z
Assigned to
No Owner
Creator
Manu

Comments

Comment #0 by turkeyman — 2020-02-23T02:33:00Z
Is it possible in DMD FE to detect that a type was declared as size_t? We need to be able to detect this in order to emit the proper type back to the .h file (and I suspect this same issue applies to .di files too)
Comment #1 by doob — 2020-02-23T09:43:31Z
It looks like `core.stdc.config.cpp_size_t` is supposed to be used to get the correct size and mangling on all platforms. The compiler specially recognizes `__c_long` and a couple of more symbols related to C and C++ interoperability, see [1] for all of them. [1] https://github.com/dlang/dmd/blob/89d0cd492a5284ab67f665f3014b73905aecb4e2/src/dmd/id.d#L126-L131
Comment #2 by turkeyman — 2020-02-23T21:32:43Z
I'm not sure how what you're saying relates to size_t? I notice that when I use size_t in code, the type seems to be lost; is it just an alias for a sized integer? It needs to retain the fact that it was specified as size_t in the AST somehow.
Comment #3 by moonlightsentinel — 2020-11-07T16:15:04Z