From 562e3c1e463bb52146bcf8010b397f74e21a2376 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Sun, 19 Aug 2012 21:35:45 -0700 Subject: [PATCH] Fix: if-else branch should terminate automatically. Insert unreachable to if.end block if necessary. --- builder.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/builder.py b/builder.py index fc4baa3..7a6ed32 100644 --- a/builder.py +++ b/builder.py @@ -97,11 +97,15 @@ class _IfElse(object): self._to_close.append(self.parent.builder.basic_block) bbend = self.parent.function.append_basic_block('if.end') builder = self.parent.builder + closed_count = 0 for bb in self._to_close: if not _is_block_terminated(bb): with _change_block_temporarily(builder, bb): builder.branch(bbend) + closed_count += 1 builder.position_at_end(bbend) + if not closed_count: + self.parent.unreachable() class _Loop(object): '''while...do loop.