brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · a257d6b Raw
51 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; REQUIRES: asserts3; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -passes='require<domtree>,loop(loop-simplifycfg)' -debug-only=loop-simplifycfg -verify-loop-info -verify-dom-info -verify-loop-lcssa 2>&1 < %s | FileCheck %s4; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -passes=loop-simplifycfg -verify-memoryssa -debug-only=loop-simplifycfg -verify-loop-info -verify-dom-info -verify-loop-lcssa 2>&1 < %s | FileCheck %s5 6target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1"7 8; This test has irreducible CFG, and RPO may be the following:9; Header, Dead, Irreducible2, Latch, Irreducible3, Irreducible1.10; As result, we will process Irreducible2 before its predecessor Irreducible1.11; The current algorithm gets confused in this case. We may support irreducible12; CFG in the future.13define void @irreducible_cfg(i1 %cond) {14; CHECK-LABEL: @irreducible_cfg(15; CHECK-NEXT:  entry:16; CHECK-NEXT:    br label [[HEADER:%.*]]17; CHECK:       header:18; CHECK-NEXT:    br i1 false, label [[DEAD:%.*]], label [[IRREDUCIBLE1:%.*]]19; CHECK:       dead:20; CHECK-NEXT:    br label [[IRREDUCIBLE2:%.*]]21; CHECK:       irreducible2:22; CHECK-NEXT:    br i1 [[COND:%.*]], label [[LATCH:%.*]], label [[IRREDUCIBLE3:%.*]]23; CHECK:       latch:24; CHECK-NEXT:    br label [[HEADER]]25; CHECK:       irreducible3:26; CHECK-NEXT:    br label [[IRREDUCIBLE1]]27; CHECK:       irreducible1:28; CHECK-NEXT:    br label [[IRREDUCIBLE2]]29;30entry:31  br label %header32 33header:                                             ; preds = %latch, %entry34  br i1 false, label %dead, label %irreducible135 36dead:                                          ; preds = %header37  br label %irreducible238 39irreducible2:                                             ; preds = %irreducible1, %dead40  br i1 %cond, label %latch, label %irreducible341 42latch:                                         ; preds = %irreducible243  br label %header44 45irreducible3:                                           ; preds = %irreducible246  br label %irreducible147 48irreducible1:                                          ; preds = %irreducible3, %header49  br label %irreducible250}51