File tree 1 file changed +7
-7
lines changed
compiler/noirc_evaluator/src/ssa/opt
1 file changed +7
-7
lines changed Original file line number Diff line number Diff line change @@ -286,19 +286,19 @@ impl<'f> PerFunctionContext<'f> {
286
286
} else {
287
287
references. mark_value_used ( address, self . inserter . function ) ;
288
288
289
- let expression = if let Some ( expression) = references. expressions . get ( & result) {
290
- expression. clone ( )
291
- } else {
292
- references. expressions . insert ( result, Expression :: Other ( result) ) ;
293
- Expression :: Other ( result)
294
- } ;
295
- if let Some ( aliases) = references. aliases . get_mut ( & expression) {
289
+ let expression =
290
+ references. expressions . entry ( result) . or_insert ( Expression :: Other ( result) ) ;
291
+ // Make sure this load result is marked an alias to itself
292
+ if let Some ( aliases) = references. aliases . get_mut ( expression) {
293
+ // If we have an alias set, add to the set
296
294
aliases. insert ( result) ;
297
295
} else {
296
+ // Otherwise, create a new alias set containing just the load result
298
297
references
299
298
. aliases
300
299
. insert ( Expression :: Other ( result) , AliasSet :: known ( result) ) ;
301
300
}
301
+ // Mark that we know a load result is equivalent to the address of a load.
302
302
references. set_known_value ( result, address) ;
303
303
304
304
self . last_loads . insert ( address, ( instruction, block_id) ) ;
You can’t perform that action at this time.
0 commit comments