summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [NFC][X86] Add BMI runlines to align-down.ll testRoman Lebedev2020-01-031-2/+4
|
* [DAGCombiner] `~(add X, -1)` -> `neg X` foldRoman Lebedev2020-01-032-20/+24
| | | | | | | | | | | | | | | The fold 'A - (A & (B - 1))' -> 'A & (0 - B)' added in 8dab0a4a7d691f2704f1079538e0ef29548db159 is too specific. It should just be 'A - (A & B)' -> 'A & (~B)', but we currently fail to sink that '~' into `(B - 1)`. Name: ~(X - 1) -> (0 - X) %o = add i32 %X, -1 %r = xor i32 %o, -1 => %r = sub i32 0, %X https://rise4fun.com/Alive/rjU
* [NFC][DAGCombine][X86] '~(X - 1)' pattern testsRoman Lebedev2020-01-031-0/+120
| | | | | | | | | | | | | | | The fold 'A - (A & (B - 1))' -> 'A & (0 - B)' added in 8dab0a4a7d691f2704f1079538e0ef29548db159 is too specific. It should just be 'A - (A & B)' -> 'A & (~B)', but we currently fail to sink that '~' into `(B - 1)`. Name: ~(X - 1) -> (0 - X) %o = add i32 %X, -1 %r = xor i32 %o, -1 => %r = sub i32 0, %X https://rise4fun.com/Alive/rjU
* [DAGCombine][X86][Thumb2/LowOverheadLoops] `A - (A & C)` -> `A & (~C)` fold ↵Roman Lebedev2020-01-035-60/+43
| | | | | | | | | | | | | | | | | | | | | (PR44448) While we do manage to fold integer-typed IR in middle-end, we can't do that for the main motivational case of pointers. There is @llvm.ptrmask() intrinsic which may or may not be helpful, but i'm not sure it is fully considered canonical yet, not everything is fully aware of it likely. Name: PR44448 ptr - (ptr & C) -> ptr & (~C) %bias = and i32 %ptr, C %r = sub i32 %ptr, %bias => %r = and i32 %ptr, ~C See https://bugs.llvm.org/show_bug.cgi?id=44448 https://reviews.llvm.org/D71499
* [NFC][DAGCombine][X86] Tests for 'A - (A & C)' pattern (PR44448)Roman Lebedev2020-01-031-0/+169
| | | | | | | | | | | | | | | Name: PR44448 ptr - (ptr & C) -> ptr & (~C) %bias = and i32 %ptr, C %r = sub i32 %ptr, %bias => %r = and i32 %ptr, ~C The main motivational pattern involes pointer-typed values, so this transform can't really be done in middle-end. See https://bugs.llvm.org/show_bug.cgi?id=44448 https://reviews.llvm.org/D71499
* [NFC][DAGCombine] Clarify comment for 'A - (A & (B - 1))' foldRoman Lebedev2020-01-031-1/+1
|
* [ARM][NFC] Update MIR testSam Parker2020-01-031-23/+40
|
* Use llvm_canonicalize_cmake_booleans where intendedserge-sans-paille2020-01-032-4/+2
| | | | Differential Revision: https://reviews.llvm.org/D72130
* Fix compiler extension testingserge-sans-paille2020-01-032-1/+2
| | | | | | Correctly declare example dependency. Pipe stderr through FileCheck. Differential Revision: https://reviews.llvm.org/D72130
* Fix typo in compiler extension testingserge-sans-paille2020-01-033-3/+3
| | | | | | s/CHECK-/CHECK Differential Revision: https://reviews.llvm.org/D72130
* Fix for a dangling point bug in DeadStoreElimination passAnkit2020-01-032-17/+80
| | | | | | | | | | | | | | The patch makes sure that the LastThrowing pointer does not point to any instruction deleted by call to DeleteDeadInstruction. While iterating through the instructions the pass maintains a pointer to the lastThrowing Instruction. A call to deleteDeadInstruction deletes a dead store and other instructions feeding the original dead instruction which also become dead. The instruction pointed by the lastThrowing pointer could also be deleted by the call to DeleteDeadInstruction and thus it becomes a dangling pointer. Because of this, we see an error in the next iteration. In the patch, we maintain a list of throwing instructions encountered previously and use the last non deleted throwing instruction from the container. Reviewers: fhahn, bcahoon, efriedma Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D65326
* [InstCombine] replace undef elements in vector constant when doing icmp ↵Sanjay Patel2020-01-036-10/+27
| | | | | | | | | | | | | | folds (PR44383) As shown in P44383: https://bugs.llvm.org/show_bug.cgi?id=44383 ...we can't safely propagate a vector constant through this icmp fold if that vector constant contains undefined elements. We know that each defined element of the constant is safe though, so find the first of those and replicate it into the formerly undef lanes. Differential Revision: https://reviews.llvm.org/D72101
* Fix typo "psuedo" in commentsJay Foad2020-01-035-6/+6
|
* [TargetLowering] Remove comments referring to TLOFJay Foad2020-01-031-2/+0
| | | | | | These have been obsolete since about r221926, when TargetLoweringObjectFile was completely moved from TargetLowering to TargetMachine.
* [mlir][spirv] Fix shader ABI attribute prefix and add verificationLei Zhang2020-01-038-41/+219
| | | | | | | | | | This commit fixes shader ABI attributes to use `spv.` as the prefix so that they match the dialect's namespace. This enables us to add verification hooks in the SPIR-V dialect to verify them. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D72062
* [test][ELF] Use CHECK-NEXT to properly verify error messagesJames Henderson2020-01-031-34/+36
| | | | | | Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D72092
* [DebugInfo] Remove redundant checks for past-the-end of prologueJames Henderson2020-01-032-35/+16
| | | | | | | | | | | | | | The V5 directory and filename tables had checks in to make sure we hadn't read past the end of the line table prologue. Since previous changes to the data extractor class ensure we never read past the end, these checks are now redundant, so this patch removes them. There is still a check to show that the whole prologue remains within the prologue length. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D71768
* [OpenCL] Add link to C++ for OpenCL documentationAnastasia Stulova2020-01-032-281/+36
| | | | | | | | | Remove description of language mode from the language extensions and add a link to pdf document. Tags: #clang Differential Revision: https://reviews.llvm.org/D72076
* [Syntax] Build spanning SimpleDecalration for classes, structs, etcIlya Biryukov2020-01-032-21/+70
| | | | | | | When they are free-standing, e.g. `struct X;` or `struct X {};`. Although this complicates the common case (of free-standing class declarations), this ensures the less common case (e.g. `struct X {} a;`) are handled uniformly and produce similar syntax trees.
* [test][llvm-dwarfdump] Use --implicit-check-not to simplify test checksJames Henderson2020-01-031-11/+5
| | | | | | | | | This removes the need to duplicate the LASTONLY check pattern and the last part of the NONFATAL pattern in the modified test. Reviewed By: MaskRay, JDevlieghere Differential Revision: https://reviews.llvm.org/D71757
* [test][llvm-dwarfdump] Normalise contents and checks for line tablesJames Henderson2020-01-032-60/+86
| | | | | | | | | | | | | The line tables in debug_line_malformed.s had contents that varied more than was necessary for the testing, making it harder to follow what was important. This patch normalises them so that they all share more-or-less the same body. Additionally, it makes the testing for what was printed more consistent, to show that the right parts of the line table prologue and body are/are not parsed and printed. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D71755
* [test][llvm-dwarfdump] Add missing checks for table dumpingJames Henderson2020-01-031-1/+15
| | | | | | | | | | | | | | | Some of the tables in debug_line_malformed.s were not being checked in the NONFATAL checks in debug_line_invalid.test (only the warnings coming from them were being checked). This made the test harder to follow. Additionally, a later change will change the way the errors are handled such that more of the line table will be printed. That will require checks for these tables (or something equivalent) so that the difference in behaviour can be observed. This patch adds checks for the three tables that were missing checks. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D71753
* [DAGCombine][X86][AArch64] 'A - (A & (B - 1))' -> 'A & (0 - B)' fold (PR44448)Roman Lebedev2020-01-033-55/+54
| | | | | | | | | | | | | | | | | | | | | | | While we do manage to fold integer-typed IR in middle-end, we can't do that for the main motivational case of pointers. There is @llvm.ptrmask() intrinsic which may or may not be helpful, but i'm not sure it is fully considered canonical yet, not everything is fully aware of it likely. https://rise4fun.com/Alive/ZVdp Name: ptr - (ptr & (alignment-1)) -> ptr & (0 - alignment) %mask = add i64 %alignment, -1 %bias = and i64 %ptr, %mask %r = sub i64 %ptr, %bias => %highbitmask = sub i64 0, %alignment %r = and i64 %ptr, %highbitmask See https://bugs.llvm.org/show_bug.cgi?id=44448 https://reviews.llvm.org/D71499
* [NFC][DAGCombine][X86][AArch64] Tests for 'A - (A & (B - 1))' pattern (PR44448)Roman Lebedev2020-01-032-0/+424
| | | | | | | | | | | | | | | | | | | https://rise4fun.com/Alive/ZVdp Name: ptr - (ptr & (alignment-1)) -> ptr & (0 - alignment) %mask = add i64 %alignment, -1 %bias = and i64 %ptr, %mask %r = sub i64 %ptr, %bias => %highbitmask = sub i64 0, %alignment %r = and i64 %ptr, %highbitmask The main motivational pattern involes pointer-typed values, so this transform can't really be done in middle-end. See https://bugs.llvm.org/show_bug.cgi?id=44448 https://reviews.llvm.org/D71499
* [lldb][NFC] Remove forward declaration for non-existent type clang::Action ↵Raphael Isemann2020-01-033-7/+2
| | | | | | | and delete references to it There is no clang::Action anymore so our forward decl for it and the obsolete pointer in the ASTStructExtractor can both go (that code anyway didn't do anything).
* [lldb][NFC] Document TypeSystem and related Compiler* classesRaphael Isemann2020-01-034-12/+64
|
* [ARM][NFC] Move tail predication checksSam Parker2020-01-031-69/+76
| | | | | Extract the tail predication validation checks out into their own LowOverHeadLoop method.
* [X86] Reorder X86any* PatFrags to put the strict node first so that chain ↵Craig Topper2020-01-034-10/+10
| | | | | | | | | | | property will be inferred for the instruction by the tablegen backend. Also use X86any_vfpround instead of X86vfpround in some instruction definitions so the strict version can be used to infer the chain property. Without these changes we don't propagate strict FP chain through isel for some instructions.
* [clangd] Replace shortenNamespace with getQualificationKadir Cetinkaya2020-01-033-66/+79
| | | | | | | | | | Reviewers: ilya-biryukov Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D71652
* [llvm-size] print a blank line between archieve members when using sysv formatTH3CHARLie2020-01-034-6/+11
| | | | | | | | | | | | | | Summary: This patch is related to https://bugs.llvm.org/show_bug.cgi?id=42967 and it fixes llvm-size's sysv format output by adding a blank line between archieve members Reviewers: jhenderson, Jim, MaskRay Reviewed By: jhenderson, Jim, MaskRay Subscribers: MaskRay, Jim, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D71957
* [X86] Re-enable lowerUINT_TO_FP_vXi32 under fast-math by using an FSUB ↵Craig Topper2020-01-029-187/+189
| | | | | | | | | | | | | | | | | | | | | | | | instead of an FADD. Summary: We previously disabled this under fast math due to aggressive reassociation by the machine combiner. But I think we can work around this by using a FSUB instead of FADD for the first operation. This matches the similar algorithm we do for uint_to_fp i64->f64 in TargetLowering::expandUINT_TO_FP. If reassociation hasn't been a problem for that, hopefully its not a problem here. Reviewers: RKSimon, spatel, scanon Reviewed By: spatel Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D71968
* [DAGCombine] Initialize the default operation action for SIGN_EXTEND_INREG ↵QingShan Zhang2020-01-038-9/+403
| | | | | | | | | | | for vector type as 'expand' instead of 'legal' For now, we didn't set the default operation action for SIGN_EXTEND_INREG for vector type, which is 0 by default, that is legal. However, most target didn't have native instructions to support this opcode. It should be set as expand by default, as what we did for ANY_EXTEND_VECTOR_INREG. Differential Revision: https://reviews.llvm.org/D70000
* [X86] Enable strict FP by default and remove option ↵Wang, Pengfei2020-01-0323-133/+136
| | | | -disable-strictnode-mutation. NFCI.
* [mlir] NFC: Fix broken links in docsKazuaki Ishizaki2020-01-034-9/+9
| | | | | | | | | | | | | | Summary: This commit fixes missing links that are caused by the repository movement. Reviewers: Jim, rriddle, jpienaar Reviewed By: Jim, rriddle, jpienaar Subscribers: arpith-jacob, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72065
* Revert "[Attributor] AAValueConstantRange: Value range analysis using ↵Hideto Ueno2020-01-039-1456/+39
| | | | | | constant range" This reverts commit e9963034314edf49a12ea5e29f694d8f9f52734a.
* [compiler-rt] [netbsd] Switch to syscall for ThreadSelfTlsTcb()Kamil Rytarowski2020-01-031-11/+2
| | | | | This change avoids using internal, namespaced per-CPU calls that are not a stable interface to read the TSL base value.
* [PowerPC]: Fix predicate handling with SPEJustin Hibbits2020-01-022-211/+531
| | | | | SPE floating-point compare instructions only update the GT bit in the CR field. All predicates must therefore be reduced to GT/LE.
* Run update_llc_test_checks against SPE tests.Justin Hibbits2020-01-021-175/+670
| | | | | This is in preparation for further tests which are better generated with the script. No functional change.
* [X86] Optimization of inserting vxi1 sub vector into vXi1 vectorWang, Pengfei2020-01-039-4036/+3197
| | | | | | | | | | | | | | | | | Summary: After bugfix the undef value case here, we used more operations to implement inserting vxi1 sub vector into vXi1 vector, I optimize it by use less operations. The history information at https://reviews.llvm.org/D68311 Reviewers: craig.topper, LuoYuanke, yubing, annita.zhang, pengfei, LiuChen3, RKSimon Reviewed By: craig.topper Subscribers: hiraditya, llvm-commits Patch by Xiang Zhang (xiangzhangllvm) Differential Revision: https://reviews.llvm.org/D71917
* Revert "[lldb/Command] Add --force option for `watchpoint delete` command"Med Ismail Bennani2020-01-033-119/+19
| | | | This reverts commit 3620e5f28a4d2800fb6c325ec24b3d660e48b9ba.
* [lldb/Python] Remove unused imports (NFC)Jonas Devlieghere2020-01-021-9/+0
|
* [lldb/Python] Remove unused support file (NFC)Jonas Devlieghere2020-01-021-58/+0
|
* [lldb/Command] Add --force option for `watchpoint delete` commandMed Ismail Bennani2020-01-033-19/+119
| | | | | | | | | | | | Currently, there is no option to delete all the watchpoint without LLDB asking for a confirmation. Besides making the watchpoint delete command homogeneous with the breakpoint delete command, this option could also become handy to trigger automated watchpoint deletion i.e. using breakpoint actions. rdar://42560586 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
* [CMake] clang-scan-deps in Fuchsia distributionPetr Hosek2020-01-021-0/+1
| | | | | | | We would like to use clang-scan-deps in Fuchsia build so include it in the toolchain distribution. Differential Revision: https://reviews.llvm.org/D72113
* [PowerPC][AIX] Enable sret arguments.Sean Fertile2020-01-022-10/+90
| | | | | | Removes the fatal error for sret arguments and adds lit testing. Differential Revision: https://reviews.llvm.org/D71504
* [PDB] Print the most redundant type record indices with /summaryReid Kleckner2020-01-025-27/+133
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I used this information to motivate splitting up the Intrinsic::ID enum (5d986953c8b917bacfaa1f800fc1e242559f76be) and adding a key method to clang::Sema (586f65d31f32ca6bc8cfdb8a4f61bee5057bf6c8) which saved a fair amount of object file size. Example output for clang.pdb: Top 10 types responsible for the most TPI input bytes: index total bytes count size 0x3890: 8,671,220 = 1,805 * 4,804 0xE13BE: 5,634,720 = 252 * 22,360 0x6874C: 5,181,600 = 408 * 12,700 0x2A1F: 4,520,528 = 1,574 * 2,872 0x64BFF: 4,024,020 = 469 * 8,580 0x1123: 4,012,020 = 2,157 * 1,860 0x6952: 3,753,792 = 912 * 4,116 0xC16F: 3,630,888 = 633 * 5,736 0x69DD: 3,601,160 = 985 * 3,656 0x678D: 3,577,904 = 319 * 11,216 In this case, we can see that record 0x3890 is responsible for ~8MB of total object file size for objects in clang. The user can then use llvm-pdbutil to find out what the record is: $ llvm-pdbutil dump -types -type-index 0x3890 Types (TPI Stream) ============================================================ Showing 1 records. 0x3890 | LF_FIELDLIST [size = 4804] - LF_STMEMBER [name = `WORDTYPE_MAX`, type = 0x1001, attrs = public] - LF_MEMBER [name = `U`, Type = 0x37F0, offset = 0, attrs = private] - LF_MEMBER [name = `BitWidth`, Type = 0x0075 (unsigned), offset = 8, attrs = private] - LF_METHOD [name = `APInt`, # overloads = 8, overload list = 0x3805] ... In this case, we can see that these are members of the APInt class, which is emitted in 1805 object files. The next largest type is ASTContext: $ llvm-pdbutil dump -types -type-index 0xE13BE bin/clang.pdb 0xE13BE | LF_FIELDLIST [size = 22360] - LF_BCLASS type = 0x653EA, offset = 0, attrs = public - LF_MEMBER [name = `Types`, Type = 0x653EB, offset = 8, attrs = private] - LF_MEMBER [name = `ExtQualNodes`, Type = 0x653EC, offset = 24, attrs = private] - LF_MEMBER [name = `ComplexTypes`, Type = 0x653ED, offset = 48, attrs = private] - LF_MEMBER [name = `PointerTypes`, Type = 0x653EE, offset = 72, attrs = private] ... ASTContext only appears 252 times, but the list of members is long, and must be repeated everywhere it is used. This was the output before I split Intrinsic::ID: Top 10 types responsible for the most TPI input: 0x686C: 69,823,920 = 1,070 * 65,256 0x686D: 69,819,640 = 1,070 * 65,252 0x686E: 69,819,640 = 1,070 * 65,252 0x686B: 16,371,000 = 1,070 * 15,300 ... These records were all lists of intrinsic enums. Reviewers: MaskRay, ruiu Subscribers: mgrang, zturner, thakis, hans, akhuang, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D71437
* [lli] Add a filter to avoid importing the process's main symbol.Lang Hames2020-01-021-2/+6
| | | | | | | | If JIT'd code fails to define a main function and we import the process's definition then we will end up recursively calling lli's main until we overflow the stack and crash. This filter fixes the issue by ensuring that the process's main function is never imported. This results in lli producing a much friendlier "symbol not found" error when JIT'd code fails to define main.
* Fix llvm-symbolizer tests on Windows, one more time.Evgenii Stepanov2020-01-022-7/+7
|
* [mlir] Rewrite the internal representation of OpResult to be optimized for ↵River Riddle2020-01-028-167/+369
| | | | | | | | | | | | | | memory. Summary: This changes the implementation of OpResult to have some of the results be represented inline in Value, via a pointer int pair of Operation*+result number, and the rest being trailing objects on the main operation. The full details of the new representation is detailed in the proposal here: https://groups.google.com/a/tensorflow.org/g/mlir/c/XXzzKhqqF_0/m/v6bKb08WCgAJ The only difference between here and the above proposal is that we only steal 2-bits for the Value kind instead of 3. This means that we can only fit 2-results inline instead of 6. This allows for other users to steal the final bit for PointerUnion/etc. If necessary, we can always steal this bit back in the future to save more space if 3-6 results are common enough. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D72020
* Add C source to two debug info tests.Evgenii Stepanov2020-01-022-350/+411
| | | | | | | | | | Reviewers: dblaikie, jhenderson Subscribers: aprantl, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72024
OpenPOWER on IntegriCloud