@@ -279,18 +279,18 @@ func.func @distinct_objects(%arg: memref<?xf32>, %arg1: memref<?xf32>) attribute
279279
280280// The current LocalAliasAnalysis algortithm is quite conservative
281281// about differentiating PartialAlias and MustAlias, and it often
282- // returns PartialAlias for MustAlias situations.
283-
284- // These are the PartialAlias cases, where LocalAliasAnalysis
285- // used to incorrectly return MustAlias:
286- // CHECK-DAG: view_with_offset#0 <-> func.region0#0: PartialAlias
287- // CHECK-DAG: complete_view1#0 <-> func.region0#0: PartialAlias
288- // CHECK-DAG: complete_view2#0 <-> func.region0#0: PartialAlias
289-
290- // TODO: these are the MustAlias cases, where PartialAlias is returned currently:
291- // CHECK-DAG: view_with_offset#0 <-> complete_view1#0: PartialAlias
292- // CHECK-DAG: view_with_offset#0 <-> complete_view2#0: PartialAlias
293- // CHECK-DAG: complete_view1#0 <-> complete_view2#0: PartialAlias
282+ // returns MayAlias for PartialAlias/ MustAlias situations.
283+
284+ // These are the PartialAlias cases (reported as MayAlias),
285+ // where LocalAliasAnalysis used to incorrectly return MustAlias:
286+ // CHECK-DAG: view_with_offset#0 <-> func.region0#0: MayAlias
287+ // CHECK-DAG: complete_view1#0 <-> func.region0#0: MayAlias
288+ // CHECK-DAG: complete_view2#0 <-> func.region0#0: MayAlias
289+
290+ // These are the MustAlias cases, where MayAlias is returned currently:
291+ // CHECK-DAG: view_with_offset#0 <-> complete_view1#0: MayAlias
292+ // CHECK-DAG: view_with_offset#0 <-> complete_view2#0: MayAlias
293+ // CHECK-DAG: complete_view1#0 <-> complete_view2#0: MayAlias
294294func.func @view_like_offset (%arg: memref <?xi8 >) attributes {test.ptr = " func" } {
295295 %c0 = arith.constant 0 : index
296296 %c1 = arith.constant 1 : index
@@ -304,27 +304,30 @@ func.func @view_like_offset(%arg: memref<?xi8>) attributes {test.ptr = "func"} {
304304
305305// CHECK-LABEL: Testing : "view_like_offset_with_cfg1"
306306
307- // These are the PartialAlias cases, where LocalAliasAnalysis
308- // used to incorrectly return MustAlias:
309- // CHECK-DAG: complete_view_if#0 <-> view_with_offset#0: PartialAlias
310- // CHECK-DAG: view_with_offset#0 <-> if_view#0: PartialAlias
311- // CHECK-DAG: view_with_offset#0 <-> complete_view1#0: PartialAlias
312- // CHECK-DAG: view_with_offset#0 <-> complete_view2#0: PartialAlias
313- // CHECK-DAG: view_with_offset#0 <-> func.region0#0: PartialAlias
307+ // These are the PartialAlias cases (reported as MayAlias),
308+ // where LocalAliasAnalysis used to incorrectly return MustAlias:
309+ // CHECK-DAG: complete_view_if#0 <-> view_with_offset#0: MayAlias
310+ // CHECK-DAG: view_with_offset#0 <-> if_view#0: MayAlias
311+ // CHECK-DAG: view_with_offset#0 <-> complete_view1#0: MayAlias
312+ // CHECK-DAG: view_with_offset#0 <-> complete_view2#0: MayAlias
313+ // CHECK-DAG: view_with_offset#0 <-> func.region0#0: MayAlias
314314
315315// These are correctly classified as MustAlias:
316- // CHECK-DAG: if_view#0 <-> complete_view1#0: MustAlias
317- // CHECK-DAG: if_view#0 <-> complete_view2#0: MustAlias
318- // CHECK-DAG: complete_view1#0 <-> complete_view2#0: MustAlias
319316// CHECK-DAG: complete_view_if#0 <-> func.region0#0: MustAlias
320317
321- // TODO: these should be either PartialAlias or MayAlias:
322- // CHECK-DAG: complete_view_if#0 <-> if_view#0: MustAlias
323- // CHECK-DAG: complete_view_if#0 <-> complete_view1#0: MustAlias
324- // CHECK-DAG: complete_view_if#0 <-> complete_view2#0: MustAlias
325- // CHECK-DAG: if_view#0 <-> func.region0#0: MustAlias
326- // CHECK-DAG: complete_view1#0 <-> func.region0#0: MustAlias
327- // CHECK-DAG: complete_view2#0 <-> func.region0#0: MustAlias
318+ // TODO: these must be MustAlias:
319+ // CHECK-DAG: if_view#0 <-> complete_view1#0: MayAlias
320+ // CHECK-DAG: if_view#0 <-> complete_view2#0: MayAlias
321+ // CHECK-DAG: complete_view1#0 <-> complete_view2#0: MayAlias
322+
323+ // These should be MayAlias, because the references are either
324+ // MustAlias or PartialAlias depending on the runtime condition:
325+ // CHECK-DAG: complete_view_if#0 <-> if_view#0: MayAlias
326+ // CHECK-DAG: complete_view_if#0 <-> complete_view1#0: MayAlias
327+ // CHECK-DAG: complete_view_if#0 <-> complete_view2#0: MayAlias
328+ // CHECK-DAG: if_view#0 <-> func.region0#0: MayAlias
329+ // CHECK-DAG: complete_view1#0 <-> func.region0#0: MayAlias
330+ // CHECK-DAG: complete_view2#0 <-> func.region0#0: MayAlias
328331func.func @view_like_offset_with_cfg1 (%arg: memref <?xi8 >, %cond: i1 ) attributes {test.ptr = " func" } {
329332 %c0 = arith.constant 0 : index
330333 %c1 = arith.constant 1 : index
@@ -346,30 +349,33 @@ func.func @view_like_offset_with_cfg1(%arg: memref<?xi8>, %cond: i1) attributes
346349
347350// This test is a different version of view_like_offset_with_cfg1:
348351// the then and else clauses are swapped, and this affects
349- // the visiting order causing different PartialAlias vs MustAlias
350- // reports.
351-
352- // These are the PartialAlias cases, where LocalAliasAnalysis
353- // used to incorrectly return MustAlias:
354- // CHECK-DAG: view_with_offset#0 <-> complete_view_if#0: PartialAlias
355- // CHECK-DAG: view_with_offset#0 <-> if_view#0: PartialAlias
356- // CHECK-DAG: complete_view_if#0 <-> if_view#0: PartialAlias
357- // CHECK-DAG: view_with_offset#0 <-> complete_view1#0: PartialAlias
358- // CHECK-DAG: complete_view_if#0 <-> complete_view1#0: PartialAlias
359- // CHECK-DAG: view_with_offset#0 <-> complete_view2#0: PartialAlias
360- // CHECK-DAG: complete_view_if#0 <-> complete_view2#0: PartialAlias
361- // CHECK-DAG: view_with_offset#0 <-> func.region0#0: PartialAlias
362- // CHECK-DAG: if_view#0 <-> func.region0#0: PartialAlias
363- // CHECK-DAG: complete_view1#0 <-> func.region0#0: PartialAlias
364- // CHECK-DAG: complete_view2#0 <-> func.region0#0: PartialAlias
352+ // the visiting order. The two tests check that the visiting
353+ // order does not matter.
354+
355+ // These are the PartialAlias cases (reported as MayAlias),
356+ // where LocalAliasAnalysis used to incorrectly return MustAlias:
357+ // CHECK-DAG: view_with_offset#0 <-> complete_view_if#0: MayAlias
358+ // CHECK-DAG: view_with_offset#0 <-> if_view#0: MayAlias
359+ // CHECK-DAG: view_with_offset#0 <-> complete_view1#0: MayAlias
360+ // CHECK-DAG: if_view#0 <-> func.region0#0: MayAlias
365361
366362// These are correctly classified as MustAlias:
367363// CHECK-DAG: complete_view_if#0 <-> func.region0#0: MustAlias
368364
369- // TODO: these are the MustAlias cases, where PartialAlias is returned currently:
370- // CHECK-DAG: if_view#0 <-> complete_view1#0: PartialAlias
371- // CHECK-DAG: if_view#0 <-> complete_view2#0: PartialAlias
372- // CHECK-DAG: complete_view1#0 <-> complete_view2#0: PartialAlias
365+ // TODO: these must be MustAlias:
366+ // CHECK-DAG: if_view#0 <-> complete_view1#0: MayAlias
367+ // CHECK-DAG: if_view#0 <-> complete_view2#0: MayAlias
368+ // CHECK-DAG: complete_view1#0 <-> complete_view2#0: MayAlias
369+
370+ // These should be MayAlias, because the references are either
371+ // MustAlias or PartialAlias depending on the runtime condition:
372+ // CHECK-DAG: complete_view_if#0 <-> if_view#0: MayAlias
373+ // CHECK-DAG: complete_view_if#0 <-> complete_view1#0: MayAlias
374+ // CHECK-DAG: view_with_offset#0 <-> complete_view2#0: MayAlias
375+ // CHECK-DAG: complete_view_if#0 <-> complete_view2#0: MayAlias
376+ // CHECK-DAG: view_with_offset#0 <-> func.region0#0: MayAlias
377+ // CHECK-DAG: complete_view1#0 <-> func.region0#0: MayAlias
378+ // CHECK-DAG: complete_view2#0 <-> func.region0#0: MayAlias
373379func.func @view_like_offset_with_cfg2 (%arg: memref <?xi8 >, %cond: i1 ) attributes {test.ptr = " func" } {
374380 %c0 = arith.constant 0 : index
375381 %c1 = arith.constant 1 : index
0 commit comments