X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=ir.cpp;h=6f06bdf95e23312cb1a52cddacd99ecf8e2bc161;hb=a5636899f24251bf08125c99b14b16030f978d4f;hp=d6a54932473b0e5df5f163ed4b8c82d6b457cbcd;hpb=eab20602b1a11b9f989a8d73460e3ccfb7c173e9;p=xonotic%2Fgmqcc.git diff --git a/ir.cpp b/ir.cpp index d6a5493..6f06bdf 100644 --- a/ir.cpp +++ b/ir.cpp @@ -633,12 +633,12 @@ bool ir_function_finalize(ir_function *self) for (auto& lp : self->m_locals) { ir_value *v = lp.get(); - if (v->m_reads.empty() && v->m_writes.size()) { + if (v->m_reads.empty() && v->m_writes.size() && !(v->m_flags & IR_FLAG_NOREF)) { // if it's a vector check to ensure all it's members are unused before // claiming it's unused, otherwise skip the vector entierly if (v->m_vtype == TYPE_VECTOR) { - size_t mask = (1 << 0) | (1 << 1) | (1 << 2), bits = 0; + size_t mask = (1 << 3) - 1, bits = 0; for (size_t i = 0; i < 3; i++) if (!v->m_members[i] || (v->m_members[i]->m_reads.empty() && v->m_members[i]->m_writes.size())) @@ -651,13 +651,13 @@ bool ir_function_finalize(ir_function *self) // individual components are unused so mention them for (size_t i = 0; i < 3; i++) if ((bits & (1 << i)) - && irwarning(v->m_context, WARN_UNUSED_VARIABLE, - "unused variable: `%s.%c`", v->m_name.c_str(), "xyz"[i])) + && irwarning(v->m_context, WARN_UNUSED_COMPONENT, + "unused vector component: `%s.%c`", v->m_name.c_str(), "xyz"[i])) return false; } // just a standard variable else if (irwarning(v->m_context, WARN_UNUSED_VARIABLE, - "unused variable: `%s`", v->m_name.c_str())) return false; + "unused variable: `%s`", v->m_name.c_str())) return false; } }