summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* AMDGPU: Don't handle FP16_TO_FP in isCanonicalizedMatt Arsenault2018-07-311-4/+0
| | | | | | | This needs more special handling to do correctly. Fixes test in subsequent commit. llvm-svn: 338381
* [SLP] Fix PR38339: Instruction does not dominate all uses!Alexey Bataev2018-07-312-0/+35
| | | | | | | | | | | | | | | | Summary: If the ExtractElement instructions can be optimized out during the vectorization and we need to reshuffle the parent vector, this ShuffleInstruction may be inserted in the wrong place causing compiler to produce incorrect code. Reviewers: spatel, RKSimon, mkuper, hfinkel, javed.absar Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D49928 llvm-svn: 338380
* [LLD][ELF] - ICF: Check we do not fold sections which relocations reffering ↵George Rimar2018-07-312-0/+24
| | | | | | | | | | | to absolute symbols with a different values. This adds a test for the following uncovered piece of code: https://github.com/llvm-mirror/lld/blob/master/ELF/ICF.cpp#L263 Without that lines we would crash. llvm-svn: 338379
* [clangd] Do not build AST if no diagnostics were requestedIlya Biryukov2018-07-311-2/+5
| | | | | | | | | | | | | | | | Summary: It can be removed from the cache before the first access anyway, so building it can be a waste of time. Reviewers: ioeric Reviewed By: ioeric Subscribers: javed.absar, MaskRay, jkorous, arphaman, cfe-commits Differential Revision: https://reviews.llvm.org/D49991 llvm-svn: 338378
* [ELF][ARM] Implement support for Tag_ABI_VFP_argsPeter Smith2018-07-3111-1/+241
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Tag_ABI_VFP_args build attribute controls the procedure call standard used for floating point parameters on ARM. The values are: 0 - Base AAPCS (FP Parameters passed in Core (Integer) registers 1 - VFP AAPCS (FP Parameters passed in FP registers) 2 - Toolchain specific (Neither Base or VFP) 3 - Compatible with all (No use of floating point parameters) If the Tag_ABI_VFP_args build attribute is missing it has an implicit value of 0. We use the attribute in two ways: - Detect a clash in calling convention between Base, VFP and Toolchain. we follow ld.bfd's lead and do not error if there is a clash between an implicit Base AAPCS caused by a missing attribute. Many projects including the hard-float (VFP AAPCS) version of glibc contain assembler files that do not use floating point but do not have Tag_ABI_VFP_args. - Set the EF_ARM_ABI_FLOAT_SOFT or EF_ARM_ABI_FLOAT_HARD ELF header flag for Base or VFP AAPCS respectively. This flag is used by some ELF loaders. References: - Addenda to, and Errata in, the ABI for the ARM Architecture for Tag_ABI_VFP_args - Elf for the ARM Architecture for ELF header flags Fixes PR36009 Differential Revision: https://reviews.llvm.org/D49993 llvm-svn: 338377
* AMDGPU: Fold undef fcanonicalize to qNaNMatt Arsenault2018-07-312-2/+19
| | | | | | | | | | We could choose a free 0 for this, but this matches the behavior for fmul undef, 1.0. Also, the NaN use is more useful for folding use operations although if it's not eliminated it is more expensive in terms of code size. llvm-svn: 338376
* [LLD][ELF] - ICF: add test case testing we do not fold sections with the ↵George Rimar2018-07-311-0/+15
| | | | | | | | | | | different flags. NFCI. Previously the following condition was not tested at all: https://github.com/llvm-mirror/lld/blob/master/ELF/ICF.cpp#L300 Patch adds a test for `A->Flags != B->Flags` part. llvm-svn: 338375
* AMDGPU: Fix test check line bugsMatt Arsenault2018-07-313-23/+32
| | | | llvm-svn: 338374
* [ARM] Complete enumeration values for Tag_ABI_VFP_argsPeter Smith2018-07-311-0/+2
| | | | | | | | | | | The LLD implementation of Tag_ABI_VFP_args needs to check the rarely seen values of 3 (toolchain specific) and 4 compatible with both Base and VFP. Add the missing enumeration values so that LLD can refer to them without having to use the raw numbers. Differential Revision: https://reviews.llvm.org/D50049 llvm-svn: 338373
* [llvm-mca][BtVer2] Teach how to identify dependency-breaking idioms.Andrea Di Biagio2018-07-3111-114/+224
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch teaches llvm-mca how to identify dependency breaking instructions on btver2. An example of dependency breaking instructions is the zero-idiom XOR (example: `XOR %eax, %eax`), which always generates zero regardless of the actual value of the input register operands. Dependency breaking instructions don't have to wait on their input register operands before executing. This is because the computation is not dependent on the inputs. Not all dependency breaking idioms are also zero-latency instructions. For example, `CMPEQ %xmm1, %xmm1` is independent on the value of XMM1, and it generates a vector of all-ones. That instruction is not eliminated at register renaming stage, and its opcode is issued to a pipeline for execution. So, the latency is not zero. This patch adds a new method named isDependencyBreaking() to the MCInstrAnalysis interface. That method takes as input an instruction (i.e. MCInst) and a MCSubtargetInfo. The default implementation of isDependencyBreaking() conservatively returns false for all instructions. Targets may override the default behavior for specific CPUs, and return a value which better matches the subtarget behavior. In future, we should teach to Tablegen how to automatically generate the body of isDependencyBreaking from scheduling predicate definitions. This would allow us to expose the knowledge about dependency breaking instructions to the machine schedulers (and, potentially, other codegen passes). Differential Revision: https://reviews.llvm.org/D49310 llvm-svn: 338372
* [debuginfo-tests] tweak new test to be compatible with wider range of compilers.Tim Northover2018-07-311-2/+2
| | | | | | | | emplace_back was added in C++11, and its usage isn't critical to what's being tested so using push_back instead will allow this test to work with more compilers. llvm-svn: 338371
* [ELF][ARM] Add Arm ABI names for float ABI ELF Header flagsPeter Smith2018-07-311-2/+4
| | | | | | | | | | | | | | The ELF for the Arm architecture document defines, for EF_ARM_EABI_VER5 and above, the flags EF_ARM_ABI_FLOAT_HARD and EF_ARM_ABI_FLOAT_SOFT. These have been defined to be compatible with the existing EF_ARM_VFP_FLOAT and EF_ARM_SOFT_FLOAT used by gcc for EF_ARM_EABI_UNKNOWN. This patch adds the flags in addition to the existing ones so that any code depending on the old names will still work. Differential Revision: https://reviews.llvm.org/D49992 llvm-svn: 338370
* Revert r338365: [X86] Improved sched models for X86 BT*rr instructions.Simon Pilgrim2018-07-3113-112/+48
| | | | | | | | https://reviews.llvm.org/D49243 Contains WIP code that should not have been included. llvm-svn: 338369
* [SystemZ] Improve decoding in case of instructions with four register operands.Jonas Paulsson2018-07-314-13/+48
| | | | | | | | | | | | | | Since z13, the max group size will be 2 if any μop has more than 3 register sources. This has been ignored sofar in the SystemZHazardRecognizer, but is now handled by recognizing those instructions and adjusting the tracking of decoding and the cost heuristic for grouping. Review: Ulrich Weigand https://reviews.llvm.org/D49847 llvm-svn: 338368
* [InstCombine] simplify code for A & (A ^ B) --> A & ~BSanjay Patel2018-07-312-26/+9
| | | | | | | | | | | | | This fold was written in an odd way and tried to avoid an endless loop by bailing out on all constants instead of the supposedly problematic case of -1. But (X & -1) should always be simplified before we reach here, so I'm not sure how that is a problem. There were no tests for the commuted patterns, so I added those at rL338364. llvm-svn: 338367
* clang-format: try to make the doc for ↵Hans Wennborg2018-07-311-9/+13
| | | | | | | | ConstructorInitializerAllOnOneLineOrOnePerLine more clear PR38080 complained that the "OnePerLine" case wasn't previously shown. llvm-svn: 338366
* [X86] Improved sched models for X86 BT*rr instructions.Andrew V. Tischenko2018-07-3113-48/+112
| | | | | | https://reviews.llvm.org/D49243 llvm-svn: 338365
* [InstCombine] move/add tests for xor+add fold; NFCSanjay Patel2018-07-313-23/+94
| | | | llvm-svn: 338364
* windows_support.rst: Add links for downloadingHans Wennborg2018-07-311-0/+7
| | | | llvm-svn: 338363
* index.rst: pe/coff does support pdbs nowHans Wennborg2018-07-311-1/+1
| | | | llvm-svn: 338362
* [clangd] Report diagnostics even if WantDiags::No AST was reusedIlya Biryukov2018-07-312-22/+71
| | | | | | | | | | | | | | | | Summary: After r338256, clangd stopped reporting diagnostics if WantDiags::No request is followed by a WantDiags::Yes request but the AST can be reused. Reviewers: ioeric Reviewed By: ioeric Subscribers: javed.absar, MaskRay, jkorous, arphaman, jfb, cfe-commits Differential Revision: https://reviews.llvm.org/D50045 llvm-svn: 338361
* Fix linux-header-search.cpp with CLANG_DEFAULT_CXX_STDLIBJonas Hahnfeld2018-07-311-2/+2
| | | | | | | This configuration was broken after r338294 because Clang might be configured to always use libc++. llvm-svn: 338360
* [X86] Improved sched models for X86 SHLD/SHRD* instructions.Andrew V. Tischenko2018-07-3111-196/+70
| | | | | | Differential Revision: https://reviews.llvm.org/D9611 llvm-svn: 338359
* [X86][SSE] isFNEG - Use getTargetConstantBitsFromNode to handle all constant ↵Simon Pilgrim2018-07-311-31/+7
| | | | | | | | | | cases isFNEG was duplicating much of what was done by getTargetConstantBitsFromNode in its own calls to getTargetConstantFromNode. Noticed while reviewing D48467. llvm-svn: 338358
* [ARM] Allow automatically deducing the thumb instruction size for .instMartin Storsjo2018-07-313-4/+31
| | | | | | | | This matches GAS, that allows unsuffixed .inst for thumb. Differential Revision: https://reviews.llvm.org/D49937 llvm-svn: 338357
* [ARM] Support the .inst directive for MachO and COFF targetsMartin Storsjo2018-07-314-25/+90
| | | | | | | | | | Contrary to ELF, we don't add any markers that distinguish data generated with .short/.long from normal instructions, so the .inst directive only adds compatibility with assembly that uses it. Differential Revision: https://reviews.llvm.org/D49936 llvm-svn: 338356
* [AArch64] Support the .inst directive for MachO and COFF targetsMartin Storsjo2018-07-313-7/+60
| | | | | | | | | | Contrary to ELF, we don't add any markers that distinguish data generated with .long from normal instructions, so the .inst directive only adds compatibility with assembly that uses it. Differential Revision: https://reviews.llvm.org/D49935 llvm-svn: 338355
* [ARM] Revert r337821Sam Parker2018-07-314-12/+12
| | | | | | | Re-enabling ARMCodeGenPrepare by default after failing to reproduce the bootstrap issues that I was concerned it was causing. llvm-svn: 338354
* Improve support of PDB as an external layout sourceAleksandr Urakov2018-07-315-23/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch improves support of PDB as an external layout source in the next cases: - Multiple non-virtual inheritance from packed base classes. When using external layout, there's no need to align `NonVirtualSize` of a base class. It may cause an overlapping when the next base classes will be layouted (but there is a slightly different case in the test because I can't find a way to specify a base offset); - Support of nameless structs and unions. There is no info about nameless child structs and unions in Microsoft cl-emitted PDBs. Instead all its fields are just treated as outer structure's (union's) fields. This also causes a fields overlapping, and makes it possible for unions to have fields located at a non-zero offset. Reviewers: rsmith, zturner, rnk, mstorsjo, majnemer Reviewed By: rnk Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D49871 llvm-svn: 338353
* Test commit.Hsiangkai Wang2018-07-311-1/+1
| | | | llvm-svn: 338352
* [InstSimplify] tests for D48828, D49981: fold extraction from std::pairHiroshi Inoue2018-07-312-12/+12
| | | | | | Minor touch up in the previous comment. llvm-svn: 338351
* [InstSimplify] tests for D48828, D49981: fold extraction from std::pairHiroshi Inoue2018-07-312-20/+100
| | | | | | Updated unit tests for D48828 and D49981. llvm-svn: 338350
* [XRay][compiler-rt] Update test to use similar structureDean Michael Berris2018-07-311-3/+3
| | | | | | This is a follow-up to D50037. llvm-svn: 338349
* [NFC] Collect statistics in GuardWideningMax Kazantsev2018-07-311-0/+4
| | | | llvm-svn: 338348
* [XRay][compiler-rt] Profiling Mode: Include file header in buffersDean Michael Berris2018-07-315-25/+72
| | | | | | | | | | | | | | | | | Summary: This change provides access to the file header even in the in-memory buffer processing. This allows in-memory processing of the buffers to also check the version, and the format, of the profile data. Reviewers: eizan, kpw Reviewed By: eizan Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D50037 llvm-svn: 338347
* [VPlan] Introduce VPLoopInfo analysis.Diego Caballero2018-07-315-1/+154
| | | | | | | | | | | | | | The patch introduces loop analysis (VPLoopInfo/VPLoop) for VPBlockBases. This analysis will be necessary to perform some H-CFG transformations and detect and introduce regions representing a loop in the H-CFG. Reviewers: fhahn, rengolin, mkuper, hfinkel, mssimpso Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D48816 llvm-svn: 338346
* Remove Stream::UnitTestRaphael Isemann2018-07-312-47/+0
| | | | | | | | | | | | | | Summary: No one is using this method, and it also doesn't really make a lot of sense to have it around. Reviewers: davide Reviewed By: davide Subscribers: davide, lldb-commits Differential Revision: https://reviews.llvm.org/D50026 llvm-svn: 338345
* Revert r338340 "[MS Demangler] Better demangling of template arguments."Reid Kleckner2018-07-312-140/+46
| | | | | | Breaks the build with GCC, apparently. llvm-svn: 338344
* [coroutines] Fix handling of dependent co_await in StmtProfiler.Richard Smith2018-07-312-1/+12
| | | | | | | | | | | Fix "Invalid operator call kind" error (llvm_unreachable) in DecodeOperatorCall when profiling a dependent co_await. Patch by Victor Zverovich! Differential Revision: https://reviews.llvm.org/D50002 llvm-svn: 338343
* [X86] Stop accidentally running the Bonnell LEA fixup path on Goldmont.Craig Topper2018-07-312-2/+1
| | | | | | In one place we checked X86Subtarget.slowLEA() to decide if the pass should run. But to decide what the pass should we only check isSLM. This resulted in Goldmont going down the Bonnell path. llvm-svn: 338342
* [RISCV] Fixed test case failure due to r338047Ana Pazos2018-07-311-1/+1
| | | | llvm-svn: 338341
* [MS Demangler] Better demangling of template arguments.Zachary Turner2018-07-312-46/+140
| | | | | | | | | | | This patch fixes demangling of template aliases as template-template arguments, and also fixes function pointers and references as not type template parameters. All of these can be properly demangled now, so I've ported over the test clang/test/CodeGenCXX/ms-template-callbacks.cpp. All of these tests pass llvm-svn: 338340
* [analyzer] Rename test: cxx17-mandatory-elision.cpp -> copy-elision.cppArtem Dergachev2018-07-311-0/+0
| | | | | | It reflects its contents more accurately. No functional change intended. llvm-svn: 338339
* [Sema] Relax a failing assert in TemplateArgumentLocErik Pilkington2018-07-312-1/+14
| | | | | | | | | | | | | Any of these template argument kinds can be represented with an expression, so accept them in this constructor. Patch by Balaji Iyer! rdar://41459965 Differential revision: https://reviews.llvm.org/D49766 llvm-svn: 338338
* [AArch64][GlobalISel] Add isel support for G_BLOCK_ADDR.Amara Emerson2018-07-312-31/+129
| | | | | | | | | | | Also refactors some existing code to materialize addresses for the large code model so it can be shared between G_GLOBAL_VALUE and G_BLOCK_ADDR. This implements PR36390. Differential Revision: https://reviews.llvm.org/D49903 llvm-svn: 338337
* [AArch64][GlobalISel] Make G_BLOCK_ADDR legal.Amara Emerson2018-07-312-0/+47
| | | | | | Differential Revision: https://reviews.llvm.org/D49902 llvm-svn: 338336
* [GlobalISel] Add a G_BLOCK_ADDR opcode to handle IR blockaddress constants.Amara Emerson2018-07-316-1/+44
| | | | | | Differential Revision: https://reviews.llvm.org/D49900 llvm-svn: 338335
* Pacify sanitizer lint script that still does not run on WindowsReid Kleckner2018-07-311-1/+1
| | | | llvm-svn: 338334
* [analyzer] CStringChecker: Remember to highlight the argument expression range.Artem Dergachev2018-07-302-0/+16
| | | | | | | | | | | | | | | | | | | | | When emitting a bug report, it is important to highlight which argument of the call-expression is causing the problem. Before: warning: Null pointer argument in call to string comparison function   strcmp(a, b);   ^~~~~~~~~~~~ After: warning: Null pointer argument in call to string comparison function   strcmp(a, b);   ^      ~ Affects other output modes as well, not just text. Differential Revision: https://reviews.llvm.org/D50028 llvm-svn: 338333
* Code cleanup - change naked 'throw' expressions to call helpre function ↵Marshall Clow2018-07-301-33/+11
| | | | | | '__throw_future_error'. The behavior change is that if you build libc++ with exceptions disabled, and then use that in a program that sets the value of the future twice (for example), it will now abort instead of behaving unpredictably. llvm-svn: 338332
OpenPOWER on IntegriCloud