[llvm-bugs] [Bug 41285] New: loop-extract-single: Instruction does not dominate all uses!

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Mar 28 18:27:18 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=41285

            Bug ID: 41285
           Summary: loop-extract-single: Instruction does not dominate all
                    uses!
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: cszide at 163.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 21692
  --> https://bugs.llvm.org/attachment.cgi?id=21692&action=edit
IR file of testcase

$clang -v
clang version 9.0.0 (trunk 355281)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/jack-zhou/Documents/llvm/llvm_truck/llvm/build4/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.3.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.3.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64

$opt -loop-extract-single bugpoint-reduced-simplified.ll
Instruction does not dominate all uses!
  %0 = alloca [5 x i8], align 1
  %.0.sroa_idx.us = getelementptr inbounds [5 x i8], [5 x i8]* %0, i64 0, i64 0
in function d
LLVM ERROR: Broken function found, compilation aborted!

----------------------------------------------------------
define dso_local void @d() #0 {
  %1 = alloca [5 x i8], align 1
  %.0.sroa_idx = getelementptr inbounds [5 x i8], [5 x i8]* %1, i64 0, i64 0
  %.0.sroa_idx.us = getelementptr inbounds [5 x i8], [5 x i8]* %1, i64 0, i64 0
  br label %2

; <label>:2:                                      ; preds = %Flow21, %0
  br i1 false, label %.split.us, label %..split_crit_edge

..split_crit_edge:                                ; preds = %2
  br label %.split

.split.us:                                        ; preds = %2
  br i1 undef, label %.split.us.split.us, label
%.split.us..split.us.split_crit_edge

.split.us..split.us.split_crit_edge:              ; preds = %.split.us
  br label %.split.us.split

.split.us.split.us:                               ; preds = %.split.us
  br label %3

; <label>:3:                                      ; preds = %Flow17.us.us,
%.split.us.split.us
  br i1 true, label %4, label %Flow17.us.us

; <label>:4:                                      ; preds = %3
  br i1 true, label %5, label %Flow.us.us

; <label>:5:                                      ; preds = %4
  br label %Flow.us.us

Flow.us.us:                                       ; preds = %5, %4
  br i1 undef, label %6, label %7

; <label>:6:                                      ; preds = %Flow.us.us
  br label %7

; <label>:7:                                      ; preds = %6, %Flow.us.us
  br label %LeafBlock.us.us

LeafBlock.us.us:                                  ; preds = %7
  br i1 undef, label %8, label %Flow18.us.us

; <label>:8:                                      ; preds = %LeafBlock.us.us
  br label %Flow18.us.us

Flow18.us.us:                                     ; preds = %8,
%LeafBlock.us.us
  br label %Flow17.us.us

Flow17.us.us:                                     ; preds = %Flow18.us.us, %3
  br i1 undef, label %Flow19.us-lcssa.us.us-lcssa.us, label %3

Flow19.us-lcssa.us.us-lcssa.us:                   ; preds = %Flow17.us.us
  br label %Flow19.us-lcssa.us

.split.us.split:                                  ; preds =
%.split.us..split.us.split_crit_edge
  br label %9

; <label>:9:                                      ; preds = %Flow17.us,
%.split.us.split
  br i1 true, label %10, label %Flow17.us

; <label>:10:                                     ; preds = %9
  call void @llvm.lifetime.start.p0i8(i64 5, i8* %.0.sroa_idx.us)
  br i1 false, label %11, label %Flow.us

; <label>:11:                                     ; preds = %10
  br label %Flow.us

Flow.us:                                          ; preds = %11, %10
  br i1 undef, label %12, label %13

; <label>:12:                                     ; preds = %Flow.us
  br label %13

; <label>:13:                                     ; preds = %12, %Flow.us
  call void @llvm.lifetime.end.p0i8(i64 5, i8* %.0.sroa_idx.us)
  br label %LeafBlock.us

LeafBlock.us:                                     ; preds = %13
  br i1 undef, label %14, label %Flow18.us

; <label>:14:                                     ; preds = %LeafBlock.us
  br label %Flow18.us

Flow18.us:                                        ; preds = %14, %LeafBlock.us
  br label %Flow17.us

Flow17.us:                                        ; preds = %Flow18.us, %9
  br i1 false, label %Flow19.us-lcssa.us.us-lcssa, label %9

Flow19.us-lcssa.us.us-lcssa:                      ; preds = %Flow17.us
  br label %Flow19.us-lcssa.us

Flow19.us-lcssa.us:                               ; preds =
%Flow19.us-lcssa.us.us-lcssa, %Flow19.us-lcssa.us.us-lcssa.us
  br label %Flow19

.split:                                           ; preds = %..split_crit_edge
  br label %15

; <label>:15:                                     ; preds = %Flow17, %.split
  br i1 false, label %16, label %Flow17

; <label>:16:                                     ; preds = %15
  call void @llvm.lifetime.start.p0i8(i64 5, i8* %.0.sroa_idx)
  br i1 undef, label %18, label %Flow

Flow:                                             ; preds = %18, %16
  br i1 undef, label %17, label %19

; <label>:17:                                     ; preds = %Flow
  br label %19

; <label>:18:                                     ; preds = %16
  br label %Flow

Flow17:                                           ; preds = %Flow18, %15
  br i1 undef, label %Flow19.us-lcssa, label %15

; <label>:19:                                     ; preds = %17, %Flow
  call void @llvm.lifetime.end.p0i8(i64 5, i8* %.0.sroa_idx)
  br label %LeafBlock

LeafBlock:                                        ; preds = %19
  br i1 undef, label %20, label %Flow18

; <label>:20:                                     ; preds = %LeafBlock
  br label %Flow18

Flow18:                                           ; preds = %20, %LeafBlock
  br label %Flow17

Flow19.us-lcssa:                                  ; preds = %Flow17
  br label %Flow19

Flow19:                                           ; preds = %Flow19.us-lcssa,
%Flow19.us-lcssa.us
  br i1 undef, label %21, label %Flow20

; <label>:21:                                     ; preds = %Flow19
  br label %Flow20

Flow20:                                           ; preds = %21, %Flow19
  br i1 undef, label %NewDefault, label %22

NewDefault:                                       ; preds = %Flow20
  br label %22

; <label>:22:                                     ; preds = %NewDefault,
%Flow20
  br label %LeafBlock15

LeafBlock15:                                      ; preds = %22
  br i1 undef, label %23, label %Flow21

; <label>:23:                                     ; preds = %LeafBlock15
  br label %24

Flow21:                                           ; preds = %24, %LeafBlock15
  br i1 undef, label %NewDefault14, label %2

; <label>:24:                                     ; preds = %23
  br label %Flow21

NewDefault14:                                     ; preds = %Flow21
  br label %25

; <label>:25:                                     ; preds = %NewDefault14
  br label %26

; <label>:26:                                     ; preds = %25
  ret void
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190329/bd466d30/attachment.html>


More information about the llvm-bugs mailing list