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

            Bug ID: 24220
           Summary: Duplicate case blocks in switch can be merged
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedb...@nondot.org
          Reporter: listm...@philipreames.com
                CC: llvmbugs@cs.uiuc.edu
    Classification: Unclassified

In the following example, many of the case blocks of the switch are identical
and could be merged into a single basic block.  This transformation should
likely live inside SimplifyCFG.  

declare void @foo()
declare void @bar()

define void @test(i16 %val1, i32 %local_2_) {
bci_84:                                           ; preds = %normal_return12
  switch i16 %val1, label %bci_149 [
    i16 45, label %bci_90
    i16 43, label %bci_103
    i16 58, label %bci_116
    i16 95, label %bci_129
    i16 46, label %bci_142
  ]

bci_149:
  call void @foo()
  ret void

bci_158:
  call void @bar()
  ret void

bci_142:                                          ; preds = %bci_84
  %.old = icmp eq i32 %local_2_, 0
  br i1 %.old, label %bci_149, label %bci_158

bci_129:                                          ; preds = %bci_84
  %_20 = icmp eq i32 %local_2_, 0
  br i1 %_20, label %bci_149, label %bci_158

bci_116:                                          ; preds = %bci_84
  %_21 = icmp eq i32 %local_2_, 0
  br i1 %_21, label %bci_149, label %bci_158

bci_103:                                          ; preds = %bci_84
  %_22 = icmp eq i32 %local_2_, 0
  br i1 %_22, label %bci_149, label %bci_158

bci_90:                                           ; preds = %bci_84
  %_23 = icmp eq i32 %local_2_, 0
  br i1 %_23, label %bci_149, label %bci_158
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
LLVMbugs@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to