flang icon indicating copy to clipboard operation
flang copied to clipboard

loop metadata: add two more test cases and improve loop discovery

Open pawosm-arm opened this issue 3 years ago • 2 comments

Those two test cases were supposed to be contributed to PR #1094

Unfortunately, at that time, the -emit-flang-llvm flag was not supported by the frontend driver yet.

pawosm-arm avatar Jun 09 '22 09:06 pawosm-arm

Somehow downstream compiler is capable to find more loops than upstream. Downstream (grep br):

        br label %L.LB1_352
        br i1 %3, label %L.LB1_324, label %L.LB1_323, !llvm.loop !23, !dbg !21
        br i1 %13, label %L.LB1_323, label %L.LB1_324, !llvm.loop !27, !dbg !26
        br i1 %15, label %L.LB1_327, label %L.LB1_326, !llvm.loop !30, !dbg !28
        br i1 %25, label %L.LB1_326, label %L.LB1_327, !llvm.loop !32, !dbg !35
        br i1 %28, label %L.LB1_330, label %L.LB1_329, !llvm.loop !37, !dbg !36
        br i1 %38, label %L.LB1_329, label %L.LB1_330, !llvm.loop !40, !dbg !39
        br i1 %41, label %L.LB1_333, label %L.LB1_332, !llvm.loop !43, !dbg !42
        br i1 %51, label %L.LB1_332, label %L.LB1_333, !llvm.loop !46, !dbg !45
        br i1 %54, label %L.LB1_336, label %L.LB1_335, !llvm.loop !49, !dbg !48
        br i1 %64, label %L.LB1_335, label %L.LB1_336, !llvm.loop !52, !dbg !51
        br i1 %67, label %L.LB1_339, label %L.LB1_338, !llvm.loop !54, !dbg !53
        br i1 %77, label %L.LB1_338, label %L.LB1_339, !llvm.loop !57, !dbg !56
        br label %L.LB1_317
        br i1 %81, label %L.LB1_342, label %L.LB1_341, !llvm.loop !59, !dbg !58
        br i1 %91, label %L.LB1_341, label %L.LB1_342, !llvm.loop !61, !dbg !62
        br label %L.LB1_320
        br i1 %94, label %L.LB1_345, label %L.LB1_344, !dbg !63
        br i1 %104, label %L.LB1_344, label %L.LB1_345, !llvm.loop !67, !dbg !66
        br i1 %107, label %L.LB1_348, label %L.LB1_347, !llvm.loop !69, !dbg !68
        br i1 %117, label %L.LB1_347, label %L.LB1_348, !llvm.loop !71, !dbg !72

Upstream (grep br), see !36:

        br label %L.LB1_352
        br i1 %3, label %L.LB1_324, label %L.LB1_323, !llvm.loop !23, !dbg !21
        br i1 %13, label %L.LB1_323, label %L.LB1_324, !llvm.loop !27, !dbg !26
        br i1 %15, label %L.LB1_327, label %L.LB1_326, !llvm.loop !30, !dbg !28
        br i1 %25, label %L.LB1_326, label %L.LB1_327, !llvm.loop !32, !dbg !35
        br i1 %28, label %L.LB1_330, label %L.LB1_329, !dbg !36
        br i1 %38, label %L.LB1_329, label %L.LB1_330, !llvm.loop !40, !dbg !39
        br i1 %41, label %L.LB1_333, label %L.LB1_332, !llvm.loop !43, !dbg !42
        br i1 %51, label %L.LB1_332, label %L.LB1_333, !llvm.loop !46, !dbg !45
        br i1 %54, label %L.LB1_336, label %L.LB1_335, !llvm.loop !49, !dbg !48
        br i1 %64, label %L.LB1_335, label %L.LB1_336, !llvm.loop !52, !dbg !51
        br i1 %67, label %L.LB1_339, label %L.LB1_338, !llvm.loop !54, !dbg !53
        br i1 %77, label %L.LB1_338, label %L.LB1_339, !llvm.loop !57, !dbg !56
        br label %L.LB1_317
        br i1 %81, label %L.LB1_342, label %L.LB1_341, !llvm.loop !59, !dbg !58
        br i1 %91, label %L.LB1_341, label %L.LB1_342, !llvm.loop !61, !dbg !62
        br label %L.LB1_320
        br i1 %94, label %L.LB1_345, label %L.LB1_344, !dbg !63
        br i1 %104, label %L.LB1_344, label %L.LB1_345, !llvm.loop !67, !dbg !66
        br i1 %107, label %L.LB1_348, label %L.LB1_347, !llvm.loop !69, !dbg !68
        br i1 %117, label %L.LB1_347, label %L.LB1_348, !llvm.loop !71, !dbg !72

~Will be investigated later, PR frozen until then.~

pawosm-arm avatar Jun 09 '22 12:06 pawosm-arm

I've added a small code change which mitigates the problem

pawosm-arm avatar Jun 09 '22 13:06 pawosm-arm

I suspect cgmain changes aren't needed after rebase

pawosm-arm avatar Oct 18 '23 12:10 pawosm-arm

These test cases are wrongly designed. With too many CHECK-DAG, the right occurrence of !llvm.loop is impossible to be found reliably (namely, a slight change in LLVM middle-end will break these test cases again). Therefore it's not worth to have them.

pawosm-arm avatar Oct 18 '23 18:10 pawosm-arm