Skip to content
  1. Dec 28, 2013
    • Chandler Carruth's avatar
      Disable transforms that introduce calls to exp10*() on Linux due to · f5689f83
      Chandler Carruth authored
      widespread glibc bugs.
      
      The glibc implementation of exp10 has a very serious precision bug in
      version 2.15 (and older versions). This is still very widely used (the
      current Ubuntu LTS for example uses it) and so it isn't reasonable to
      make transforms that produce these functions. This fixes many
      miscompiles introduced when we started transforming pow(10.0, ...) into
      exp10, and it may have fixed other latent miscompiles where exp10
      provided sufficient precision but exp10f did not.
      
      This is all really horrible. The primary bug has been fixed for over
      a year and glibc 2.18 works correctly for the test cases I have, but it
      will be 2017 before the LTS using 2.15 is no longer supported by Ubuntu
      (and thus reasonable for folks to be relying on). =[ We're either going
      to need to live without these optimizations, or find a way to switch
      behavior more dynamically than using simply the fact that the OS is
      "Linux".
      
      To make matters worse, there appears to be significant testing and
      fixing of numerous other bugs in the exp10 family of functions right now
      in glibc. While those haven't been causing problems I've seen in the
      wild, it gives me concerns that we may need to wait until an even later
      release of glibc before we can reliably transform code into exp10.
      
      llvm-svn: 198093
      f5689f83
    • Eric Christopher's avatar
      Remove AsmPrinter::needsRelocationsForDwarfStringPool() since it's · 8458862f
      Eric Christopher authored
      just calling into MAI and is only abstracting for a single interface that
      we actually need to check in multiple places.
      
      llvm-svn: 198092
      8458862f
    • Nico Weber's avatar
      Attempt to fix JIT unit tests after r198087. · 01728f54
      Nico Weber authored
      llvm-svn: 198089
      01728f54
  2. Dec 27, 2013
    • Nico Weber's avatar
      Strip dead code when linking by default with BFD ld (linux, ...) and ld64 (os x). · 47ba8fa7
      Nico Weber authored
      This reduces the size of clang-format from 22 MB to 1.8 MB, diagtool goes from
      21 MB to 2.8 MB, libclang.so goes from 29 MB to 20 MB, etc.  The size of the
      bin/ folder shrinks from 270 MB to 200 MB.
      
      Targets that support plugins and don't already use EXPORTED_SYMBOL_FILE
      (which libclang and libLTO already do) can set NO_DEAD_STRIP to opt out.
      
      llvm-svn: 198087
      47ba8fa7
    • Andrea Di Biagio's avatar
      Teach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of · 46dcddb3
      Andrea Di Biagio authored
      ConstantSDNodes (or UNDEFs) into a simple BUILD_VECTOR.
      
      For example, given the following sequence of dag nodes:
      
        i32 C = Constant<1>
        v4i32 V = BUILD_VECTOR C, C, C, C
        v4i32 Result = SIGN_EXTEND_INREG V, ValueType:v4i1
      
      The SIGN_EXTEND_INREG node can be folded into a build_vector since
      the vector in input is a BUILD_VECTOR of constants.
      
      The optimized sequence is:
      
        i32 C = Constant<-1>
        v4i32 Result = BUILD_VECTOR C, C, C, C
      
      llvm-svn: 198084
      46dcddb3
    • David Blaikie's avatar
      DebugInfo: Remove dead code, DICompositeType::addMember(DIDescriptor D) · ac200297
      David Blaikie authored
      It's no longer necessary to lazily add members to the DICompositeType
      member list. Instead any lazy members (special member functions and
      member template instantiations) are added to the parent late based on
      their context link, the same way that nested types have always been
      handled (never being in the member list - just added to the parent DIE
      lazily based on context).
      
      Clang's been updated not to use this function anymore as it improves
      type unit consistency by never emitting lazy members in type units.
      
      llvm-svn: 198079
      ac200297
    • Chandler Carruth's avatar
      Use two variables here rather than reusing (and abusing) one. This is · 87c3a0cf
      Chandler Carruth authored
      much more clear to me. I meant to make this change before committing the
      original patch, but forgot to merge it in. Sorry.
      
      llvm-svn: 198069
      87c3a0cf
    • Chandler Carruth's avatar
      Introduce a simple line-by-line iterator type into the Support library. · f8c5281c
      Chandler Carruth authored
      This is an iterator which you can build around a MemoryBuffer. It will
      iterate through the non-empty, non-comment lines of the buffer as
      a forward iterator. It should be small and reasonably fast (although it
      could be made much faster if anyone cares, I don't really...).
      
      This will be used to more simply support the text-based sample
      profile file format, and is largely based on the original patch by
      Diego. I've re-worked the style of it and separated it from the work of
      producing a MemoryBuffer from a file which both simplifies the interface
      and makes it easier to test.
      
      The style of the API follows the C++ standard naming conventions to fit
      in better with iterators in general, much like the Path and FileSystem
      interfaces follow standard-based naming conventions.
      
      llvm-svn: 198068
      f8c5281c
  3. Dec 26, 2013
  4. Dec 25, 2013
  5. Dec 24, 2013
Loading