aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp25
1 files changed, 3 insertions, 22 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 123a38cac..a3786266b 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2575,37 +2575,18 @@ void lb_end_procedure_body(lbProcedure *p) {
}
}
- LLVMBasicBlockRef block = nullptr;
LLVMBasicBlockRef first_block = LLVMGetFirstBasicBlock(p->value);
-
- // Remove dead blocks with no code
- for (block = first_block;
- block != nullptr;
- /**/) {
- LLVMBasicBlockRef next_block = LLVMGetNextBasicBlock(block);
- LLVMValueRef instr = LLVMGetLastInstruction(block);
- if (instr == nullptr) {
- LLVMDeleteBasicBlock(block);
- }
- block = next_block;
- }
-
+ LLVMBasicBlockRef block = nullptr;
// Make sure every block terminates, and if not, make it unreachable
- for (block = first_block;
- block != nullptr;
- block = LLVMGetNextBasicBlock(block)) {
+ for (block = first_block; block != nullptr; block = LLVMGetNextBasicBlock(block)) {
LLVMValueRef instr = LLVMGetLastInstruction(block);
- if (!lb_is_instr_terminating(instr)) {
- // NOTE(bill): This is a sanity check
- LLVMBasicBlockRef prev_block = block;
+ if (instr == nullptr) {
LLVMPositionBuilderAtEnd(p->builder, block);
LLVMBuildUnreachable(p->builder);
- LLVMPositionBuilderAtEnd(p->builder, prev_block);
}
}
-
p->curr_block = nullptr;
p->module->state_flags = 0;
}