1. 14 Aug, 2022 8 commits
  2. 13 Aug, 2022 16 commits
  3. 12 Aug, 2022 2 commits
  4. 11 Aug, 2022 6 commits
  5. 10 Aug, 2022 2 commits
  6. 09 Aug, 2022 6 commits
    • Sora Shu's avatar
      backend: 重构寄存器分配步骤 · 66b1b0de
      Sora Shu authored
      66b1b0de
    • Sora Shu's avatar
      backend: 重构寄存器分配 · 9ac4a14f
      Sora Shu authored
      部分变量内联, 部分流重写遍历
      9ac4a14f
    • 萝杨空队-梁韬's avatar
      loop: fix: 修复了一大堆循环检测 bug, 循环检测与正规化调试完成 · 25649f1f
      萝杨空队-梁韬 authored
      1. 修复了当循环只有一个块时 (同时充当 header 与 latch) 的不正确处理. 现在这种情况会手动将该块拆分, 形成一个 rotated loop
      2. 修复了同一个函数多次内联到另一个函数时, pre_header 与 latch 可能重名的问题
      3. 修复了复用 pre-header/latch 块时, 有可能重复往该块添加 Br 指令的问题
      4. 修复了 pre-header/latch 块没有加入到上层循环 body 中的问题
      5. 修复了对形如 while (1) 之类的循环的错误处理. 此类循环的特点是: header 与 latch 均无 BrCond, 有可能有多个退出节点 (常见 if (xxx) return 0 的形式). 同时据此更新了 verify 中验证 cond 的方法, 加入了对 MultiExit 的支持
      6. 严格化了复用 pre-header/latch 的条件: 必须是 header 中对应的前继只有一个, 且其后继只有 header 的时候才能复用
      7. 修复了当循环嵌套时, 内层循环循环体有可能不在外层循环的 latch 前继闭包中的问题
      25649f1f
    • 萝杨空队-梁韬's avatar
      loop: fix: 修复了直接跳转消除的一个 bug · 87ca5884
      萝杨空队-梁韬 authored
      如果 A -> B -> C 且 A -> C, 那么说明这个控制流会起到一个条件选择的作用
      
      这时候就不能直接合并它, 因为有可能在 C 开头会有 phi 借助控制流来求一个运行时根据条件才能确定的值
      87ca5884
    • 萝杨空队-梁韬's avatar
      opt: fix: 修复了一些 bug · 160b4737
      萝杨空队-梁韬 authored
      1. 修复了函数内联之后基本块的前继顺序有可能与原函数中的顺序不同, 从而导致 phi 指令 incoming 配对错误的问题
      2. 修复了 MemCache.copyFrom 只使用浅复制, 导致一些 MemPosHandler 被意外复用的情况
      160b4737
    • 萝杨空队-梁韬's avatar
      loop: fix: 修复了一些 bug · b21a9589
      萝杨空队-梁韬 authored
      1. 明确了 body 的定义 (latch 也属于 body) 并更正了对应 verify 的实现
      2. 将错误移动到 CollectionTools 中的方法移回来
      3. 修复了忘记将 justLoop.body 中的块加入到 canonicalLoop 中的错误
      4. 修复了 canonicalLoop 构造完成后忘记调用 verify 进行检查的错误
      5. 修复了新构造的 pre-header/latch 块没有加入 br 指令的错误
      6. 修复了没有将获取到的 justLoop 加入到返回值中的错误
      7. 修复了获取循环 body 时有可能将 header 的外部前继加入到循环体中的错误
      b21a9589