diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index cdede223de62aa513707fe078169001e7aa863f1..d672991a81befdee1775770a9805bf1cacd3f3aa 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -857,7 +857,8 @@ def parse_instructions(instructions, defines):
         if insn == "end":
             obj = insn_options_stack.pop()
             #if this object is the end of an if statement
-            if obj['predicates'] == if_predicates_stack[-1]["insn_predicates"]:
+            if obj['predicates'] == if_predicates_stack[-1]["insn_predicates"] and\
+                if_predicates_stack[-1]:
                 if_predicates_stack.pop()
             continue