Skip to content
  1. Dec 30, 2012
  2. Dec 29, 2012
  3. Dec 28, 2012
    • Howard Hinnant's avatar
      Saleem Abdulrasool: GCC complains about the template functions as potentially not being able to be · bd037ab4
      Howard Hinnant authored
      inlined.  These do not need to be always-inlined for ABI stability because they are not exported beyond this source due to the unnamed namespace.
      Also simplified use of the Wmissing-field-initializers pragma as was done for clang.
      
      llvm-svn: 171202
      bd037ab4
    • Kostya Serebryany's avatar
      [asan] fix a build warning · 9479a859
      Kostya Serebryany authored
      llvm-svn: 171200
      9479a859
    • Kostya Serebryany's avatar
      [asan] one more change missed at r171198 · 1cc54f02
      Kostya Serebryany authored
      llvm-svn: 171199
      1cc54f02
    • Kostya Serebryany's avatar
      [asan] implement more strict checking for memset/etc parameters. Instead of... · cb510e50
      Kostya Serebryany authored
      [asan] implement more strict checking for memset/etc parameters. Instead of checking the first and the last byte, we check the entire shadow region. This costs ~10 slowdown for the instrumented functions. Motivated by a nasty memset-buffer-overflow-by-140-bytes in chrome which was reported as a use-after-free or not at all
      
      llvm-svn: 171198
      cb510e50
    • Chandler Carruth's avatar
      Nuke some dead code that snuck in some how. I thought I had already · 405d6813
      Chandler Carruth authored
      deleted this, but apparantly not. Charmingly, Clang didn't warn on it
      but GCC did.
      
      llvm-svn: 171197
      405d6813
    • Chandler Carruth's avatar
      Fix a stunning oversight in the inline cost analysis. It was never · 86ed5308
      Chandler Carruth authored
      propagating one of the values it simplified to a constant across
      a myriad of instructions. Notably, ptrtoint instructions when we had
      a constant pointer (say, 0) didn't propagate that, blocking a massive
      number of down-stream optimizations.
      
      This was uncovered when investigating why we fail to inline and delete
      the boilerplate in:
      
        void f() {
          std::vector<int> v;
          v.push_back(1);
        }
      
      It turns out most of the efforts I've made thus far to improve the
      analysis weren't making it far purely because of this. After this is
      fixed, the store-to-load forwarding patch enables LLVM to optimize the
      above to an empty function. We still can't nuke a second push_back, but
      for different reasons.
      
      There is a very real chance this will cause somewhat noticable changes
      in inlining behavior, so please let me know if you see regressions (or
      improvements!) because of this patch.
      
      llvm-svn: 171196
      86ed5308
    • Chandler Carruth's avatar
      Teach the inline cost analysis about calls that can be simplified and · 753e21d0
      Chandler Carruth authored
      how to propagate constants through insert and extract value
      instructions.
      
      With the recent improvements to instsimplify, this allows inline cost
      analysis to constant fold through intrinsic functions, including notably
      the with.overflow intrinsic math routines which often show up inside of
      STL abstractions. This is yet another piece in the puzzle of breaking
      down the code for:
      
        void f() {
          std::vector<int> v;
          v.push_back(1);
        }
      
      But it still isn't enough. There are a pile of bugs in inline cost still
      blocking this.
      
      llvm-svn: 171195
      753e21d0
Loading