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)
// 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;
+ else if (v->m_name[0] != '#'
+ && irwarning(v->m_context, WARN_UNUSED_VARIABLE,
+ "unused variable: `%s`", v->m_name.c_str())) return false;
}
}