# stage2: implement \`anyframe\`, \`anyframe\-\>T\` and fix assembly · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/b40a8efb9a72e69cd7e9061fc4c08d5e705b0fbd)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: b40a8efb9a72e69cd7e9061fc4c08d5e705b0fbd

Requested commit: b40a8efb9a72e69cd7e9061fc4c08d5e705b0fbd

Commit: b40a8efb9a72e69cd7e9061fc4c08d5e705b0fbd

Tree: b62377262318b6f6d76a0b75d43dff106e553a2f

Author: Andrew Kelley

Committer: Andrew Kelley

## Message

```
stage2: implement `anyframe`, `anyframe->T` and fix assembly

 * AstGen: implement `anyframe_literal` and `anyframe_type`.
 * Introduce `makeSubBlock` to avoid redundant AstGen code for GenZir
   scopes. Allows adding/removing a field without possibility of
   accidentally introducing a bug of forgetting to set the new field.
 * Add to GenZir `nosuspend_node` and `suspend_node` in preparation for
   implementing `suspend` blocks and `nosuspend` blocks.
 * AstGen: fix assembly to support clobbers, multiple outputs, and
   outputs without `->` syntax.
   - `asm` and `asm_volatile` move to `Extended` enum with `small` being
     repurposed for a few things. This frees up 2 ZIR tags, 1 of which
     is used in this commit and 1 is leftover.
 * AstGen: fix `simple_types` incorrectly having multiple conflicting
   values for "undefined" and "null".
   - Also add "anyframe" to `simple_types`.
 * Add `anyframe_type` to type.zig, value.zig and `Zir.Inst.Ref`.
   - Also add i128 and u128 types to `Zir.Inst.Ref` and `simple_types`.
 * Sema/Zir: Fix incorrect math causing the function body to be messed
   up for Extended-encoded functions.
 * Zir: support `i32` fields for "extra" payloads.

```

## Parents

- [183ee0965fac6322651666834776d9832cc95ddd](https://git.cafe/gitcafe/zig/commit/183ee0965fac6322651666834776d9832cc95ddd?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/b40a8efb9a72e69cd7e9061fc4c08d5e705b0fbd?format=markdown)
