@@ -145,12 +145,24 @@ impl Print {
145
145
}
146
146
}
147
147
148
- fn should_print ( & self , pass : & dyn OperationPass ) -> bool {
148
+ fn pass_filter ( & self , pass : & dyn OperationPass ) -> bool {
149
149
match & self . pass_filter {
150
150
PassFilter :: All => true ,
151
151
PassFilter :: Certain ( passes) => passes. iter ( ) . any ( |p| p == pass. name ( ) ) ,
152
152
}
153
153
}
154
+
155
+ fn should_print ( & self , pass : & dyn OperationPass , ir_changed : IRAfterPass ) -> bool {
156
+ let pass_filter = self . pass_filter ( pass) ;
157
+
158
+ // Always print, unless "only_when_modified" has been set and there have not been changes.
159
+ let modification_filter = match ( ir_changed, self . only_when_modified ) {
160
+ ( IRAfterPass :: Unchanged , true ) => false ,
161
+ _ => true ,
162
+ } ;
163
+
164
+ pass_filter && modification_filter
165
+ }
154
166
}
155
167
156
168
impl PassInstrumentation for Print {
@@ -160,20 +172,14 @@ impl PassInstrumentation for Print {
160
172
op : & OperationRef ,
161
173
changed : IRAfterPass ,
162
174
) {
163
- // Always print, unless "only_when_modified" has been set and there have not been changes.
164
- let print_when_changed = if self . only_when_modified && changed == IRAfterPass :: Unchanged {
165
- false
166
- } else {
167
- true
168
- } ;
169
- if self . should_print ( pass) && print_when_changed {
175
+ if self . should_print ( pass, changed) {
170
176
let op = op. borrow ( ) ;
171
177
self . print_ir ( op) ;
172
178
}
173
179
}
174
180
175
181
fn run_before_pass ( & mut self , pass : & dyn OperationPass , op : & OperationRef ) {
176
- if self . should_print ( pass) {
182
+ if self . pass_filter ( pass) {
177
183
let op = op. borrow ( ) ;
178
184
self . print_ir ( op) ;
179
185
}
0 commit comments