diff --git a/hercules_cg/src/cpu.rs b/hercules_cg/src/cpu.rs
index 8dfe06e7443372d45214a886d7e1b46d78545ab0..85139b4c573c2287169715599336bd5b2146e8be 100644
--- a/hercules_cg/src/cpu.rs
+++ b/hercules_cg/src/cpu.rs
@@ -536,6 +536,17 @@ impl<'a> CPUContext<'a> {
                     self.get_value(collect, true)
                 )?;
             }
+            Node::Undef { ty } => {
+                let body = &mut blocks.get_mut(&self.bbs.0[id.idx()]).unwrap().body;
+                let ty = self.get_type(ty);
+                write!(
+                    body,
+                    "  {} = bitcast {} undef to {}\n",
+                    self.get_value(id, false),
+                    ty,
+                    ty
+                )?;
+            }
             _ => panic!("PANIC: Can't lower {:?}.", self.function.nodes[id.idx()]),
         }
         Ok(())