summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add missing 'const'. I don't think this is strictly required, but someDaniel Jasper2015-07-101-1/+1
| | | | | | | compiler configuration is giving me an error and it seems to be recommended anyway. llvm-svn: 241892
* Tighten the verifier check for catchblock.David Majnemer2015-07-102-9/+10
| | | | llvm-svn: 241891
* Address Joseph's review comments.David Majnemer2015-07-105-13/+92
| | | | llvm-svn: 241890
* Address Reid's review feedback.David Majnemer2015-07-103-22/+27
| | | | llvm-svn: 241889
* New EH representation for MSVC compatibilityDavid Majnemer2015-07-1035-91/+2042
| | | | | | | | | | | | | | | Summary: This introduces new instructions neccessary to implement MSVC-compatible exception handling support. Most of the middle-end and none of the back-end haven't been audited or updated to take them into account. Reviewers: rnk, JosephTremoulet, reames, nlewycky, rjmccall Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11041 llvm-svn: 241888
* [InstCombine] Employ AliasAnalysis in FindAvailableLoadedValueBjorn Steinbrink2015-07-104-8/+33
| | | | llvm-svn: 241887
* [InstCombine] Properly combine metadata when replacing a load with anotherBjorn Steinbrink2015-07-102-1/+49
| | | | | | | | Not doing this can lead to misoptimizations down the line, e.g. because of range metadata on the replacing load excluding values that are valid for the load that is being replaced. llvm-svn: 241886
* Remove test that tests referring to the current working directory. YouDaniel Jasper2015-07-101-5/+0
| | | | | | | | | cannot assume that the current working directory is writable in all test environments. I don't know a better way to write this test of hand, lets discuss. Possibly, a better option would be to put these together with other test testing the driver directly. llvm-svn: 241885
* [NVPTX] declare no vector registersJingyue Wu2015-07-103-0/+47
| | | | | | | | | | | | | | | | | Summary: Without this patch, LoopVectorizer in certain cases (see loop-vectorize.ll) produces code with complex control flow which hurts later optimizations. Since NVPTX doesn't have vector registers in LLVM's sense (NVPTXTTI::getRegisterBitWidth(true) == 32), we for now declare no vector registers to effectively disable loop vectorization. Reviewers: jholewinski Subscribers: jingyue, llvm-commits, jholewinski Differential Revision: http://reviews.llvm.org/D11089 llvm-svn: 241884
* COFF: Fix locally-imported symbol's base relocations.Rui Ueyama2015-07-102-2/+13
| | | | | | Base relocations are RVA and not VA, so we shouldn't add ImageBase. llvm-svn: 241883
* Revert test lines added in r241811, "[CodeCompletion] Don't crash on member ↵NAKAMURA Takumi2015-07-101-16/+0
| | | | | | | | inits of templated constructors.", for now. It doesn't pass for targeting MS mode. llvm-svn: 241882
* Driver: Make all of -f{,no-}sanitize{,-recover,-trap} core options.Peter Collingbourne2015-07-101-5/+8
| | | | | | This allows them to be used from clang-cl. llvm-svn: 241881
* Added mechanism to modularize for doing a compilation precheckJohn Thompson2015-07-1012-37/+403
| | | | | | | | | | | | to determine files that have comnpilation or dependency problems. A new -display-file-lists option use this to display lists of good files (no compile errors), problem files, and a combined list with problem files preceded by a '#'. The problem files list can be used in the module map generation assistant mode to exclude problem files. The combined files list can be used during module map development. See added docs. llvm-svn: 241880
* Don't let a test fail because of a teardown command returning an error. Use ↵Greg Clayton2015-07-101-3/+1
| | | | | | a function that doesn't check the return value. llvm-svn: 241879
* Re-enable 32-bit SEH after the alignment fixReid Kleckner2015-07-105-10/+9
| | | | llvm-svn: 241878
* [WinEH] Make sure LSDA tables are 4 byte alignedReid Kleckner2015-07-107-2/+12
| | | | | | | | | | Apparently this is important, otherwise _except_handler3 assumes that the registration node is corrupted and ignores it. Also fix a bug in WinEHPrepare where we would insert code after a terminator instruction. llvm-svn: 241877
* [TSan] Fix dl_iterate_phdr callback for the case when info->dlpi_name is ↵Alexey Samsonov2015-07-102-4/+10
| | | | | | overwritten by user. llvm-svn: 241876
* Replace index-loops by range-based loopsEli Bendersky2015-07-091-6/+3
| | | | | | NFC llvm-svn: 241875
* COFF: Find C++ mangled name for symbols starting with underscore.Rui Ueyama2015-07-092-2/+11
| | | | | | | | Symbol foo is mangled as _foo in C and ?foo@@... in C++ on x86. findMangle has to remove prefix underscore before mangle a given name as a C++ symbol. llvm-svn: 241874
* [x86] enable machine combiner reassociations for scalar double-precision ↵Sanjay Patel2015-07-092-1/+26
| | | | | | multiplies llvm-svn: 241873
* COFF: Fix dllexported symbol names on x86.Rui Ueyama2015-07-095-38/+175
| | | | | | | | Symbol names are usually mangled by appending "_" prefix on x86. But the mangled name is not used in DLL export table. The export table contains unmangled names. llvm-svn: 241872
* [x86] enable machine combiner reassociations for scalar double-precision addsSanjay Patel2015-07-092-1/+25
| | | | llvm-svn: 241871
* Fix shadowing.Michael J. Spencer2015-07-092-2/+2
| | | | llvm-svn: 241870
* [Object][ELF] Support dumping hash-tables from files with no section table.Michael J. Spencer2015-07-098-27/+102
| | | | | | This time without breaking the bots. llvm-svn: 241869
* MIR Serialization: Serialize the virtual register definitions.Alex Lorenz2015-07-095-7/+141
| | | | | | | | | | | | The virtual registers are serialized using a YAML sequence of YAML inline mappings. Each mapping has the id of the virtual register and the register class. Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D10981 llvm-svn: 241868
* [LAA] Fix grammar in debug outputAdam Nemet2015-07-091-1/+1
| | | | llvm-svn: 241867
* [LAA] Hide NeedRTCheck logic completely inside canCheckPtrAtRT, NFCAdam Nemet2015-07-091-31/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Currently canCheckPtrAtRT returns two flags NeedRTCheck and CanDoRT. NeedRTCheck says whether we need checks and CanDoRT whether we can generate the checks. The idea is to encode three states with these: Need/Can: (1) false/dont-care: no checks are needed (2) true/false: we need checks but can't generate them (3) true/true: we need checks and we can generate them This is pretty unnecessary since the caller (analyzeLoop) is only interested in whether we can generate the checks if we actually need them (i.e. 1 or 3). So this change cleans up to return just that (CanDoRTIfNeeded) and pulls all the underlying logic into canCheckPtrAtRT. By doing all this, we simplify analyzeLoop which is the complex function in LAA. There is further room for improvement here by using RtCheck.Need directly rather than a new local variable NeedRTCheck but that's for a later patch. llvm-svn: 241866
* [WinEH] Give up on using CSRs across 32-bit invokes for nowReid Kleckner2015-07-093-25/+54
| | | | | | | | | | | The runtime does not restore CSRs when transferring control back to the function handling the exception. According to the experts on IRC, LLVM's register allocator has no way to model register clobbers that only happen on one edge of the CFG. For now, don't worry about trying to use the meager three CSRs available on 32-bit X86 and just say that such invokes preserve nothing. llvm-svn: 241865
* Expose sjlj preparation through opt for my own debugging purposesReid Kleckner2015-07-093-0/+4
| | | | llvm-svn: 241864
* [Static Analyzer] Basic per checker command line option validation.Gabor Horvath2015-07-094-0/+45
| | | | | | Differential Revision: http://reviews.llvm.org/D8077 llvm-svn: 241863
* MIR Parser: Report an error when parsing machine function with an empty body.Alex Lorenz2015-07-098-0/+42
| | | | | | | | | | This commit adds a new error which is reported when the MIR Parser encounters a machine function without any machine basic blocks. The machine verifier expects that the machine functions have at least one MBB, and this error will prevent machine functions without MBBs from reaching the machine verifier and crashing with an assertion. llvm-svn: 241862
* AMDGPU: Add helper function for implicit parameter offsets.Tom Stellard2015-07-094-4/+28
| | | | | | Patch by: Zoltan Gilian llvm-svn: 241861
* COFF: Fix locally-imported symbol's size for x86.Rui Ueyama2015-07-093-2/+60
| | | | llvm-svn: 241860
* Unbreak WebAssembly buildJF Bastien2015-07-094-26/+6
| | | | | | | | | | | | Summary: D11021 and D11045 didn't update the WebAssembly target's code. It's still experimental so all tests passed. Reviewers: sunfish, joker.eph, echristo Subscribers: llvm-commits, jfb Differential Revision: http://reviews.llvm.org/D11084 llvm-svn: 241859
* WebAssembly: add placeholder intrinsics headerJF Bastien2015-07-092-0/+17
| | | | | | | | | | Reviewers: sunfish Subscribers: llvm-commits, jfb Differential Revision: http://reviews.llvm.org/D11080 llvm-svn: 241858
* COFF: Implement base relocations for x86.Rui Ueyama2015-07-092-9/+31
| | | | | | | | With this patch, LLD is now able to self-link an .exe file for x86 that runs correctly, although I don't think some headers (particularly SEH) are not correct. DLL support is coming soon. llvm-svn: 241857
* COFF: Fix import symbol name mangling.Rui Ueyama2015-07-093-4/+10
| | | | | | For IMPORT_NAME_NOPREFIX symbols, we should remove only one prefix character. llvm-svn: 241854
* COFF: Fix command line options for external commands.Rui Ueyama2015-07-091-2/+2
| | | | llvm-svn: 241853
* Turn debugger interface off by default.Jonathan Peyton2015-07-091-1/+1
| | | | | | Just changed LIBOMP_USE_DEBUGGER to false. llvm-svn: 241852
* [ImplicitNullChecks] Fix a memory leak.Sanjoy Das2015-07-091-1/+1
| | | | llvm-svn: 241851
* [ImplicitNullChecks] Be smarter in picking the memory op.Sanjoy Das2015-07-093-10/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Before this change ImplicitNullChecks would only pick loads of the form: ``` test Reg, Reg jz elsewhere fallthrough: movl 32(Reg), Reg2 ``` but not (say) ``` test Reg, Reg jz elsewhere fallthrough: inc Reg3 movl 32(Reg), Reg2 ``` This change teaches ImplicitNullChecks to look through "unrelated" instructions like `inc Reg3` when searching for a load instruction to convert to a trapping load. Reviewers: atrick, JosephTremoulet, reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11044 llvm-svn: 241850
* Create BSD archives by default on OS X.Rafael Espindola2015-07-092-4/+10
| | | | | | | | | They should probably be created on anything that is not windows or linux, but I will test on freebsd before changing that. With this it is possible to bootstrap with llvm-ar instead of ar+ranlib on OS X. llvm-svn: 241849
* CFI: Emit correct bit set information if RTTI is disabled under MS ABI.Peter Collingbourne2015-07-095-15/+42
| | | | | | | | | | | | | | We were previously creating bit set entries at virtual table offset sizeof(void*) unconditionally under the Microsoft C++ ABI. This is incorrect if RTTI data is disabled; in that case the "address point" is at offset 0. This change modifies bit set emission to take into account whether RTTI data is being emitted. Also make a start on a blacklisting scheme for records. Differential Revision: http://reviews.llvm.org/D11048 llvm-svn: 241845
* MIR Serialization: Serialize the simple MachineFrameInfo attributes.Alex Lorenz2015-07-094-0/+185
| | | | | | | | | | | | This commit serializes the 13 scalar boolean and integer attributes from the MachineFrameInfo class: IsFrameAddressTaken, IsReturnAddressTaken, HasStackMap, HasPatchPoint, StackSize, OffsetAdjustment, MaxAlignment, AdjustsStack, HasCalls, MaxCallFrameSize, HasOpaqueSPAdjustment, HasVAStart, and HasMustTailInVarArgFunc. These attributes are serialized as part of the frameInfo YAML mapping, which itself is a part of the machine function's YAML mapping. llvm-svn: 241844
* COFF: Infer machine type earlier than before.Rui Ueyama2015-07-0910-96/+164
| | | | | | | | | | | | | | | | Previously, we infer machine type at the very end of linking after all symbols are resolved. That's actually too late because machine type affects how we mangle symbols (whether or not we need to add "_"). For example, /entry:foo adds "_foo" to the symbol table if x86 but "foo" if x64. This patch moves the code to infer machine type, so that machine type is inferred based on input files given via the command line (but not based on .directives files). llvm-svn: 241843
* llvm-ar: Pad the symbol table to 4 bytes.Rafael Espindola2015-07-092-2/+13
| | | | | | | It looks like ld64 requires it. With this we seem to be able to bootstrap using llvm-ar+/usr/bin/true instead of ar+ranlib (currently on stage2). llvm-svn: 241842
* Rename ModuleContainerGenerator to PCHContainergenerator for consistencyAdrian Prantl2015-07-091-28/+29
| | | | | | and re-clang-format (NFC). llvm-svn: 241841
* COFF: Make /machine:{i386,amd64} aliases to {x86,x64}.Rui Ueyama2015-07-091-1/+3
| | | | | | MSVC linker accepts these aliases. llvm-svn: 241840
* AMDGPU/R600: Return correct chain when lowering loadsMatt Arsenault2015-07-091-8/+2
| | | | | | The other LowerLOAD should be returning the correct chain. llvm-svn: 241839
* [IndVars] Try to use existing values in RewriteLoopExitValues.Sanjoy Das2015-07-092-2/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: In RewriteLoopExitValues, before expanding out an SCEV expression using SCEVExpander, try to see if an existing LLVM IR expression already computes the value we're interested in. If so use that existing expression. Apart from reducing IndVars' reliance on the rest of the compilation pipeline, this also prevents IndVars from concluding some expressions as "high cost" when they're not. For instance, `InductiveRangeCheckElimination` often emits code of the following form: ``` len = umin(len_A, len_B) loop: ... if (i++ < len) goto loop outside_loop: use(i) ``` `SCEVExpander` refuses to rewrite the use of `i` in `outside_loop`, since it thinks the value of `i` on loop exit, `len`, is a high cost expansion since it contains an `umax` in it. With this change, `IndVars` can see that it can re-use `len` instead of creating a new expression to compute `umin(len_A, len_B)`. I considered putting this cleverness in `SCEVExpander`, but I was worried that it may then have a deterimental effect on other passes that use it. So I decided it was better to just do this in the one place where it seems like an obviously good idea, with the intent of generalizing later if needed. Reviewers: atrick, reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10782 llvm-svn: 241838
OpenPOWER on IntegriCloud