summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [VirtualInstruction] Handle MetadataAsValue as constant.Michael Kruse2017-08-031-1/+1
| | | | | | | | | | | | | | The complication of bspatch.cc of the AOSP buildbot currently fails presumably because the occurance of a MetadataAsValue in an operand. This kind of value can occur as operands of intrinsics, the typical example being the debug intrinsics. Polly currently ignores the debug intrinsics and it is not yet clear which other intrinic might occur. For such cases, and to unbreak the AOSP buildbot, treat a MetadataAsValue as a constant because it can be referenced without modification in generated code. llvm-svn: 309992
* DAG: Provide access to Pass instance from SelectionDAGMatt Arsenault2017-08-033-3/+9
| | | | | | This allows accessing an analysis pass during lowering. llvm-svn: 309991
* [GlobalISel] Make GlobalISel a non-optional library.Quentin Colombet2017-08-0335-258/+40
| | | | | | | | With this change, the GlobalISel library gets always built. In particular, this is not possible to opt GlobalISel out of the build using the LLVM_BUILD_GLOBAL_ISEL variable any more. llvm-svn: 309990
* [PDB] Loosen checks for section contribution sizesReid Kleckner2017-08-031-1/+1
| | | | | | | The PDB debug data directory entry has an absolute path in it. This will make it different on every machine. llvm-svn: 309989
* [NewGVN] Fix the case where we have a phi-of-ops which goes away.Davide Italiano2017-08-032-6/+99
| | | | | | Patch by Daniel Berlin, fixes PR33196 (and probably something else). llvm-svn: 309988
* [PDB] Fix section contributionsReid Kleckner2017-08-037-46/+76
| | | | | | | | | | | | | | | | | | | | | Summary: PDB section contributions are supposed to use output section indices and offsets, not input section indices and offsets. This allows the debugger to look up the index of the module that it should look up in the modules stream for symbol information. With this change, windbg can now find line tables, but it still cannot print local variables. Fixes PR34048 Reviewers: zturner Subscribers: hiraditya, ruiu, llvm-commits Differential Revision: https://reviews.llvm.org/D36285 llvm-svn: 309987
* [LVI] Constant-propagate a zero extension of the switch condition value ↵Hiroshi Yamauchi2017-08-032-6/+255
| | | | | | | | | | | | | | | | | | | | | | | | | | | through case edges Summary: (This is a second attempt as https://reviews.llvm.org/D34822 was reverted.) LazyValueInfo currently computes the constant value of the switch condition through case edges, which allows the constant value to be propagated through the case edges. But we have seen a case where a zero-extended value of the switch condition is used past case edges for which the constant propagation doesn't occur. This patch adds a small logic to handle such a case in getEdgeValueLocal(). This is motivated by the Python 2.7 eval loop in PyEval_EvalFrameEx() where the lack of the constant propagation causes longer live ranges and more spill code than necessary. With this patch, we see that the code size of PyEval_EvalFrameEx() decreases by ~5.4% and a performance test improves by ~4.6%. Reviewers: sanjoy Reviewed By: sanjoy Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36247 llvm-svn: 309986
* Move unit test to the proper locationTaewook Oh2017-08-031-0/+0
| | | | | | | | | | | | | | Summary: Move test/CodeGen/AArch64/reg-bank-128bit.mir to test/CodeGen/AArch64/GlobalISel/reg-bank-128bit.mir so that the test is executed only when global-isel is enabled. lit.local.cfg under test/CodeGen/AArch64/GlobalISel checks if 'global-isel' is in the available_features while the same file under test/CodeGen/AArch64 doesn't. Reviewers: qcolombet, davide Reviewed By: davide Subscribers: davide, aemerson, javed.absar, igorb, kristof.beyls, llvm-commits Differential Revision: https://reviews.llvm.org/D36282 llvm-svn: 309985
* Use "foo-12345.o" instead of "foo.o-12345" as temporary file name.Nico Weber2017-08-031-2/+6
| | | | | | | | | | | | | | This helps some tools that do things based on the output's extension. For example, we got reports from users on Windows that have a tool that scan a build output dir (but skip .obj files). The tool would keep the "foo.obj-12345" file open, and then when clang tried to rename the temp file to the final output filename, that would fail. By making the tempfile end in ".obj", tools like this will now skip the temp files as well. https://reviews.llvm.org/D36238 llvm-svn: 309984
* [llvm-pdbutil] Allow diff to force module equivalencies.Zachary Turner2017-08-033-21/+83
| | | | | | | | | | | Sometimes the normal module equivalence detection algorithm doesn't quite work. For example, you might build the same program with MSVC and clang-cl, outputting to different object files, exes, and PDBs, then compare them. If the object files have different names though, then they won't be treated as equivalent. This way we can force specific module indices to be treated as equivalent. llvm-svn: 309983
* [libFuzzer] Un-reverting change in tests after fixing the failure on Linux.George Karpenkov2017-08-031-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D36242 llvm-svn: 309982
* test commitConnor Abbott2017-08-031-0/+1
| | | | llvm-svn: 309981
* Fix llvm-for-windows-on-linux build after LLVM r272701.Nico Weber2017-08-031-2/+2
| | | | | | | | | | | | The file is called "intrin.h". When building targeting Windows on a Linux system, with the SDK mounted in a case-insensitive file system, "Intrin.h" will miss clang's intrin.h header (because that's not in a case-insensitive file system) but then find intrin.h in the Microsoft SDK. clang can't handle the SDK's intrin.h. https://reviews.llvm.org/D36281 llvm-svn: 309980
* [test] Fix clang library dir in LD_LIBRARY_PATH For stand-alone buildMichal Gorny2017-08-033-4/+11
| | | | | | | | | | | | | | | | | | | Prepend the clang library directory (determined using SHLIBDIR, alike in clang) to the LD_LIBRARY_PATH to ensure that just-built clang libraries will be used instead of a previous installed version. When a stand-alone build is performed, LLVM_LIBS_DIR contains the path to installed LLVM library directory. The same directory frequently contains a previously installed version of clang. SHLIBDIR, on the other hand, is always the build-tree directory, and therefore contains the freshly built clang libraries. In a non-stand-alone build, both paths will be the same and therefore including them both will not cause any issues. Differential Revision: https://reviews.llvm.org/D30155 llvm-svn: 309979
* [mips] Revert r309942 & r309940Simon Dardis2017-08-036-46/+0
| | | | | | | | This reverts commit r309942 & commit r309940. A revert was requested following post commit review. llvm-svn: 309978
* Cut and paste error from r23162.Jim Ingham2017-08-032-2/+2
| | | | llvm-svn: 309977
* Revert accidentally-committed files.Richard Smith2017-08-033-1840/+731
| | | | llvm-svn: 309976
* Don't emit undefined-internal warnings for CXXDeductionGuideDecls.Richard Smith2017-08-035-732/+1867
| | | | | | Patch by ~paul (cynecx on phabricator)! Some test massaging by me. llvm-svn: 309975
* [builtins] Use Interlocked* intrinsics for atomics on MSVCMartin Storsjo2017-08-031-8/+6
| | | | | | | | | | | | Tested on MSVC 2013, 2015 and 2017 targeting X86, X64 and ARM. This fixes building emutls.c for Windows for ARM (both with clang which don't need these atomics fallbacks at all, but just failed due to the immintrin.h include before, and with MSVC). Differential Revision: https://reviews.llvm.org/D36071 llvm-svn: 309974
* These tests use 80-bit long doubles, which are x86 only. Mark them so.Sterling Augustine2017-08-034-16/+4
| | | | | | This avoids having each new target need to mark them as unsupported. llvm-svn: 309973
* Add an auto-continue flag to breakpoints & locations.Jim Ingham2017-08-0316-29/+273
| | | | | | | | | | | | | | You can get a breakpoint to auto-continue by adding "continue" as a command, but that has the disadvantage that if you hit two breakpoints simultaneously, the continue will force the process to continue, and maybe even forstalling the commands on the other. The auto-continue flag means the breakpoints can negotiate about whether to stop. Writing tests, I wanted to supply some commands when I made the breakpoints, so I also added that ability. llvm-svn: 309969
* [Analyzer] Add support for displaying cross-file diagnostic paths in HTML outputDevin Coughlin2017-08-0314-129/+285
| | | | | | | | | | | This change adds support for cross-file diagnostic paths in html output. If the diagnostic path is not cross-file, there is no change in the output. Patch by Vlad Tsyrklevich! Differential Revision: https://reviews.llvm.org/D30406 llvm-svn: 309968
* Fix check-lit compatibility with multi-config CMake generatorsGreg Bedwell2017-08-032-4/+15
| | | | | | | | | | | | | | | Multi-configuration CMake generators such as those for Visual Studio or Xcode do not specify a build config at configure time, but let the user choose at build time. In these cases binaries go into build/${Configuration}/bin rather than build/bin. Prior to this commit, check-lit would fail when using multi-configuration generators as it did not know how to resolve ${Configuration} in order to find tools such as FileCheck. This commit teaches it to resolve llvm_tools_dir within lit using the value specified with --param build_mode. Differential Revision: https://reviews.llvm.org/D36263 llvm-svn: 309967
* Disable loop peeling during full unrolling pass.Teresa Johnson2017-08-033-21/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Peeling should not occur during the full unrolling invocation early in the pipeline, but rather later with partial and runtime loop unrolling. The later loop unrolling invocation will also eventually utilize profile summary and branch frequency information, which we would like to use to control peeling. And for ThinLTO we want to delay peeling until the backend (post thin link) phase, just as we do for most types of unrolling. Ensure peeling doesn't occur during the full unrolling invocation by adding a parameter to the shared implementation function, similar to the way partial and runtime loop unrolling are disabled. Performance results for ThinLTO suggest this has a neutral to positive effect on some internal benchmarks. Reviewers: chandlerc, davidxl Subscribers: mzolotukhin, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D36258 llvm-svn: 309966
* Do not want to use BFI to get profile count for sample pgoDehao Chen2017-08-034-36/+86
| | | | | | | | | | | | | | Summary: For SamplePGO, we already record the callsite count in the call instruction itself. So we do not want to use BFI to get profile count as it is less accurate. Reviewers: tejohnson, davidxl, eraman Reviewed By: eraman Subscribers: sanjoy, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D36025 llvm-svn: 309964
* [X86] Adding a test for vector shuffle extractions.Simon Pilgrim2017-08-031-0/+114
| | | | | | | | | | When both the vector inputs of the shuffle vector is comprising of same vector or shuffle mask is accessing elements from only one operand vector (like in PR33758 test already present). Committed on behalf of @jbhateja (Jatin Bhateja) Differential Revision: https://reviews.llvm.org/D36271 llvm-svn: 309963
* Revert "[AArch64] Simplify AES*Tied pseudo expansion (NFC)."Tim Northover2017-08-031-3/+10
| | | | | | | | | | This reverts commit r309821. My suggestion was wrong because it left the MachineOperands tied which confused the verifier. Since there's no easy way to untie operands, the original BuildMI solution is probably best. llvm-svn: 309962
* [X86][AVX512] Tidied up v64i8 vector shuffle tests with tripleSimon Pilgrim2017-08-031-6/+4
| | | | llvm-svn: 309961
* Revert r304836.Nico Weber2017-08-031-4/+0
| | | | | | See discussion in https://reviews.llvm.org/D33900#824172 llvm-svn: 309960
* AMDGPU/SI: Don't fix a PHI under uniform branch in SIFixSGPRCopies only when ↵Changpeng Fang2017-08-032-3/+25
| | | | | | | | | | | | | | | | sources and destination are all sgprs Summary: If a PHI has at lease one VGPR operand, we have to fix the PHI in SIFixSGPRCopies. Reviewer: Matt Differential Revision: http://reviews.llvm.org/D34727 llvm-svn: 309959
* [diagtool] Add ability to pass in the id and return the name for aDon Hinton2017-08-032-2/+20
| | | | | | | | particular diagnostic. Differential Revision: https://reviews.llvm.org/D36252 llvm-svn: 309955
* [ELF] - Do not segfault if linkerscript tries to access Target too early.George Rimar2017-08-032-10/+32
| | | | | | | | | | | | | | Following possible scripts triggered accessing to Target when it was not yet initialized (was nullptr). MEMORY { name : ORIGIN = DATA_SEGMENT_RELRO_END; } MEMORY { name : ORIGIN = CONSTANT(COMMONPAGESIZE); } Patch errors out instead. Differential revision: https://reviews.llvm.org/D36140 llvm-svn: 309953
* Fix use after free in unit test.Benjamin Kramer2017-08-031-6/+6
| | | | llvm-svn: 309952
* [DAG] Allow merging of stores of vector loadsNirav Dave2017-08-032-10/+3
| | | | | | | | | | | | | Remove restriction disallowing merging of stores vector loads into larger store of larger vector load. Reviewers: RKSimon, efriedma, spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36158 llvm-svn: 309951
* Revert r309923, it caused PR34045.Nico Weber2017-08-033-229/+28
| | | | llvm-svn: 309950
* [TableGen] AsmMatcher: fix OpIdx computation when HasOptionalOperands is trueNirav Dave2017-08-031-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following instruction: "inst.eq $dst, $src" where ".eq" is an optional flag operand. The $src and $dst operands are registers. If we parse the instruction "inst r0, r1", the flag is not present and it will be marked in the "OptionalOperandsMask" variable. After the matching is complete we call the "convertToMCInst" method. The current implementation works only if the optional operands are at the end of the array. The "Operands" array looks like [token:"inst", reg:r0, reg:r1]. The first operand that must be added to the MCInst is the destination, the r0 register. The "OpIdx" (in the Operands array) for this register is 2. However, since the flag is not present in the Operands, the actual index for r0 should be 1. The flag is not present since we rely on the default value. This patch removes the "NumDefaults" variable and replaces it with an array (DefaultsOffset). This array contains an index for each operand (excluding the mnemonic). At each index, the array contains the number of optional operands that should be subtracted. For the previous example, this array looks like this: [0, 1, 1]. When we need to access the r0 register, we compute its index as 2 - DefaultsOffset[1] = 1. Patch by Alexandru Guduleasa! Reviewers: SamWot, nhaustov, niravd Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35998 llvm-svn: 309949
* Fix some typos in the documentation.Gabor Horvath2017-08-031-6/+6
| | | | | | Patch by: Reka Nikolett Kovacs llvm-svn: 309948
* [VirtualInstruction] Avoid use of getStmtFor(BB). NFC.Michael Kruse2017-08-031-1/+6
| | | | | | | | | | | With this patch, we get rid of the last use of getStmtFor(BB). Here this is done by getting the last statement of the incoming block in case the user is a phi node; otherwise just fetching the statement comprising the instruction for which the virtual use is being created. Differential Revision: https://reviews.llvm.org/D36268 llvm-svn: 309947
* [NewGVN] fix typos; NFCSanjay Patel2017-08-031-8/+8
| | | | llvm-svn: 309946
* [BDCE] add tests to show invalid/incomplete transformsSanjay Patel2017-08-031-0/+57
| | | | llvm-svn: 309945
* [GlobalISel] Only merge memory ops for mayLoad or mayStore instrs.Florian Hahn2017-08-032-34/+25
| | | | | | | | | | | | | | | | Summary: We only need to merge memory operands for instructions that access memory. This slightly reduces the number of actions executed. Reviewers: MatzeB, rovka, dsanders Reviewed By: dsanders Subscribers: aemerson, igorb, kristof.beyls, llvm-commits Differential Revision: https://reviews.llvm.org/D36151 llvm-svn: 309944
* Add missing REQUIRES lineTobias Grosser2017-08-031-0/+2
| | | | llvm-svn: 309943
* [mips] Fixup r309940.Simon Dardis2017-08-031-0/+2
| | | | | | Needed a // REQUIRES: mips-registered-target llvm-svn: 309942
* [clang-format] Fix indent of 'key <...>' and 'key {...}' in text protosKrasimir Georgiev2017-08-033-1/+61
| | | | | | | | | | | | | | | | | Summary: This patch fixes the indentation of the code pattern `key <...>`and `key {...}` in text protos. Previously, such line would be alinged depending on the column of the previous colon, which usually indents too much. I'm gonna go ahead and commit this since it's a straightforward bugfix. Reviewers: djasper, klimek Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D36143 llvm-svn: 309941
* [mips] Implement -muninit-const-in-rodataSimon Dardis2017-08-036-0/+44
| | | | | | | | | | | This option when combined with -mgpopt and -membedded-data places all uninitialized constant variables in the read-only section. Reviewers: atanasyan, nitesh.jain Differential Revision: https://reviews.llvm.org/D35917 llvm-svn: 309940
* Make sure that all parameter dimensions are set in scheduleTobias Grosser2017-08-034-45/+123
| | | | | | | | | | | | | | | | | | | | | | | Summary: In case the option -polly-ignore-parameter-bounds is set, not all parameters will be added to context and domains. This is useful to keep the size of the sets and maps we work with small. Unfortunately, for AST generation it is necessary to ensure all parameters are part of the schedule tree. Hence, we modify the GPGPU code generation to make sure this is the case. To obtain the necessary information we expose a new function Scop::getFullParamSpace(). We also make a couple of functions const to be able to make SCoP::getFullParamSpace() const. Reviewers: Meinersbur, bollu, gareevroman, efriedma, huihuiz, sebpop, simbuerg Subscribers: nemanjai, kbarton, pollydev, llvm-commits Tags: #polly Differential Revision: https://reviews.llvm.org/D36243 llvm-svn: 309939
* [test] Fix test case without Polly-ACC.Michael Kruse2017-08-031-0/+2
| | | | llvm-svn: 309938
* [clang-format] Fix parsing of <>-style proto optionsKrasimir Georgiev2017-08-032-0/+14
| | | | | | | | | | | | | | | | | Summary: This patch fixes the parsing of proto option fields like `option op = <...>`. Previously the parser did not enter the right code path inside the angle braces, causing the contents to be split into several unwrapped lines inside. I'll just go ahead and commit this since it's a straightforward bugfix. Reviewers: djasper, klimek Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D36217 llvm-svn: 309937
* ClangdTests: Try to unbreak the case CLANG_DEFAULT_CXX_STDLIB=libc++.NAKAMURA Takumi2017-08-031-1/+2
| | | | llvm-svn: 309936
* [mips] Add support -m(no-)embedded-data optionSimon Dardis2017-08-033-1/+35
| | | | | | | | | | | Add support for the -membedded-data option which places constant data in the .rodata section, rather than the .sdata section. Reviewers: atanasyan, nitesh.jain Differential Revision: https://reviews.llvm.org/D35914 llvm-svn: 309935
OpenPOWER on IntegriCloud