summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* tsan: return the old fake numbers from malloc stats (some code already ↵Dmitry Vyukov2013-01-241-2/+2
| | | | | | depends on them) llvm-svn: 173348
* [Sanitizer] use stub InternalSymbolizer on platforms where we don't have ↵Alexey Samsonov2013-01-241-5/+11
| | | | | | weak hooks llvm-svn: 173347
* tsan: suppress reports using both stacksDmitry Vyukov2013-01-242-13/+17
| | | | llvm-svn: 173346
* tsan: allow a front-end to provide default suppressionsDmitry Vyukov2013-01-243-10/+21
| | | | llvm-svn: 173345
* [Sanitizer] Add skeleton for InternalSymbolizer that can be used by ↵Alexey Samsonov2013-01-241-0/+51
| | | | | | providing callbacks __sanitizer_symbolize_{code,data} llvm-svn: 173344
* Revert r173342 temporarily. It appears to cause a very late miscompileChandler Carruth2013-01-242-47/+9
| | | | | | of stage2 in a bootstrap. Still investigating.... llvm-svn: 173343
* Plug TTI into the speculation logic, giving it a real cost interfaceChandler Carruth2013-01-242-9/+47
| | | | | | | | | | | | | | | | | | that can be specialized by targets. The goal here is not to be more aggressive, but to just be more accurate with very obvious cases. There are instructions which are known to be truly free and which were not being modeled as such in this code -- see the regression test which is distilled from an inner loop of zlib. Everywhere the TTI cost model is insufficiently conservative I've added explicit checks with FIXME comments to go add proper modelling of these cost factors. If this causes regressions, the likely solution is to make TTI even more conservative in its cost estimates, but test cases will help here. llvm-svn: 173342
* Address a large chunk of this FIXME by accumulating the cost forChandler Carruth2013-01-242-8/+48
| | | | | | | unfolded constant expressions rather than checking each one independently. llvm-svn: 173341
* Switch the constant expression speculation cost evaluation away fromChandler Carruth2013-01-242-7/+36
| | | | | | | | | | | | | | | | | | | | a cost fuction that seems both a bit ad-hoc and also poorly suited to evaluating constant expressions. Notably, it is missing any support for trivial expressions such as 'inttoptr'. I could fix this routine, but it isn't clear to me all of the constraints its other users are operating under. The core protection that seems relevant here is avoiding the formation of a select instruction wich a further chain of select operations in a constant expression operand. Just explicitly encode that constraint. Also, update the comments and organization here to make it clear where this needs to go -- this should be driven off of real cost measurements which take into account the number of constants expressions and the depth of the constant expression tree. llvm-svn: 173340
* Rephrase the speculating scan of the conditional BB to be phrased inChandler Carruth2013-01-241-19/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | terms of cost rather than hoisting a single instruction. This does *not* change the cost model! We still set the cost threshold at 1 here, it's just that we track it by accumulating cost rather than by storing an instruction. The primary advantage is that we no longer leave no-op intrinsics in the basic block. For example, this will now move both debug info intrinsics and a single instruction, instead of only moving the instruction and leaving a basic block with nothing bug debug info intrinsics in it, and those intrinsics now no longer ordered correctly with the hoisted value. Instead, we now splice the entire conditional basic block's instruction sequence. This also places the code for checking the safety of hoisting next to the code computing the cost. Currently, the only observable side-effect of this change is that debug info intrinsics are no longer abandoned. I'm not sure how to craft a test case for this, and my real goal was the refactoring, but I'll talk to Dave or Eric about how to add a test case for this. llvm-svn: 173339
* [asan] fix 32-bit buildsKostya Serebryany2013-01-241-3/+3
| | | | llvm-svn: 173338
* Simplify the PHI node operand rewriting.Chandler Carruth2013-01-241-42/+35
| | | | | | | | | | | | | | | | | | Previously, the code would scan the PHI nodes and build up a small setvector of candidate value pairs in phi nodes to go and rewrite. Once certain the rewrite could be performed, the code walks the set, and for each one re-scans the entire PHI node list looking for nodes to rewrite operands. Instead, scan the PHI nodes once to check for hazards, and then scan it a second time to rewrite the operands to selects. No set vector, and a max of two scans. The only downside is that we might form identical selects, but instcombine or anything else should fold those easily, and it seems unlikely to happen often. llvm-svn: 173337
* [asan] run-time tests for adaptive redzones Kostya Serebryany2013-01-243-0/+15
| | | | llvm-svn: 173336
* [asan] adaptive redzones for globals (the larger the global the larger is ↵Kostya Serebryany2013-01-242-3/+70
| | | | | | the redzone) llvm-svn: 173335
* Give the basic block variables here names based on the if-then-endChandler Carruth2013-01-241-32/+33
| | | | | | structure being analyzed. No functionality changed. llvm-svn: 173334
* [ASan] fix compilation on Mac by adding a missing pwrite parameter.Alexander Potapenko2013-01-241-1/+2
| | | | llvm-svn: 173333
* tsan: implement malloc stats queryingDmitry Vyukov2013-01-247-52/+254
| | | | llvm-svn: 173332
* Lift a cheap early exit test above loops and other complex early exitChandler Carruth2013-01-241-5/+5
| | | | | | | | | tests. No need to pay the high cost when we're never going to do anything. No functionality changed. llvm-svn: 173331
* clang/GlobalModuleIndex: Don't open the same file twice. Use ↵NAKAMURA Takumi2013-01-242-5/+1
| | | | | | | raw_fd_ostream(fd, ...) instead. FIXME: PathV2::unique_file() is assumed to open the file with binary mode on win32. llvm-svn: 173330
* Spiff up the comment on this method, making the example a bit moreChandler Carruth2013-01-241-16/+35
| | | | | | | | | | | pretty in doxygen, adding some of the details actually present in a classic example where this matters (a loop from gzip and many other compression algorithms), and a cautionary note about the risks inherent in the transform. This has come up on the mailing lists recently, and I suspect folks reading this code could benefit from going and looking at the MI pass that can really deal with these issues. llvm-svn: 173329
* asan/tsan: fix pwrite interceptorsDmitry Vyukov2013-01-241-6/+7
| | | | llvm-svn: 173328
* tsan: also test asan during presubmit checks, because sanitizer_common ↵Dmitry Vyukov2013-01-241-1/+1
| | | | | | changes can affect it llvm-svn: 173327
* clang/test/Modules/global_index.m: XFAILing on win32 when investigating for now.NAKAMURA Takumi2013-01-241-0/+1
| | | | llvm-svn: 173326
* MipsISelLowering.cpp: Fill unreachable paths to fix warnings. ↵NAKAMURA Takumi2013-01-241-0/+6
| | | | | | | | [-Wsometimes-uninitialized] FIXME: Could they, unreachable(s), be removed? FIXME: I could prefer the coding standards... llvm-svn: 173325
* MipsISelLowering.cpp: Fix a warning, take two. [-Wunused-variable]NAKAMURA Takumi2013-01-241-2/+2
| | | | | | ...and fix a typo, s/#ifdef/#ifndef/ llvm-svn: 173324
* MipsISelLowering.cpp: Fix a warning. [-Wunused-variable]NAKAMURA Takumi2013-01-241-3/+5
| | | | llvm-svn: 173323
* Remove trailing whitespace.Craig Topper2013-01-241-134/+134
| | | | llvm-svn: 173322
* Add asserts to SmallVector so that calls to front() and back() only succeedRichard Trieu2013-01-241-0/+4
| | | | | | | if the vector is not empty. This will ensure that calls to these functions will reference elements in the vector. llvm-svn: 173321
* The next phase of Mips16 hard float implementation.Reed Kotler2013-01-243-36/+502
| | | | | | | | | | | | | | | | Allow Mips16 routines to call Mips32 routines that have abi requirements that either arguments or return values are passed in floating point registers. This handles only the pic case. We have not done non pic for Mips16 yet in any form. The libm functions are Mips32, so with this addition we have a complete Mips16 hard float implementation. We still are not able to complete mix Mip16 and Mips32 with hard float. That will be the next phase which will have several steps. For Mips32 to freely call Mips16 some stub functions must be created. llvm-svn: 173320
* Give warn_redecl_library_builtin a flag name: ↵Nick Lewycky2013-01-242-3/+3
| | | | | | -Wincompatible-library-redeclaration. llvm-svn: 173319
* MachineScheduler: enable biasCriticalPath for all DAGs.Andrew Trick2013-01-241-0/+4
| | | | llvm-svn: 173318
* MIsched: Added biasCriticalPath.Andrew Trick2013-01-242-0/+19
| | | | | | | Allow schedulers to order DAG edges by critical path. This makes DFS-based heuristics more stable and effective. llvm-svn: 173317
* [ELF] Add R_X86_64_IRELATIVE.Michael J. Spencer2013-01-241-1/+2
| | | | llvm-svn: 173316
* Start checking nonnull (as well as format and argument_with_type_tag) onNick Lewycky2013-01-242-0/+19
| | | | | | overloaded binary operators. llvm-svn: 173315
* Fix some wonky formatting, remove spurious emacs major mode marker. NoNick Lewycky2013-01-242-10/+8
| | | | | | functionality change! llvm-svn: 173314
* Add a profile for uniquifying the AttributeSet with the AttributeSetNodes.Bill Wendling2013-01-243-7/+17
| | | | llvm-svn: 173313
* Cleanup the AttributeSetNodes that we create.Bill Wendling2013-01-241-0/+7
| | | | llvm-svn: 173311
* Create a new class: AttributeSetNode.Bill Wendling2013-01-244-1/+112
| | | | | | | | | | This is a helper class for the AttributeSetImpl class. It holds a set of attributes that apply to a single element: function, return type, or parameter. These are uniqued. llvm-svn: 173310
* Micro cleanup: use an array of const char, rather than an array of char, as theRichard Smith2013-01-231-1/+1
| | | | | | | type of the string literal implicitly used for a raw user-defined literal call. No test; this has no semantic impact. llvm-svn: 173309
* Check for NULL breakpoint option thread name & queue name before comparing ↵Jim Ingham2013-01-231-2/+4
| | | | | | | | their values to the new value. <rdar://problem/13065198> llvm-svn: 173308
* Don't check lines beginning with '#', since they could contain a path with ↵Bill Wendling2013-01-231-1/+1
| | | | | | the unexpected word in them. llvm-svn: 173307
* Don't check lines beginning with '#', since they could contain a path with ↵Bill Wendling2013-01-231-1/+1
| | | | | | the unexpected word in them. llvm-svn: 173306
* The diagnostic is now a warning instead of an error. Also don't check lines ↵Bill Wendling2013-01-231-1/+1
| | | | | | beginning with '#', since they could contain a path with the unexpected word in them. llvm-svn: 173305
* Push down the conversion of the alignment from the bit mask to a real number ↵Bill Wendling2013-01-231-4/+6
| | | | | | into the attribute implementation class. llvm-svn: 173304
* Fix for case-sensitive file systems. UghDouglas Gregor2013-01-231-1/+1
| | | | llvm-svn: 173303
* Remove dead methods.Bill Wendling2013-01-233-29/+0
| | | | llvm-svn: 173302
* Implement the writer side of the global module index. Douglas Gregor2013-01-2311-8/+710
| | | | | | | | | | | | | | | | | | | | The global module index is a "global" index for all of the module files within a particular subdirectory in the module cache, which keeps track of all of the "interesting" identifiers and selectors known in each of the module files. One can perform a fast lookup in the index to determine which module files will have more information about entities with a particular name/selector. This information can help eliminate redundant lookups into module files (a serious performance problem) and help with creating auto-import/auto-include Fix-Its. The global module index is created or updated at the end of a translation unit that has triggered a (re)build of a module by scraping all of the .pcm files out of the module cache subdirectory, so it catches everything. As with module rebuilds, we use the file system's atomicity to synchronize. llvm-svn: 173301
* Add SectionPosition and OrderPassNick Kledzik2013-01-2323-18/+341
| | | | llvm-svn: 173300
* [ELF] Read IFUNC symbols correctly as typeResolver.Michael J. Spencer2013-01-235-0/+24
| | | | llvm-svn: 173299
* Fix small typoEli Bendersky2013-01-231-1/+1
| | | | llvm-svn: 173298
OpenPOWER on IntegriCloud