Commits

trunk
Switch branches/tags
All users
Until May 9, 2026
May 2026
Su Mo Tu We Th Fr Sa
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

Commits on May 7, 2026

  1. Refuse to split phi-like vregs (defined in multiple blocks); remove env gates
    Linearscan's live intervals are linear-position [start, end] ranges,
    which can't represent the true CFG-aware live set for vregs that
    receive values via parallel-copy at every predecessor (block params,
    post-phi placeholders). When a call block is lexically wedged
    between a phi-vreg's def edge and its use block, the position-based
    range straddles the call point but no actual control-flow path
    through the vreg traverses it. The splitter then thought the vreg
    crossed a call, picked a pre/post split, and assigned the post-half
    a different physreg — every predecessor's parallel-copy landed in
    pre_phys but every use inside the loop read post_phys.
    
    Track each vreg's set of defining blocks while building
    vreg_actual_range; if it has more than one, force real_crosses
    false (no splitting). The unit test exercising splitting still
    fires because its synthetic vregs have single defs.
    
    Removes:
    - ARMFORTAS_SPLIT_INTERVALS env gate (no longer needed)
    - detect_partial_unroll_loop's acc_param + store guard (the
      underlying regalloc bug it worked around is now fixed)
    
    Verified at all opt levels:
    - realworld_seed_overwrite.f90: 4 19 23 (was infinite loop at -O2+)
    - realworld_affine_shift.f90:   14 16   (was 14 7 at -O2+)
    mfwolffe committed
  2. Merge pull request #23 from FortranGoingOnForty/refactor-afs
    Sprint refactor + NEON/unroll work + trunk merge
    Matthew Forrester Wolffe committed

Commits on May 6, 2026

  1. Merge trunk into refactor-afs
    Trunk (PR #22 from compiler-edges) added 78 commits since the common
    ancestor, with substantive edits to src/ir/lower.rs (4525 changed lines
    across 134 functions) and src/sema/resolve.rs (~700 lines). Refactor-afs
    had split lower.rs into 12 sub-modules under src/ir/lower/ and resolve.rs
    into 4 under src/sema/resolve/, so git's rename detection redirected
    trunk's edits to lower/core.rs and resolve/core.rs but they need
    manual routing into the post-extraction sub-modules.
    
    Resolved cleanly in this commit:
    - All auto-merged files (codegen/*, parser/*, runtime/*, sema/{amod,
      symtab,type_layout,types}.rs, tests/cli_driver.rs, .gitignore, afs-ld
      submodule)
    - HiddenResultAbi::ComplexBuffer variant ported into lower/ctx.rs
    - complex_result_kind helper ported into lower/core.rs
    - ComplexBuffer match arms in lower/core.rs and lower/unit.rs
    - UseAssociation gained from_bare_use field; all sites in
      resolve/{core,use_resolution}.rs now pass it correctly per trunk's
      bare-USE vs USE-ONLY semantics
    
    Deferred to follow-up commits (trunk's lower.rs and resolve.rs edits
    that need routing into sub-modules):
    - 22 cli_driver tests fail post-merge — each fails because the trunk
      feature it exercises lives in a function trunk edited in lower.rs
      but whose sub-module copy is unchanged. Per-feature ports follow.
    
    Lib tests: 1144/1144 pass. cli_driver: 553/575 pass.
    mfwolffe committed