Skip to content

WIP: Upgrade frontend & libs to v2.113#5113

Draft
kinke wants to merge 489 commits intoldc-developers:masterfrom
kinke:merge-2.113
Draft

WIP: Upgrade frontend & libs to v2.113#5113
kinke wants to merge 489 commits intoldc-developers:masterfrom
kinke:merge-2.113

Conversation

@kinke
Copy link
Copy Markdown
Member

@kinke kinke commented Apr 7, 2026

No description provided.

ibuclaw and others added 30 commits January 1, 2026 04:09
…dlang/dmd!22343)

Fix dlang/dmd!19733 - wrong real literals on windows

use _atoldbl() from the MS runtime instead of strtold_dm to parse decimal floating point literals
…!22347)

Convert object-like macros whose value is a bare function-like macro
invocation (without outer parentheses):

    #define FUNC(x) ((x) * 2)
    #define RESULT FUNC(5)      // Now converted to D

Previously only the parenthesized form was recognized:

    #define RESULT (FUNC(5))    // Already worked

This is restricted to bare function calls only (not expressions like
`FUNC(5) + 1`) to preserve C semantics - function call `()` has highest
precedence in C, so bare calls have identical behavior in both languages.
…g/dmd!22349)

* ImportC: Add test for function-like macro calling another macro

Tests the `if (params) break;` branch in TOK.identifier case,
ensuring function-like macros with identifier bodies are handled
by caseFunctionLike, not the new nullary template path.

* ImportC: Replace unreachable branch with assertion

When we reach TOK.identifier case, params is always false because
if params were true (macro name followed by '('), the next token
would be TOK.leftParenthesis, not TOK.identifier.
kinke and others added 24 commits April 9, 2026 06:30
That function was converted to a free-standing function in v2.113.
…n NRVO functions

In the presence of an NRVO variable, `__result` is newly a *ref* variable.
…case range statement (dlang/dmd!22926)

Fixes: dlang/dmd!22925
…r causes ICE (dlang/dmd!22941)

CTFE used to check after interpreting if there were any changes, but it neglected the interpretation of the basis element, keeping it around uninterpreted which trips up the compiler down the line.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
… string literal causes segfault

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sion

In `elcond`, when restructuring `((a,b) ? c : d)` into `(a, (b ? c : d))`,
`Ety` was copied to the new inner OPcond but `ET` was not. This left the
OPcond with TYstruct Ety but null ET, causing `elstruct` to return early
and `exp2_copytotemp` to crash with `assert(ty != TYstruct)`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…equence (dlang/dmd!22914)

* Fix dlang/dmd!21707 - segfault with -vcg-ast and foreach on a tuple sequence

* List vcg-ast output as OUTPUT_FILES

* Add expected output file to TEST_OUTPUT

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ray type

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…set for struct arrays, fixing the segfault in rt_finalize2 during GC sweep (dlang/dmd!22884)
Like DMD. After a quick search, it looks like only PPC64 has a v2.
We've been predefining it for Linux only, do it for all ELF targets
now.

New test `runnable/sectiondefs.d` depends on these predefined versions
to determine ELF targets.
kinke and others added 5 commits May 4, 2026 22:32
…e subnormal

Which LDC detects and rejects at parse time:
```
Error: number `1e-308` is not representable as a `double`
```
As tested by new compilable/issue22254.d.
Firstly, Apple targets diverge and don't have a special case for ARM64
wrt. anonymous bit fields contributing to the aggregate alignment:
https://cpp.godbolt.org/z/44GcTKnvY

Secondly, some `extern(D)` sizeofs were wrong (probably typos).
If initialized with a StringExp, as newly tested by runnable/testconst.d
(dlang/dmd!21194).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.