Skip to content

Developer#179

Merged
Bappoz merged 121 commits into
masterfrom
developer
Jun 25, 2026
Merged

Developer#179
Bappoz merged 121 commits into
masterfrom
developer

Conversation

@Bappoz

@Bappoz Bappoz commented Jun 25, 2026

Copy link
Copy Markdown
Owner

ENVIANDO AS ATUALIZAÇÔES DO CRUSTY PARA A MASTER

HugoFreitass and others added 30 commits June 15, 2026 14:26
…timization-infrastructure

# Conflicts:
#	src/main.rs
…tructure

Feat(opt): adicionar infraestrutura de passes de otimização
feat(ir): adiciona infraestrutura inicial da representação intermediária TAC
Adds src/ir/cfg.rs implementing leader-based basic block
partitioning and successor/predecessor wiring from a
TacFunction, closes #25.
feat(ir): construir CFG a partir do TAC
HugoFreitass and others added 27 commits June 24, 2026 17:42
feat(examples): programa-demo para a apresentação final
test(e2e): bateria de testes ponta a ponta para os casos centrais da linguagem
feat: Suporte a arrays de tamanho fixo no pipeline C
…ables

Feat: integra fluxo de tratamento de variáveis globais
… TESTER

- README: atualiza tabela de estágios (codegen completo p/ tipos inteiros,
  ponteiros, structs, arrays, globais), documenta limitação de float/double
  (issue #172) e demais limitações conhecidas
- INSTALL.md: passo a passo de setup (rust, gcc, build, verificação)
- TESTER.md: catálogo de todas as suítes de teste (unitárias e e2e com
  arquivos .c reais via gcc), comandos de filtro, e status dos exemplos
  em src/examples/

Refs #162
docs: alinha README com estado real do compilador, adiciona INSTALL e TESTER
…do colaborador

A branch original (a4e4b25..381a4dc) nao compilava: o campo 'ty' foi
adicionado a TacInstr::{BinOp,UnOp,Copy,Return} mas varios call sites em
lower.rs, optimizations.rs, cfg.rs e nos modulos de teste nao foram
atualizados, e load_op/store_op em x86_64.rs ganharam o parametro 'ty' sem
que todos os chamadores fossem ajustados.

Correcoes e trabalho completado:
- lower.rs: tipo de cada expressao agora e inferido (literais, variaveis
  locais, aritmetica, cast) para popular 'ty' corretamente em vez de um
  valor fixo; cobre VarDecl, Assign, CompoundAssign, Ternary, prefix/postfix
  e Return.
- x86_64.rs: load_op/store_op passam a usar 'movsd' de fato para double
  (antes computavam 'mov_insn' mas ignoravam a variavel); corrige bug de
  comparacao double com mapeamento de setcc invertido (Less/Greater e
  Leq/Geq trocados — 'a < b' retornava falso e vice-versa); literal double
  usado em contexto nao-double (ex.: 'float', fora de escopo) agora produz
  erro de codegen claro em vez de assembly invalido.
- optimizations.rs/cfg.rs: matches exaustivos e construcoes ajustados para
  o novo campo.
- registra src/tests/tac_test.rs (existia mas nao estava no mod.rs).
- novo tests/double_codegen_test.rs: cobre o criterio de aceite da issue
  (double local + aritmetica + return, verificado via gcc), comparacoes
  double->int via exit code, e checagem do assembly emitido.

Escopo mantido conforme sugerido na issue: apenas 'double' (nao 'float'),
literais/variaveis locais/aritmetica basica/comparacoes/return. Argumentos,
parametros e retorno de double atraves de chamada feita pelo proprio
codegen permanecem fora de escopo (exigem estender abi.rs para xmm0..xmm7).

cargo build --all, cargo test --all (357 testes), cargo clippy -- -D
warnings e cargo fmt --check passam limpos.

Refs #172
…oat/double-support-in-codegen

# Conflicts:
#	src/codegen/last/x86_64.rs
#	src/ir/lower.rs
…t-in-codegen

fix(codegen): corrige e completa suporte a double (XMM)
@Bappoz Bappoz requested a review from guxvr June 25, 2026 02:28
@Bappoz Bappoz self-assigned this Jun 25, 2026
@Bappoz Bappoz merged commit 88069b4 into master Jun 25, 2026
2 checks passed
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.

5 participants