[LLVMbugs] [Bug 774] NEW: SwitchInst default block doesn't get optimized away

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Wed May 10 12:23:22 PDT 2006


           Summary: SwitchInst default block doesn't get optimized away
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Scalar Optimizations
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: nicholas at mxc.ca

LLVM doesn't seem to do a good job of removing the default block of a switch
statement. Given the C++ code:

  int test1(bool b)
    switch (b) {
      case true:
        return 1;
      case false:
        return 2;
        return 3;
    return 4;

The return 4 is removed, but return 3 is kept. By contrast, the same logic with
if statements:

  int test1if(bool b)
    if (b == true)
      return 1;
    else if (b == false)
      return 2;
      return 3;
    return 4;


  int %_Z7test1ifb(bool %b) {
          %retval = select bool %b, int 1, int 2          ; <int> [#uses=1]
          ret int %retval

so it's clear that LLVM should know what's going on.

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

More information about the llvm-bugs mailing list