diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index 5423d60..78f6158 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -278,7 +278,8 @@
 
 Builder::AccessorInfo::~AccessorInfo() {}
 
-Builder::Builder(ast::Module* mod) : mod_(mod), scope_stack_({}) {}
+Builder::Builder(ast::Module* mod)
+    : mod_(mod), namer_(std::make_unique<UnsafeNamer>(mod)), scope_stack_({}) {}
 
 Builder::~Builder() = default;
 
@@ -539,7 +540,8 @@
   auto func_id = func_op.to_i();
 
   push_debug(spv::Op::OpName,
-             {Operand::Int(func_id), Operand::String(func->name())});
+             {Operand::Int(func_id),
+              Operand::String(namer_->NameFor(func->symbol()))});
 
   auto ret_id = GenerateTypeIfNeeded(func->return_type());
   if (ret_id == 0) {
@@ -564,7 +566,8 @@
     }
 
     push_debug(spv::Op::OpName,
-               {Operand::Int(param_id), Operand::String(param->name())});
+               {Operand::Int(param_id),
+                Operand::String(namer_->NameFor(param->symbol()))});
     params.push_back(Instruction{spv::Op::OpFunctionParameter,
                                  {Operand::Int(param_type_id), param_op}});
 
@@ -654,8 +657,9 @@
     return false;
   }
 
-  push_debug(spv::Op::OpName,
-             {Operand::Int(var_id), Operand::String(var->name())});
+  push_debug(
+      spv::Op::OpName,
+      {Operand::Int(var_id), Operand::String(namer_->NameFor(var->symbol()))});
 
   // TODO(dsinclair) We could detect if the constructor is fully const and emit
   // an initializer value for the variable instead of doing the OpLoad.
@@ -706,7 +710,8 @@
       return false;
     }
     push_debug(spv::Op::OpName,
-               {Operand::Int(init_id), Operand::String(var->name())});
+               {Operand::Int(init_id),
+                Operand::String(namer_->NameFor(var->symbol()))});
 
     scope_stack_.set_global(var->symbol(), init_id);
     spirv_id_to_variable_[init_id] = var;
@@ -726,8 +731,9 @@
     return false;
   }
 
-  push_debug(spv::Op::OpName,
-             {Operand::Int(var_id), Operand::String(var->name())});
+  push_debug(
+      spv::Op::OpName,
+      {Operand::Int(var_id), Operand::String(namer_->NameFor(var->symbol()))});
 
   auto* type = var->type()->UnwrapAll();
 
@@ -2784,7 +2790,8 @@
 
   if (!struct_type->name().empty()) {
     push_debug(spv::Op::OpName,
-               {Operand::Int(struct_id), Operand::String(struct_type->name())});
+               {Operand::Int(struct_id),
+                Operand::String(namer_->NameFor(struct_type->symbol()))});
   }
 
   OperandList ops;
diff --git a/src/writer/spirv/builder.h b/src/writer/spirv/builder.h
index aad13ba..451c961 100644
--- a/src/writer/spirv/builder.h
+++ b/src/writer/spirv/builder.h
@@ -16,6 +16,7 @@
 #define SRC_WRITER_SPIRV_BUILDER_H_
 
 #include <functional>
+#include <memory>
 #include <string>
 #include <unordered_map>
 #include <unordered_set>
@@ -51,6 +52,7 @@
 #include "src/ast/type_constructor_expression.h"
 #include "src/ast/unary_op_expression.h"
 #include "src/ast/variable_decl_statement.h"
+#include "src/namer.h"
 #include "src/scope_stack.h"
 #include "src/writer/spirv/function.h"
 #include "src/writer/spirv/instruction.h"
@@ -499,6 +501,7 @@
   }
 
   ast::Module* mod_;
+  std::unique_ptr<Namer> namer_;
   std::string error_;
   uint32_t next_id_ = 1;
   uint32_t current_label_id_ = 0;
