summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [MachineBasicBlock] Take advantage of the partially dead information.Quentin Colombet2016-04-262-4/+10
| | | | | | | Thanks to that information we wouldn't lie on a register being live whereas it is not. llvm-svn: 267622
* [MachineInstrBundle] Improvement the recognition of dead definitions.Quentin Colombet2016-04-263-5/+12
| | | | | | | Now, it is possible to know that partial definitions are dead definitions and recognize that clobbered registers are also dead. llvm-svn: 267621
* [LVI] Apply transfer rule for overdefine inputs for binary operatorsPhilip Reames2016-04-262-11/+39
| | | | | | | | As pointed out by John Regehr over in http://reviews.llvm.org/D19485, LVI was being incredibly stupid about applying its transfer rules. Rather than gathering local facts from the expression itself, it was simply giving up entirely if one of the inputs was overdefined. This greatly impacts the precision of the overall analysis and makes it far more fragile as well. This patch builds on 267609 which did the same thing for unary casts. llvm-svn: 267620
* [NVPTX] Fix some usages of CodeGenOpt::None.Jingyue Wu2016-04-261-5/+9
| | | | | | | | | | NVPTXLowerKernelArgs is required for correctness, so it should not be guarded by CodeGenOpt::None. NVPTXPeephole is optimization only, so it should be skipped when CodeGenOpt::None. llvm-svn: 267619
* [LVI] A better fix for the assertion error introduced by 267609Philip Reames2016-04-262-10/+22
| | | | | | Essentially, I was using the wrong size function. For types which were sized, but not primitive, I wasn't getting a useful size for the operand and failed an assert. I fixed this, and also added a guard that the input is a sized type. Test case is for the original mistake. I'm not sure how to actually exercise the sized type check. llvm-svn: 267618
* [LVI] Speculative fix for assertion seen in clang botsPhilip Reames2016-04-261-0/+6
| | | | | | I'll clean this up and add a test case shortly. I want to make sure this does actually fix the bots; if not, I'll revert. llvm-svn: 267617
* Fix TestRegisterVariables.py on WindowsAdrian McCarthy2016-04-261-3/+3
| | | | | | | | Use __attribute__((regparm(x))) to ensure the compiler enregisters at least some arguments when calling functions. Differential Revision: http://reviews.llvm.org/D19548 llvm-svn: 267616
* [LowerExpectIntrinsic] make default likely/unlikely ratio biggerSanjay Patel2016-04-262-10/+22
| | | | | | | | | | We need the default ratio to be sufficiently large that it triggers transforms based on block frequency info (BFI) and plays well with the recently introduced BranchProbability used by CGP. Differential Revision: http://reviews.llvm.org/D19435 llvm-svn: 267615
* Reassociate: Simplify using lambdas. NFCJustin Bogner2016-04-261-17/+7
| | | | llvm-svn: 267614
* Return R_GOTREL for R_MIPS_GPREL*.Rafael Espindola2016-04-262-5/+6
| | | | | | | This lets Writer.cpp know that they are got relative, which will allow further simplifications. llvm-svn: 267613
* Module debugging: Add testcase for member classes of class template ↵Adrian Prantl2016-04-262-1/+18
| | | | | | specializations. llvm-svn: 267612
* Module debugging: Use the definition to determine module-defined types.Adrian Prantl2016-04-262-4/+11
| | | | | | Follow-up to r267464. Thanks to Richard Smith for pointing this out! llvm-svn: 267611
* [sanitizers] rewriting test assuming assert() changes coverage.Mike Aizatsky2016-04-261-19/+43
| | | | | | | | | | | | | Summary: On windows platform assert() call creates two distinct CFG edges which are coverage-instrumented. Simply calling assert would change coverage numbers on the platform. Subscribers: kubabrecka Differential Revision: http://reviews.llvm.org/D19514 llvm-svn: 267610
* [LVI] Infer local facts from unary expressionsPhilip Reames2016-04-262-16/+57
| | | | | | | | | | As pointed out by John Regehr over in http://reviews.llvm.org/D19485, LVI was being incredibly stupid about applying its transfer rules. Rather than gathering local facts from the expression itself, it was simply giving up entirely if one of the inputs was overdefined. This greatly impacts the precision of the overall analysis and makes it far more fragile as well. This patch implements only the unary operation case. Once this is in, I'll implement the same for the binary operations. Differential Revision: http://reviews.llvm.org/D19492 llvm-svn: 267609
* Optimization bisect support in X86-specific passesAndrew Kaylor2016-04-265-3/+13
| | | | | | Differential Revision: http://reviews.llvm.org/D19439 llvm-svn: 267608
* [CodeGen] Add getBuildVector and getSplatBuildVector helpers. NFCI.Ahmed Bougacha2016-04-2613-178/+173
| | | | | | Differential Revision: http://reviews.llvm.org/D17176 llvm-svn: 267606
* Revert "[SimplifyLibCalls] sprintf doesn't copy null bytes"David Majnemer2016-04-262-7/+5
| | | | | | | | | | The destination buffer that sprintf uses is restrict qualified, we do not need to worry about derived pointers referenced via format specifiers. This reverts commit r267580. llvm-svn: 267605
* Test commitErik Pilkington2016-04-261-0/+1
| | | | llvm-svn: 267604
* Call repl in getSymbolBody. NFC.Rafael Espindola2016-04-265-7/+7
| | | | | | Every caller was doing it. llvm-svn: 267603
* Move utility functions to DriverUtils.cpp.Rui Ueyama2016-04-263-28/+32
| | | | llvm-svn: 267602
* Try to get at_file_missing.c passing after LLVM r267556.Nico Weber2016-04-261-2/+2
| | | | | | | | | | r267556 made backslashes escape the next character unconditionally in rsp files. This test echos a path into a rsp file, and paths contain backslashes on Windows. Since it's not important for this test to get the filename from the rsp file, just pass it regularly. llvm-svn: 267601
* Handle Windows drive letters and ".." for --reproduce.Rui Ueyama2016-04-262-34/+54
| | | | | | | | | | | | | | | | When --reproduce <path> is given, then we need to concatenate input file paths to the given path to save input files to the directory. Previously, path concatenation didn't handle Windows drive letters so it could generate invalid paths such as "C:\D:\foo". It also didn't handle ".." path components, so it could produce some bad paths such as "foo/../../etc/passwd". In this patch, Windows drive letters and ".." are removed before concatenating paths. Differential Revision: http://reviews.llvm.org/D19551 llvm-svn: 267600
* Try to get ResponseFile.ll passing on Windows after r267556.Nico Weber2016-04-261-2/+4
| | | | llvm-svn: 267599
* Remove more unused variables.Zachary Turner2016-04-261-3/+0
| | | | llvm-svn: 267598
* Masked Store in Loop Vectorizer - bugfixElena Demikhovsky2016-04-262-13/+55
| | | | | | | | Fixed a bug in loop vectorization with conditional store. Differential Revision: http://reviews.llvm.org/D19532 llvm-svn: 267597
* PM: Port Internalize to the new pass managerJustin Bogner2016-04-268-105/+136
| | | | llvm-svn: 267596
* [llvm-pdbdump] Fix version reading on big endian systems.Zachary Turner2016-04-261-1/+2
| | | | llvm-svn: 267595
* UtilityFunction::MakeFunctionCaller uses the Error to report failure,Jim Ingham2016-04-261-0/+3
| | | | | | | | but when there's was no process it was just returning an null pointer and not setting the error. I don't have a scenario where this might go wrong, just code inspection... llvm-svn: 267594
* Add optimization bisect opt-in calls for Hexagon passesAndrew Kaylor2016-04-2618-1/+52
| | | | | | Differential Revision: http://reviews.llvm.org/D19509 llvm-svn: 267593
* [clang-tidy] Now adding correct misc-move-const-arg documentation ;]Alexander Kornienko2016-04-263-21/+20
| | | | | | + brushed the code a bit and renamed the test file to match the check name llvm-svn: 267592
* Apparently XFAIL tests that are supposed to fail to compile can be ↵Marshall Clow2016-04-267-14/+28
| | | | | | problematic. They still get compiled, and if the compile succeeds, the buildbots complain. Replace the XFAIL with #error. llvm-svn: 267591
* [OpenCL] Add predefined macros.Yaxun Liu2016-04-265-14/+81
| | | | | | | | | | | | OpenCL spec requires __OPENCL_C_VERSION__ to be defined based on -cl-std option. This patch implements that. The patch also defines __FAST_RELAXED_MATH__ based on -cl-fast-relaxed-math option. Also fixed a test using -std=c99 for OpenCL program. Limit allowed language standard of OpenCL to be OpenCL standards. Differential Revision: http://reviews.llvm.org/D19071 llvm-svn: 267590
* Fix warnings and -Werror build on clang.Zachary Turner2016-04-262-2/+2
| | | | llvm-svn: 267589
* Make test/ELF/reproduces.s test to work on Windows.Rui Ueyama2016-04-261-18/+13
| | | | | | | | | | Previously, the test didn't work on Windows because it tried to concatenate two (possibly) absolute paths. If two paths are absolute paths that have drive letters, then the result would become something like C:\foo\D:\bar. That's not a valid path. I changed the test to use relative paths. llvm-svn: 267588
* [clang-tidy] Added misc-move-const-arg docs.Alexander Kornienko2016-04-262-1/+17
| | | | llvm-svn: 267587
* [sanitizers] [NFC] Add defines for the various PowerPC ABIs.Marcin Koscielnicki2016-04-264-6/+37
| | | | | | Differential Revision: http://reviews.llvm.org/D19542 llvm-svn: 267586
* Parse and dump PDB DBI Stream Header InformationZachary Turner2016-04-2611-17/+296
| | | | | | | | | | | | | | | | | | The DBI stream contains a lot of bookkeeping information for other streams. In particular it contains information about section contributions and linked modules. This patch is a first attempt at parsing some of the information out of the DBI stream. It currently only parses and dumps the headers of the DBI stream, so none of the module data or section contribution data is pulled out. This is just a proof of concept that we understand the basic properties of the DBI stream's metadata, and followup patches will try to extract more detailed information out. Differential Revision: http://reviews.llvm.org/D19500 Reviewed By: majnemer, ruiu llvm-svn: 267585
* [CMake] Use just-built clang and build iOS support when building stage2Chris Bieneman2016-04-261-0/+3
| | | | | | The Apple stage2 build should include compiler-rt iOS libraries and be built with the stage2 compiler. This matches Apple's production clang builds. llvm-svn: 267584
* [Tail duplication] Handle source registers with subregistersKrzysztof Parzyszek2016-04-263-37/+155
| | | | | | | | | | | | | | When a block is tail-duplicated, the PHI nodes from that block are replaced with appropriate COPY instructions. When those PHI nodes contained use operands with subregisters, the subregisters were dropped from the COPY instructions, resulting in incorrect code. Keep track of the subregister information and use this information when remapping instructions from the duplicated block. Differential Revision: http://reviews.llvm.org/D19337 llvm-svn: 267583
* Reapply: "ARM: put correct symbol index on indirect pointers in __thread_ptr.""Tim Northover2016-04-263-3/+8
| | | | | | | A latent bug in llvm-objdump used the wrong format specifier on 32-bit targets, causing the test to fail. This fixes the issue. llvm-svn: 267582
* Internalize: More consistent file header and include guards. NFCJustin Bogner2016-04-261-4/+4
| | | | | | Match the style here to the other headers in Transforms/IPO. llvm-svn: 267581
* [SimplifyLibCalls] sprintf doesn't copy null bytesDavid Majnemer2016-04-262-5/+7
| | | | | | | | | | sprintf doesn't read or copy the terminating null byte from it's string operands. sprintf will append it's own after processing all of the format specifiers. This fixes PR27526. llvm-svn: 267580
* Swift Calling Convention: use %RAX for sret.Manman Ren2016-04-264-20/+40
| | | | | | | We don't need to copy the sret argument into %rax upon return. rdar://25671494 llvm-svn: 267579
* tests: tweak MIR for ARM tests to correct MI issuesSaleem Abdulrasool2016-04-262-5/+7
| | | | | | | | | The Machine Instruction Verifier flagged some issues in the serialized MIR. Adjust the input to correct them. Fixes the remaining portion of PR27480. llvm-svn: 267578
* test: remove some bleeding whitespaceSaleem Abdulrasool2016-04-262-57/+57
| | | | | | Kill bleeding whitespace. NFC llvm-svn: 267577
* [Release notes] Mention Clang-tidy misc-fold-init-type check.Eugene Zelenko2016-04-262-4/+10
| | | | | | Highlighting consistency in Clang-tidy misc-fold-init-type check documentation. llvm-svn: 267576
* [CMake] [PR27403] Fix COMPILER_RT_ENABLE_IOS when using Xcode from the App ↵Chris Bieneman2016-04-262-2/+6
| | | | | | | | | | Store. This change modifies find_darwin_sdk_dir to set a variable if a Darwin "Internal" SDK is present which allows CMake to disable components that require internal-only APIs. This mechanism is then used to disable TSan when an internal SDK is not present. llvm-svn: 267575
* [clang-tidy] New checker for redundant expressions.Etienne Bergeron2016-04-268-0/+318
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This checker finds redundant expression on both side of a binary operator. The current implementation provide a function to check whether expressions are equivalent. This implementation is able to recognize the common subset encounter in C++ program. Side-effects like "x++" are not considered to be equivalent. There are many False Positives related to macros and to floating point computations (detecting NaN). The checker is ignoring these cases. Example: ``` if( !dst || dst->depth != desired_depth || dst->nChannels != desired_num_channels || dst_size.width != src_size.width || dst_size.height != dst_size.height ) <<--- bug { ``` Reviewers: alexfh Subscribers: danielmarjamaki, fahlgren, jordan_rose, zaks.anna, Eugene.Zelenko, cfe-commits Differential Revision: http://reviews.llvm.org/D19451 llvm-svn: 267574
* [AMDGPU] Move reserved vgpr count for trap handler usage to ↵Konstantin Zhuravlyov2016-04-266-9/+20
| | | | | | | | SIMachineFunctionInfo + minor commenting changes Differential Revision: http://reviews.llvm.org/D19537 llvm-svn: 267573
* [CodeGenPrepare] use branch weight metadata to decide if a select should be ↵Sanjay Patel2016-04-268-41/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | turned into a branch This is part of solving PR27344: https://llvm.org/bugs/show_bug.cgi?id=27344 CGP should undo the SimplifyCFG transform for the same reason that earlier patches have used this same mechanism: it's possible that passes between SimplifyCFG and CGP may be able to optimize the IR further with a select in place. For the TLI hook default, >99% taken or not taken is chosen as the default threshold for a highly predictable branch. Even the most limited HW branch predictors will be correct on this branch almost all the time, so even a massive mispredict penalty perf loss would be overcome by the win from all the times the branch was predicted correctly. As a follow-up, we could make the default target hook less conservative by using the SchedMachineModel's MispredictPenalty. Or we could just let targets override the default by implementing the hook with that and other target-specific options. Note that trying to statically determine mispredict rates for close-to-balanced profile weight data is generally impossible if the HW is sufficiently advanced. Ie, 50/50 taken/not-taken might still be 100% predictable. Finally, note that this patch as-is will not solve PR27344 because the current __builtin_unpredictable() branch weight default values are 4 and 64. A proposal to change that is in D19435. Differential Revision: http://reviews.llvm.org/D19488 llvm-svn: 267572
OpenPOWER on IntegriCloud