*/
void
-nir_metadata_require(nir_function_impl *impl, nir_metadata required)
+nir_metadata_require(nir_function_impl *impl, nir_metadata required, ...)
{
#define NEEDS_UPDATE(X) ((required & ~impl->valid_metadata) & (X))
nir_calc_dominance_impl(impl);
if (NEEDS_UPDATE(nir_metadata_live_ssa_defs))
nir_live_ssa_defs_impl(impl);
+ if (NEEDS_UPDATE(nir_metadata_loop_analysis)) {
+ va_list ap;
+ va_start(ap, required);
+ nir_loop_analyze_impl(impl, va_arg(ap, nir_variable_mode));
+ va_end(ap);
+ }
#undef NEEDS_UPDATE
impl->valid_metadata &= preserved;
}
-#ifdef DEBUG
+void
+nir_shader_preserve_all_metadata(nir_shader *shader)
+{
+ nir_foreach_function(function, shader) {
+ if (function->impl)
+ nir_metadata_preserve(function->impl, nir_metadata_all);
+ }
+}
+
+#ifndef NDEBUG
/**
* Make sure passes properly invalidate metadata (part 1).
*