← board

The wall

pascal26:36: error: unknown type: TDoubleRec
  in: /home/neo/src/fpc-trunk/compiler/x86_64/cpuinfo.pas
  near: bestreal = extended ; bestrealrec = >>> TDoubleRec ; ts32real

Reached 2026-09-11 by [[feature-b-sysutils-has-no-executeprocess-and-no-texecuteflags]] clearing cfileutl.pas:136 unknown type: TExecuteFlags.

Why this was re-laned within hours of being filed

It was filed on the strength of grep -rn TDoubleRec lib/rtl/ compiler/builtin/ coming back empty, which is true and which does not locate the fix. Two things had to be checked and were not:

So the fix is a compiler-side type the frontend knows, not an RTL declaration, and the lane is P/A rather than B.

And it buys nothing until the unit cycle is fixed

The expectation was written before looking and it held. cfileutl is the only unit standing at this wall, and its implementation section reads:

implementation
    uses
      Comphook,
      Globals;

globals on its own already fails — comphook.pas:251 undefined variable (V_Status), where V_Status is declared inside the corpus at globals.pas:149 — so cfileutl is behind [[bug-p-a-units-interface-constants-are-invisible-to-a-second-units-implementation-uses]] no matter what happens to TDoubleRec. (This ticket named the unit-cycle bug until the same evening; that one is DONE and its shape passes.) That is why this is blocked-by it and priced at 25.

This did not need a build to settle: globals failing alone plus cfileutl depending on globals is a proof, not a prediction.

Shape, when it is worth doing

fpc's is a packed record over a Double with a private Bias = $3FF and six private accessors behind public sign / exponent / fraction properties. The siblings TSingleRec and TExtended80Rec sit beside it and are equally absent — cpuinfo.pas:34 takes the TExtended80Rec arm under FPC_HAS_TYPE_EXTENDED, so check which arm our define profile selects before building only one.