]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ir.cpp
Fix #171
[xonotic/gmqcc.git] / ir.cpp
diff --git a/ir.cpp b/ir.cpp
index 76d9db3d57b15cf5dad83b494dfe21d9ee8286a3..51aab91f1c184366182729026863d6e4c745c6ca 100644 (file)
--- a/ir.cpp
+++ b/ir.cpp
@@ -631,6 +631,13 @@ bool ir_function_finalize(ir_function *self)
     if (self->m_builtin)
         return true;
 
+    for (auto& lp : self->m_locals) {
+        ir_value *v = lp.get();
+        if (v->m_reads.empty() && v->m_writes.size()
+            && irwarning(v->m_context, WARN_UNUSED_VARIABLE,
+                        "unused variable: `%s`", v->m_name.c_str())) return false;
+    }
+
     if (OPTS_OPTIMIZATION(OPTIM_PEEPHOLE)) {
         if (!ir_function_pass_peephole(self)) {
             irerror(self->m_context, "generic optimization pass broke something in `%s`", self->m_name.c_str());
@@ -914,7 +921,7 @@ ir_value* ir_value::vectorMember(unsigned int member)
         m = new ir_value(move(name), m_store, TYPE_FIELD);
         if (!m)
             return nullptr;
-        m->m_fieldtype = TYPE_VECTOR;
+        m->m_fieldtype = TYPE_FLOAT;
         m->m_context = m_context;
 
         m_members[member] = m;