1. Oct 21, 2013
  2. Oct 20, 2013
    • Benjamin Kramer's avatar
      Driver: libubsan_cxx depends on libubsan. Preserve the topological ordering,... · 80b5a9d2
      Benjamin Kramer authored
      Driver: libubsan_cxx depends on libubsan. Preserve the topological ordering, some linkers depend on it.
      
      llvm-svn: 193048
      80b5a9d2
    • Benjamin Kramer's avatar
      Forgot some references to misspelled enums. · 1d5d634c
      Benjamin Kramer authored
      llvm-svn: 193047
      1d5d634c
    • Benjamin Kramer's avatar
      Miscellaneous speling fixes. · 2501f141
      Benjamin Kramer authored
      llvm-svn: 193046
      2501f141
    • Michael Gottesman's avatar
      Teach simplify-cfg how to correctly create covered lookup tables for switches on iN with N >= 3. · c024f325
      Michael Gottesman authored
      One optimization simplify-cfg performs is the converting of switches to
      lookup tables if the switch has > 4 cases. This is done by:
      
      1. Finding the max/min case value and calculating the switch case range.
      2. Create a lookup table basic block.
      3. Perform a check in the switch's BB to see if the input value is in
      the switch's case range. If the input value satisfies said predicate
      branch to the lookup table BB, otherwise branch to the switch's default
      destination BB using the default value as the result.
      
      The conditional check consists of subtracting the min case value of the
      table from any input iN value and then ensuring that said value is
      unsigned less than the size of the lookup table represented as an iN
      value.
      
      If the lookup table is a covered lookup table, the size of the table will be N
      which is 0 as an iN value. Thus the comparison will be an `icmp ult` of an iN
      value against 0 which is always false yielding the incorrect result.
      
      This patch fixes this problem by recognizing if we have a covered lookup table
      and if we do, unconditionally jumps to the lookup table BB since the covering
      property of the lookup table implies no input values could not be handled by
      said BB.
      
      rdar://15268442
      
      llvm-svn: 193045
      c024f325