Skip to content
  • Chris Lattner's avatar
    add a special case for codegen that improves the case where we have · 4192bce9
    Chris Lattner authored
    multiple sequential cases to a) not create tons of fall-through basic blocks
    and b) not recurse deeply.  This fixes codegen on 100K deep cases, and improves
    codegen on moderate cases from this:
    
            switch i32 %tmp, label %sw.epilog [
                    i32 1000, label %sw.bb
                    i32 1001, label %sw.bb1
                    i32 1002, label %sw.bb2
                    i32 1003, label %sw.bb3
                    i32 1004, label %sw.bb4
    ...
    sw.bb:          ; preds = %entry
            br label %sw.bb1
    
    sw.bb1:         ; preds = %entry, %sw.bb
            br label %sw.bb2
    
    sw.bb2:         ; preds = %entry, %sw.bb1
            br label %sw.bb3
    
    sw.bb3:         ; preds = %entry, %sw.bb2
            br label %sw.bb4
    
    to:
    
            switch i32 %tmp, label %sw.epilog [
                    i32 1000, label %sw.bb
                    i32 1001, label %sw.bb
                    i32 1002, label %sw.bb
                    i32 1003, label %sw.bb
                    i32 1004, label %sw.bb
    sw.bb:  ;; many preds
    
    llvm-svn: 66015
    4192bce9
Loading