From e575826c287f0dd0afeb1b9c6c8db45fb44c8d26 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 22 Oct 2026 03:24:18 +0000 Subject: refactor(codegen): remove dead code in type system and runtime checks Drop the unused TypeInfo::isNumeric, pass emitCheck's format arguments straight to emitStderr, remove unused / includes and turn always-true trailing operator tests in ArithmeticHandler into plain returns. Co-Authored-By: Claude Opus 5.5 --- lib/CodeGen/ArithmeticHandler.cc | 5 ++--- lib/CodeGen/NativeTypeSystem.cc | 1 - lib/CodeGen/RuntimeCheck.cc | 5 +---- lib/CodeGen/TypeSystem.cc | 5 ----- 4 files changed, 3 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/CodeGen/ArithmeticHandler.cc b/lib/CodeGen/ArithmeticHandler.cc index 480c963..6c7a7ff 100644 --- a/lib/CodeGen/ArithmeticHandler.cc +++ b/lib/CodeGen/ArithmeticHandler.cc @@ -2,7 +2,6 @@ #include "cps/ArithmeticHandler.h" #include "cps/Lexer.h" #include "cps/RuntimeCheck.h" -#include using namespace llvm; using namespace cps; @@ -46,7 +45,7 @@ Value *ArithmeticHandler::emitBinaryOp(int Op, Value *LHS, Value *RHS, int Line) } RuntimeChecker.emitDivZeroCheck(RHS, Line); if (Op == tok_div) return Builder.CreateSDiv(LHS, RHS, "div_int_tmp"); - if (Op == tok_mod) return Builder.CreateSRem(LHS, RHS, "mod_tmp"); + return Builder.CreateSRem(LHS, RHS, "mod_tmp"); } if (Op == tok_and || Op == tok_or) { @@ -64,7 +63,7 @@ Value *ArithmeticHandler::emitBinaryOp(int Op, Value *LHS, Value *RHS, int Line) R = Builder.CreateFCmpONE(R, ConstantFP::get(Context, APFloat(0.0)), "tobool"); if (Op == tok_and) return Builder.CreateAnd(L, R, "andtmp"); - if (Op == tok_or) return Builder.CreateOr(L, R, "ortmp"); + return Builder.CreateOr(L, R, "ortmp"); } if (LIsDouble || RIsDouble) { diff --git a/lib/CodeGen/NativeTypeSystem.cc b/lib/CodeGen/NativeTypeSystem.cc index 7accda7..d5d1c93 100644 --- a/lib/CodeGen/NativeTypeSystem.cc +++ b/lib/CodeGen/NativeTypeSystem.cc @@ -4,7 +4,6 @@ #include #include #include -#include using namespace llvm; using namespace cps; diff --git a/lib/CodeGen/RuntimeCheck.cc b/lib/CodeGen/RuntimeCheck.cc index 4cee16f..e15c10b 100644 --- a/lib/CodeGen/RuntimeCheck.cc +++ b/lib/CodeGen/RuntimeCheck.cc @@ -77,10 +77,7 @@ void RuntimeCheck::emitCheck(Value *Condition, Value *Msg, ArrayRef Fmt Builder.CreateCondBr(Condition, FailBB, ContBB); Builder.SetInsertPoint(FailBB); - std::vector PrintArgs; - PrintArgs.push_back(Msg); - PrintArgs.insert(PrintArgs.end(), FmtArgs.begin(), FmtArgs.end()); - emitStderr(Msg, ArrayRef(PrintArgs).drop_front()); + emitStderr(Msg, FmtArgs); Exceptions.emitThrow(); diff --git a/lib/CodeGen/TypeSystem.cc b/lib/CodeGen/TypeSystem.cc index c5db1eb..7763d35 100644 --- a/lib/CodeGen/TypeSystem.cc +++ b/lib/CodeGen/TypeSystem.cc @@ -22,11 +22,6 @@ const RecordFieldInfo *RecordPayload::findField(const std::string &Name) const { return nullptr; } -bool TypeInfo::isNumeric() const { - return Kind == TypeKind::Integer || Kind == TypeKind::Real || - (Kind == TypeKind::CScalar && !isVoid()); -} - bool TypeInfo::isIntegral() const { return Kind == TypeKind::Integer || Kind == TypeKind::Char || (Kind == TypeKind::CScalar && LLVMType->isIntegerTy()); -- cgit v1.3.1-4-g156e