FailedChanges

Summary

  1. [sanitizer] Add BUILDBOT_MONO_REPO_PATH to use for local debugging
  2. Add LLVM lab buildslaves for Windows/Ubuntu builders. The initial buildslave configurations for a new hardware in LLVM lab. Requested for the staged buildebot http://lab.llvm.org:8014 Patch by Vlad Vereschaka. Differential Revision: https://reviews.llvm.org/D60635
Revision 359365 by Vitaly Buka:
[sanitizer] Add BUILDBOT_MONO_REPO_PATH to use for local debugging
Change TypePath in RepositoryPath in Workspace
The file was modified/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.shzorg/buildbot/builders/sanitizers/buildbot_functions.sh
Revision 358475 by gkistanova:
Add LLVM lab buildslaves for Windows/Ubuntu builders.

The initial buildslave configurations for a new hardware in LLVM lab.
Requested for the staged buildebot http://lab.llvm.org:8014

Patch by Vlad Vereschaka.

Differential Revision: https://reviews.llvm.org/D60635
Change TypePath in RepositoryPath in Workspace
The file was modified/zorg/trunk/buildbot/osuosl/master/config/builders.pybuildbot/osuosl/master/config/builders.py
The file was modified/zorg/trunk/buildbot/osuosl/master/config/slaves.pybuildbot/osuosl/master/config/slaves.py

Summary

  1. [gn] Use label_name rather than target_output_name for objects Multiple targets in the same output directory can use the same target_output_name. The typical example of that is having a shared and a static library of the same, e.g. libc++.so and libc++.a. When that's the case, the object files produced for each target are going to conflict. Using the label_name avoids this conflict since labels are guaranteed to be unique within a single BUILD.gn file which corresponds to a single output directory. Differential Revision: https://reviews.llvm.org/D60329
  2. Fix string UAF in new FileCheck test
  3. [X86][SSE] isHorizontalBinOp - add support for target shuffles Add target shuffle decoding to isHorizontalBinOp as well as ISD::VECTOR_SHUFFLE support. This does mean we can go through bitcasts so we need to bitcast the extracted args to ensure they are the correct type Fixes PR39936 and should help with PR39920/PR39921 Differential Revision: https://reviews.llvm.org/D61245
  4. [llvm-pdbutil] FunctionDumper::dump(PDBSymbolTypeFunctionArg) - fix null dereference warning Reported in https://www.viva64.com/en/b/0629/
  5. computePolynomialFromPointer - add missing early-out return for non-pointer types. Reported in https://www.viva64.com/en/b/0629/
  6. [InstCombine] reduce code duplication; NFC Follow-up to: rL359482 Avoid this potential problem throughout by giving the type a name and verifying the assumption that both operands are the same type.
  7. Fix additional cases of more that two dashes for options in tests.
  8. Remove duplicate line. NFCI. Reported in https://www.viva64.com/en/b/0629/
  9. [InstCombine] visitFCmpInst - appease copy+paste pattern warning. NFCI. PVS Studio's copy+paste recognizer was seeing this as a typo, technically Op0/Op1 in a fcmp should always be the same type, but we might as well avoid the issue. Reported in https://www.viva64.com/en/b/0629/
  10. [globalisel] Improve Legalizer debug output * LegalizeAction should be printed by name rather than number * Newly created instructions are incomplete at the point the observer first sees them. They are therefore recorded in a small vector and printed just before the legalizer moves on to another instruction. By this point, the instruction must be complete.
  11. [CommandLine] Don't allow unlimitted dashes for options. Part 1 or 5 Summary: Prior to this patch, the CommandLine parser would strip an unlimitted number of dashes from options. This patch limits it to two. Reviewers: rnk Reviewed By: rnk Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61229
  12. [X86] scaleShuffleMask - avoid potential signed overflow warning. Use size_t assignment to prevent a bad explicit type conversion warning. Given the typical size of shuffle masks this was never going to happen, but this at least stops the warning. Reported in https://www.viva64.com/en/b/0629/
  13. [TextAPI] Fix Symbol::dump which was failing to append the SymbolKind string. Reported in https://www.viva64.com/en/b/0629/
  14. [llvm-mca][x86] Fix MMX PMOVMSKB test This is defined as part of SSE1, XMM PMOVMSKB doesn't appear until SSE2
  15. [DAG] Refactor DAGCombiner::ReassociateOps Summary: Extract the logic for doing reassociations from DAGCombiner::reassociateOps into a helper function DAGCombiner::reassociateOpsCommutative, and use that helper to trigger reassociation on the original operand order, or the commuted operand order. Codegen is not identical since the operand order will be different when doing the reassociations for the commuted case. That causes some unfortunate churn in some test cases. Apart from that this should be NFC. Reviewers: spatel, craig.topper, tstellar Reviewed By: spatel Subscribers: dmgreen, dschuff, jvesely, nhaehnle, javed.absar, sbc100, jgravelle-google, hiraditya, aheejin, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61199
  16. FileCheck [3/12]: Stricter parsing of @LINE expressions Summary: This patch is part of a patch series to add support for FileCheck numeric expressions. This specific patch gives earlier and better diagnostics for the @LINE expressions. Rather than detect parsing errors at matching time, this commit adds enhance parsing to detect issues with @LINE expressions at parse time and diagnose them more accurately. Copyright: - Linaro (changes up to diff 183612 of revision D55940) - GraphCore (changes in later versions of revision D55940 and in new revision created off D55940) Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield Tags: #llvm Differential Revision: https://reviews.llvm.org/D60383
  17. [TableGen] Fix null pointer dereferencing. Reported in https://www.viva64.com/en/b/0629/
  18. Avoid "checking a pointer after dereferencing" warning. NFCI. Reported in https://www.viva64.com/en/b/0629/
  19. Move if() to newline to stop ambiguity over whether it should be else if. NFCI. Reported in https://www.viva64.com/en/b/0629/
  20. Fix operator precedence warning. NFCI. Reported in https://www.viva64.com/en/b/0629/
  21. Remove superfluous break from switch statement. NFCI. Reported in https://www.viva64.com/en/b/0629/
  22. [llvm-extract] Expose the group extraction feature of the BlockExtractor This patch extends the `-bb` option to be able to use the group extraction feature from the BlockExtractor. In particular, `-bb=func:bb` is modified to support a list of basic blocks per function: `-bb=func:bb1[;bb2...]` that will be extracted together if at all possible (region must be single entry.) Differential Revision: https://reviews.llvm.org/D60973
  23. [BlockExtractor] Expose a constructor for the group extraction NFC Differential Revision: https://reviews.llvm.org/D60971
  24. [BlockExtractor] Change the basic block separator from ',' to ';' This change aims at making the file format be compatible with the way LLVM handles command line options. Differential Revision: https://reviews.llvm.org/D60970
  25. Add AVX support to this test. Requested by Craig Topper and Andrew Kaylor as part of D55897.
  26. [X86] Remove duplicate string comparison Fix typo introduced in rL332824 where we simplified the extact string matches for "avx512.mask.permvar.sf.256" and "avx512.mask.permvar.si.256" to a string startswith test for "avx512.mask.permvar."
  27. [AArch64][SVE] Asm: add aliases for unpredicated bitwise logical instructions This patch adds aliases for element sizes .B/.H/.S to the AND/ORR/EOR/BIC bitwise logical instructions. The assembler now accepts these instructions with all element sizes up to 64-bit (.D). The preferred disassembly is .D.
  28. [X86][SSE] Add scalar horizontal add/sub tests for non-0/1 element extractions
  29. FileCheck [2/12]: Stricter parsing of -D option Summary: This patch is part of a patch series to add support for FileCheck numeric expressions. This specific patch gives earlier and better diagnostics for the -D option. Prior to this change, parsing of -D option was very loose: it assumed that there is an equal sign (which to be fair is now checked by the FileCheck executable) and that the part on the left of the equal sign was a valid variable name. This commit adds logic to ensure that this is the case and gives diagnostic when it is not, making it clear that the issue came from a command-line option error. This is achieved by sharing the variable parsing code into a new function ParseVariable. Copyright: - Linaro (changes up to diff 183612 of revision D55940) - GraphCore (changes in later versions of revision D55940 and in new revision created off D55940) Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield Tags: #llvm Differential Revision: https://reviews.llvm.org/D60382
  30. [LoopSimplifyCFG] Suppress expensive DomTree verification This patch makes verification level lower for builds with inexpensive checks. Differential Revision: https://reviews.llvm.org/D61055
  31. [yaml2obj] - Simplify and reduce the code. NFC. This inlines 2 single line static methods and simplifies the code. It is also possible to remove the `Is64Bit` variable since it is used only once, but I am not sure it will be better for readability.
  32. [yaml2obj] - Replace a loop with write_zeros(). NFCI. This looks better.
  33. [yaml2obj] - Cleanup and simplify the code. NFCI. The current code has the following problems: `initSymtabSectionHeader` and `initStrtabSectionHeader` method names saying us they are going to initialize the section headers. Though for a few cases sh_flags field is initialized outside of them. It does not look clean. This patch moves initialization of the sh_flags inside these methods. Also, it removes an excessive variable, what together with the above change hopefully makes the code a bit more readable.
  34. [X86][SSE] Moved haddps test from phaddsub.ll to haddsub.ll (D61245) Also merged duplicate PR39921 + PR39936 tests
  35. [InstCombine][X86] Add PACKSS tests for truncation of sign-extended comparisons
  36. [ARM] Add bitcast/extract_subvec. of fp16 vectors Summary: This patch adds some basic operations for fp16 vectors, such as bitcast from fp16 to i16, required to perform extract_subvector (also added here) and extract_element. Reviewers: SjoerdMeijer, DavidSpickett, t.p.northover, ostannard Reviewed By: ostannard Subscribers: javed.absar, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60618
  37. [ARM] Add v4f16 and v8f16 types to the CallingConv Summary: The Procedure Call Standard for the Arm Architecture states that float16x4_t and float16x8_t behave just as uint16x4_t and uint16x8_t for argument passing. This patch adds the fp16 vectors to the ARMCallingConv.td file. Reviewers: miyuki, ostannard Reviewed By: ostannard Subscribers: ostannard, javed.absar, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60720
  38. vs integration: Use llvm-lib for librarian This uses llvm-lib.exe for the librarian instead of Visual Studio provided lib.exe. Without this it is not possible to create static libraries with -flto using the plugin. Original patch by Steven Noonan This fixes: PR41147 Differential Revision: https://reviews.llvm.org/D61193
  39. gn: Fix check-clang build after r359179
  40. Try to use /proc on FreeBSD for getExecutablePath Currently, clang's libTooling passes this function a fake argv0, which means that no libTooling tools can find the standard headers on FreeBSD. With this change, these will now work on any FreeBSD systems that have procfs mounted. This isn't the right fix for the libTooling issue, but it does bring the FreeBSD implementation of getExecutablePath closer to the Linux and macOS implementations.
  41. [DebugInfo] Terminate more location-list ranges at the end of blocks This patch fixes PR40795, where constant-valued variable locations can "leak" into blocks placed at higher addresses. The root of this is that DbgEntityHistoryCalculator terminates all register variable locations at the end of each block, but not constant-value variable locations. Fixing this requires constant-valued DBG_VALUE instructions to be broadcast into all blocks where the variable location remains valid, as documented in the LiveDebugValues section of SourceLevelDebugging.rst, and correct termination in DbgEntityHistoryCalculator. Differential Revision: https://reviews.llvm.org/D59431
  42. [DWARF] Fix dump of local/foreign TU lists in .debug_names Differential Revision: https://reviews.llvm.org/D61241
  43. [DWARF] Delete a redundant check in getFileNameByIndex()
  44. [X86] Remove some intel syntax aliases on (v)cvtpd2(u)dq, (v)cvtpd2ps, (v)cvt(u)qq2ps. Add 'x' and'y' suffix aliases to masked version of the same in att syntax. The 128/256 bit version of these instructions require an 'x' or 'y' suffix to disambiguate the memory form in att syntax. We were allowing the same suffix in intel syntax, but it appears gas does not do that. gas does allow the 'x' and 'y' suffix on register and broadcast forms even though its not needed. We were allowing it on unmasked register form, but not on masked versions or on masked or unmasked broadcast form. While there fix some test coverage holes so they can be extended with the 'x' and 'y' suffix tests.
  45. [llvm-nm] -print-size => --print-size
  46. [llvm-nm] Simplify and fix a buffer overflow * char SymbolAddrStr[18] can't hold "%" PRIo64 which may need 22 characters. * Use range-based for * Delete unnecessary typedef * format(...).print(Str, sizeof(Str)) + outs() << Str => outs() << format(...) * Use cascading outs() << .. << .. * Use iterator_range(Container &&c) * (A & B) == B => A & B if B is a power of 2 * replace null sentinel in constants with makeArrayRef
  47. llvm-cvtres: Attempt to make llvm-cvtres/duplicate.test work on big-endian systems
  48. [X86] Add PR39921 HADD pairwise reduction test and AVX2 test coverage
  49. [X86][AVX] Add fast-hops target for add/fadd reduction tests
  50. [X86] Add PR39936 HADD Tests
  51. [X86][SSE] combineExtractVectorElt - add early-out to return zero/undef for out-of-range extraction indices.
  52. [ConstantRange] Add makeExactNoWrapRegion() I got confused on the terminology, and the change in D60598 was not correct. I was thinking of "exact" in terms of the result being non-approximate. However, the relevant distinction here is whether the result is * Largest range such that: Forall Y in Other: Forall X in Result: X BinOp Y does not wrap. (makeGuaranteedNoWrapRegion) * Smallest range such that: Forall Y in Other: Forall X not in Result: X BinOp Y wraps. (A hypothetical makeAllowedNoWrapRegion) * Both. (makeExactNoWrapRegion) I'm adding a separate makeExactNoWrapRegion method accepting a single APInt (same as makeExactICmpRegion) and using it in the places where the guarantee is relevant. Differential Revision: https://reviews.llvm.org/D60960
  53. [X86][AVX] Enabled AVX512F tests and add PR40815 test case
  54. [X86][AVX] Combine non-lane crossing binary shuffles using X86ISD::VPERMV3 Some of the combines might be further improved if we lower more shuffles with X86ISD::VPERMV3 directly, instead of waiting to combine the results.
  55. [SelectionDAG] include FP min/max variants as binary operators The x86 test diffs don't look great because of extra move ops, but FP min/max should clearly be included in the list.
  56. [DAGCombiner] try repeated fdiv divisor transform before building estimate This was originally part of D61028, but it's an independent diff. If we try the repeated divisor reciprocal transform before producing an estimate sequence, then we have an opportunity to use scalar fdiv. On x86, the trade-off is 1 divss vs. 5 vector FP ops in the default estimate sequence. On recent chips (Skylake, Ryzen), the full-precision division is only 3 cycle throughput, so that's probably the better perf default option and avoids problems from x86's inaccurate estimates. The last 2 tests show that users still have the option to override the defaults by using the function attributes for reciprocal estimates, but those patterns are potentially made faster by converting the vector ops (including ymm ops) to scalar math. Differential Revision: https://reviews.llvm.org/D61149
  57. [MCA] Fix typo in AVX2 gather tests. NFC
  58. [X86][SSE] Optimize llvm.experimental.vector.reduce.xor.vXi1 parity reduction (PR38840) An xor reduction of a bool vector can be optimized to a parity check of the MOVMSK/BITCAST'd integer - if the population count is odd return 1, else return 0. Differential Revision: https://reviews.llvm.org/D61230
  59. [X86][AVX] Add AVX512DQ coverage for masked memory ops tests (PR34584)
  60. [X86] Remove (V)MOV64toSDrr/m and (V)MOVDI2SSrr/m. Use 128-bit result MOVD/MOVQ and COPY_TO_REGCLASS instead Summary: The register form of these instructions are CodeGenOnly instructions that cover GR32->FR32 and GR64->FR64 bitcasts. There is a similar set of instructions for the opposite bitcast. Due to the patterns using bitcasts these instructions get marked as "bitcast" machine instructions as well. The peephole pass is able to look through these as well as other copies to try to avoid register bank copies. Because FR32/FR64/VR128 are all coalescable to each other we can end up in a situation where a GR32->FR32->VR128->FR64->GR64 sequence can be reduced to GR32->GR64 which the copyPhysReg code can't handle. To prevent this, this patch removes one set of the 'bitcast' instructions. So now we can only go GR32->VR128->FR32 or GR64->VR128->FR64. The instruction that converts from GR32/GR64->VR128 has no special significance to the peephole pass and won't be looked through. I guess the other option would be to add support to copyPhysReg to just promote the GR32->GR64 to a GR64->GR64 copy. The upper bits were basically undefined anyway. But removing the CodeGenOnly instruction in favor of one that won't be optimized seemed safer. I deleted the peephole test because it couldn't be made to work with the bitcast instructions removed. The load version of the instructions were unnecessary as the pattern that selects them contains a bitcasted load which should never happen. Fixes PR41619. Reviewers: RKSimon, spatel Reviewed By: RKSimon Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61223
  61. Revert rL359389: [X86][SSE] Add support for <64 x i1> bool reduction Minor generalization of the existing <32 x i1> pre-AVX2 split code. ........ Causing irregular buildbot failures.
  62. [X86][AVX] Add additional SSE/AVX expandload and compressstore targets
  63. [X86][SSE] Add support for <64 x i1> bool reduction Minor generalization of the existing <32 x i1> pre-AVX2 split code.
  64. [X86][AVX] Cleanup and add additional expandload and compressstore tests sort order by types and add vXi32/vXi16/vXi8 test coverage
  65. [X86][AVX512] Improve vector bool reductions As predicate masks are legal on AVX512 targets, we avoid MOVMSK in these cases, but we can just bitcast the bool vector to the integer equivalent directly - avoiding expansion of the reduction to a shuffle pattern.
  66. [X86] Add vector boolean reduction tests (PR38840) AND/OR/XOR tests for the @llvm.experimental.vector.reduce intrinsics AND/OR are pretty good (pre-AVX512), XOR (not so common but used for parity reduction) is still pretty bad.
  67. [lli] Fix a typo in a cl::opt description. Patch by Wasiher. Thanks Wasiher! Differential Revision: https://reviews.llvm.org/D61135
  68. [llvm-nm][llvm-readelf] Avoid single-dash -long-option in tests
  69. Fix check-prefixes typo
  70. [DJB] Fix variable case after D61178
  71. [llvm-nm] Support section type 'u': STB_GNU_UNIQUE
  72. [X86][SSE] Add initial test case for subvector insert/extract of illegal types Suggested by @nikic on D59188
  73. [X86][AVX] Merge mask select with shuffles across extract_subvector (PR40332) Fixes PR40332 in the limited case where we're selecting between a target shuffle and a zero vector. We can extend this in the future to handle more opcodes and non-zero selections.
  74. [MCA] Add field `IsEliminated` to class Instruction. NFCI
  75. [cmake] Disable a GCC optimization when building LLVM for MIPS GCC when compiling LLVM for MIPS can introduce a jump to an uninitialized value when shrink wrapping is enabled. As shrink wrapping is enabled in GCC at all optimization levels, it must be disabled. This bug exists for all versions of GCC since 4.9.2. This partially resolves PR37701 / GCC PR target/86069. Patch by Simon Dardis. Differential Revision: https://reviews.llvm.org/D48069
  76. [X86] Use MOVQ for i64 atomic_stores when SSE2 is enabled Summary: If we have SSE2 we can use a MOVQ to store 64-bits and avoid falling back to a cmpxchg8b loop. If its a seq_cst store we need to insert an mfence after the store. Reviewers: spatel, RKSimon, reames, jfb, efriedma Reviewed By: RKSimon Subscribers: hiraditya, dexonsmith, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60546
  77. Revert "AMDGPU: Split block for si_end_cf" This reverts commit 7a6ef3004655dd86d722199c471ae78c28e31bb4. We discovered some internal test failures, so reverting for now. Differential Revision: https://reviews.llvm.org/D61213
  78. [AMDGPU] gfx1010 VOPC implementation Differential Revision: https://reviews.llvm.org/D61208
  79. [ORC] Add a 'plugin' interface to ObjectLinkingLayer for events/configuration. ObjectLinkingLayer::Plugin provides event notifications when objects are loaded, emitted, and removed. It also provides a modifyPassConfig callback that allows plugins to modify the JITLink pass configuration. This patch moves eh-frame registration into its own plugin, and teaches llvm-jitlink to only add that plugin when performing execution runs on non-Windows platforms. This should allow us to re-enable the test case that was removed in r359198.
  80. [GlobalISel][AArch64] Use getConstantVRegValWithLookThrough for extracts getConstantVRegValWithLookThrough does the same thing as the getConstantValueForReg function, and has more visibility across GISel. Plus, it supports looking through G_TRUNC, G_SEXT, and G_ZEXT. So, we get better code reuse and more functionality for free by using it. Add some test cases to select-extract-vector-elt.mir to show that we can now look through those instructions.
  81. [AsmPrinter] refactor to support %c w/ GlobalAddress' Summary: Targets like ARM, MSP430, PPC, and SystemZ have complex behavior when printing the address of a MachineOperand::MO_GlobalAddress. Move that handling into a new overriden method in each base class. A virtual method was added to the base class for handling the generic case. Refactors a few subclasses to support the target independent %a, %c, and %n. The patch also contains small cleanups for AVRAsmPrinter and SystemZAsmPrinter. It seems that NVPTXTargetLowering is possibly missing some logic to transform GlobalAddressSDNodes for TargetLowering::LowerAsmOperandForConstraint to handle with "i" extended inline assembly asm constraints. Fixes: - https://bugs.llvm.org/show_bug.cgi?id=41402 - https://github.com/ClangBuiltLinux/linux/issues/449 Reviewers: echristo, void Reviewed By: void Subscribers: void, craig.topper, jholewinski, dschuff, jyknight, dylanmckay, sdardis, nemanjai, javed.absar, sbc100, jgravelle-google, eraman, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, jrtc27, atanasyan, jsji, llvm-commits, kees, tpimh, nathanchance, peter.smith, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D60887
  82. [X86][AVX] Fold extract_subvector(broadcast(x)) -> broadcast(x) iff x has one use
  83. [AArch64][GlobalISel] Select G_BSWAP for vectors of s32 and s64 There are instructions for these, so mark them as legal. Select the correct instruction in AArch64InstructionSelector.cpp. Update select-bswap.mir and arm64-rev.ll to reflect the changes.
  84. [AMDGPU] gfx1010 VOP3 and VOP3P implementation Differential Revision: https://reviews.llvm.org/D61202
  85. [DAGCombine] Cleanup visitEXTRACT_SUBVECTOR. NFCI. Use ArrayRef::slice, reduce some rather awkward long lines for legibility and run clang-format.
  86. [ConstantRange] Add abs() support Add support for abs() to ConstantRange. This will allow to handle SPF_ABS select flavor in LVI and will also come in handy as a primitive for the srem implementation. The implementation is slightly tricky, because a) abs of signed min is signed min and b) sign-wrapped ranges may have an abs() that is smaller than a full range, so we need to explicitly handle them. Differential Revision: https://reviews.llvm.org/D61084
  87. [X86] Sink NoRegister creation for unused Base/Index registers into getAddressOperands. NFCI
  88. [X86] Segment registers should have i16 type not i32. Probably doesn't really matter, but was inconsistent with the rest of the code.
  89. [AMDGPU] gfx1010 VOP2 changes Differential Revision: https://reviews.llvm.org/D61156
  90. [llvm-nm] Revert inadvertently committed 'i' change in r359314
  91. [ThinLTO] Fix X86/strong_non_prevailing.ll after llvm-nm 'r' change
  92. [PowerPC] Update P9 vector costs for insert/extract element The PPC vector cost model values for insert/extract element reflect older processors that lacked vector insert/extract and move-to/move-from VSR instructions. Update getVectorInstrCost to give appropriate values for when the newer instructions are present. Differential Revision: https://reviews.llvm.org/D60160
  93. [llvm-nm] Generalize symbol types 'N', 'n' and '?'
  94. [llvm-nm] Fix handling of symbol types 't' 'd' 'r' In addition, fix and convert the two tests to yaml2obj based. This allows us to delete two executables. X86/weak.test: 'v' was not tested X86/init-fini.test: symbol types of __bss_start _edata _end were wrong GNU nm reports __init_array_start as 't', and __preinit_array_start as 'd'. __init_array_start is 't' just because its section ".init_array" starts with ".init" 'd' makes more sense and allows us to drop the weird SHT_INIT_ARRAY rule. So, change __init_array_start to 'd' instead.
  95. [docs] Put DefaultOption bullet in alphabetical order.
  96. [llvm-nm][llvm-size] Use --double-dash options in tests
  97. s/Dwarf 5/DWARF v5/ NFC
  98. [x86] add tests for fmin/fmax; NFC 'maximum' and 'minimum' still crash, so they are commented out.
  99. Fix llvm-objcopy/ELF/preserve-segment-contents test on UTF-8 locale Differential Revision: https://reviews.llvm.org/D61137
  100. [yaml2obj] - Make implicitSectionNames() return std::vector<StringRef>. NFCI. No need to use SmallVector of char* here. This simplifies the code.
  101. [yaml2obj] - Remove excessive variable. NFC. `auto &Strtab` was used only once.
  102. Fix Wparentheses warning. NFCI.
  103. [yaml2obj] - Make the code to match the LLVM style. NFCI. This renames the variables to uppercase and removes use of `auto` for unobvious type.
  104. [yaml2elf] - Cleanup the initSectionHeaders(). NFCI. This encapsulates the section specific code inside the corresponding writeSectionContent methods. Making the code a bit more consistent.
  105. [X86][SSE] Pull out OR(EXTRACTELT(X,0),OR(EXTRACTELT(X,1),...)) matching code from LowerVectorAllZeroTest Create a matchBitOpReduction helper that checks for the pattern with any opcode. First step towards reusing this code to recognize other scalar reduction patterns.
  106. Minor formatting tweak, no behavior change
  107. caseFoldingDjbHash: simplify and make the US-ASCII fast path faster The slow path (with at least one non US-ASCII) will be slower but that doesn't matter. Differential Revision: https://reviews.llvm.org/D61178
  108. [X86][SSE] Disable shouldFoldConstantShiftPairToMask for btver1/btver2 targets (PR40758) As detailed on PR40758, Bobcat/Jaguar can perform vector immediate shifts on the same pipes as vector ANDs with the same latency - so it doesn't make sense to replace a shl+lshr with a shift+and pair as it requires an additional mask (with the extra constant pool, loading and register pressure costs). Differential Revision: https://reviews.llvm.org/D61068
  109. [X86][AVX] Combine shuffles extracted from a common vector A small step towards combining shuffles across vector sizes - this recognizes when a shuffle's operands are all extracted from the same larger source and tries to combine to an unary shuffle of that source instead. Fixes one of the test cases from PR34380. Differential Revision: https://reviews.llvm.org/D60512
  110. [InferAddressSpaces] Add AS parameter to the pass factory This enables the pass to be used in the absence of TargetTransformInfo. When the argument isn't passed, the factory defaults to UninitializedAddressSpace and the flat address space is obtained from the TargetTransformInfo as before this change. Existing users won't have to change. Patch by Kevin Petit. Differential Revision: https://reviews.llvm.org/D60602
  111. Fix alignment in AArch64InstructionSelector::emitConstantPoolEntry() The code was using the alignment of a pointer to the value, not the alignment of the constant itself. Maybe we got away with it so far because the pointer alignment is fairly high, but we did end up under-aligning <16 x i8> vectors, which was caught in the Chromium build after lld stopped over-aligning the .rodata.cst16 section in r356428. (See crbug.com/953815) Differential revision: https://reviews.llvm.org/D61124
  112. [GlobalISel] Fix inserting copies in the right position for reg definitions When constrainRegClass is called if the constraining happens on a use the COPY needs to be inserted before the instruction that contains the MachineOperand, but if we are constraining a definition it actually needs to be added after the instruction. In addition, the COPY needs to have its operands flipped (in the use case we are copying from the old unconstrained register to the new constrained register, while in the definition case we are copying from the new constrained register that the instruction defines to the old unconstrained register).
  113. Fix typos: (re)?sor?uce -> (re)?source Closes: https://github.com/llvm/llvm-project/pull/10 In-collaboration-with: Olivier Cochard-Labbé <olivier@FreeBSD.org> Signed-off-by: Enji Cooper <yaneurabeya@gmail.com> Differential Revision: https://reviews.llvm.org/D61021
  114. [NFC] Add baseline tests for int isKnownNonZero Add baseline tests for improvements of isKnownNonZero for integer types. Differential Revision: https://reviews.llvm.org/D60932
  115. [llvm-objcopy] Accept --long-option but not -long-option Summary: llvm-{objcopy,strip} (and many other LLVM binary utilities) accept cl::opt style -long-option as well as many short options (e.g. -p -S -x). People who use them as replacement of GNU binutils often use the grouped option syntax (POSIX Utility Conventions), e.g. -Sx => -S -x, -Wd => -W -d, -sj.text => -s -j.text There is ambiguity if a long option starts with the character used by a short option. Drop the support for -long-option to resolve the ambiguity. This divergence from other utilities is accepted (other utilities continue supporting -long-option). https://lists.llvm.org/pipermail/llvm-dev/2019-April/131786.html Reviewers: alexshap, jakehehrlich, jhenderson, rupprecht, espindola Reviewed By: jakehehrlich, jhenderson, rupprecht Subscribers: grimar, emaste, arichardson, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60439
  116. [GlobalOpt] Swap the expensive check for cold calls with the cheap TTI check isValidCandidateForColdCC is much more expensive than TTI.useColdCCForColdCall, which by default just returns false. Avoid doing this work if we're not going to look at the answer anyway. This change is NFC, but I see significant compile time improvements on some code with pathologically many functions.
  117. [ORC] Remove symbols from dependency lists when failing materialization. When failing materialization of a symbol X, remove X from the dependants list of any of X's dependencies. This ensures that when X's dependencies are emitted (or fail themselves) they do not try to access the no-longer-existing MaterializationInfo for X.
  118. [CUDA] Implemented _[bi]mma* builtins. These builtins provide access to the new integer and sub-integer variants of MMA (matrix multiply-accumulate) instructions provided by CUDA-10.x on sm_75 (AKA Turing) GPUs. Also added a feature for PTX 6.4. While Clang/LLVM does not generate any PTX instructions that need it, we still need to pass it through to ptxas in order to be able to compile code that uses the new 'mma' instruction as inline assembly (e.g used by NVIDIA's CUTLASS library https://github.com/NVIDIA/cutlass/blob/master/cutlass/arch/mma.h#L101) Differential Revision: https://reviews.llvm.org/D60279
  119. PTX 6.3 extends `wmma` instruction to support s8/u8/s4/u4/b1 -> s32. All of the new instructions are still handled mostly by tablegen. I've slightly refactored the code to drive intrinsic/instruction generation from a master list of supported variants, so all irregularities have to be implemented in one place only. The test generation script wmma.py has been refactored in a similar way. Differential Revision: https://reviews.llvm.org/D60015
  120. [NVPTX] generate correct MMA instruction mnemonics with PTX63+. PTX 6.3 requires using ".aligned" in the MMA instruction names. In order to generate correct name, now we pass current PTX version to each instruction as an extra constant operand and InstPrinter adjusts its output accordingly. Differential Revision: https://reviews.llvm.org/D59393
  121. [NVPTX] Refactor generation of MMA intrinsics and instructions. NFC. Generalized constructions of 'fragments' of MMA operations to provide common primitives for construction of the ops. This will make it easier to add new variants of the instructions that operate on integer types. Use nested foreach loops which makes it possible to better control naming of the intrinsics. This patch does not affect LLVM's output, so there are no test changes. Differential Revision: https://reviews.llvm.org/D59389
  122. [Object][XCOFF] Add intial support for section header table. Adds a representation of the section header table to XCOFFObjectFile, and implements enough to dump the section headers with llvm-obdump. Differential Revision: https://reviews.llvm.org/D60784
  123. [CMake][PowerPC] Recognize LLVM_NATIVE_TARGET="ppc64le" as PowerPC Summary: This value is derived from the host triple, which on the machine I'm currently using is `ppc64le-linux-redhat`. This change makes LLVM compile. Reviewers: nemanjai Differential Revision: https://reviews.llvm.org/D57118
  124. [AMDGPU] gfx1010 - fix ubsan failure Revert DecoderNamespace in one place for now. It will need more changes to properly work.
  125. [x86] add tests for vector fdiv reciprocal estimate; NFC
  126. Assigning to a local object in a return statement prevents copy elision. NFC. I added a diagnostic along the lines of `-Wpessimizing-move` to detect `return x = y` suppressing copy elision, but I don't know if the diagnostic is really worth it. Anyway, here are the places where my diagnostic reported that copy elision would have been possible if not for the assignment. P1155R1 in the post-San-Diego WG21 (C++ committee) mailing discusses whether WG21 should fix this pitfall by just changing the core language to permit copy elision in cases like these. (Kona update: The bulk of P1155 is proceeding to CWG review, but specifically *not* the parts that explored the notion of permitting copy-elision in these specific cases.) Reviewed By: dblaikie Author: Arthur O'Dwyer Differential Revision: https://reviews.llvm.org/D54885
  127. [GlobalISel][AArch64] Make G_EXTRACT_VECTOR_ELT legal for v8s16s This case was missing before, so we couldn't legalize it. Add it to AArch64LegalizerInfo.cpp and update select-extract-vector-elt.mir.
  128. [ObjC][ARC] Let ARC optimizer bail out if the number of pointer states it keeps track of becomes too large ARC optimizer does a top-down and a bottom-up traversal of the whole function to pair up retain and release instructions and remove them. This can be expensive if the number of instructions in the function and pointer states it tracks are large since it has to look at each pointer state and determine whether the instruction being visited can potentially use the pointer. This patch adds a command line option that sets a limit to the number of pointers it tracks. rdar://problem/49477063 Differential Revision: https://reviews.llvm.org/D61100
  129. [AMDGPU] gfx1010 VOP1 instructions Differential Revision: https://reviews.llvm.org/D61099
  130. [AMDGPU] gfx1010 utility functions Differential Revision: https://reviews.llvm.org/D61094
  131. [GlobalISel][AArch64] Add generic legalization rule for extends This adds a legalization rule for G_ZEXT, G_ANYEXT, and G_SEXT which allows extends whenever the types will fit in registers (or the source is an s1). Update tests. Add GISel checks throughout all of arm64-vabs.ll, where we now select a good portion of the code. Add GISel checks to arm64-subvector-extend.ll, which has a good number of vector extends in it. Differential Revision: https://reviews.llvm.org/D60889
  132. [SelectionDAG][X86] Use stack load/store in PromoteIntRes_BITCAST when the input needs to be be split and the output type is a vector. We had special case handling here, but it uses a scalar any_extend for the promotion then bitcasts to the final type. This won't split up the input data into multiple promoted elements like we need. This patch falls back to doing the conversion through memory. Fixes PR41594 which I believe was reflected in the bitcast-vector-bool.ll changes. The changes to vector-half-conversions.ll are fixing a previously unknown miscompile from this issue. Differential Revision: https://reviews.llvm.org/D61114
  133. [Evaluator] Walk initial elements when handling load through bitcast When evaluating a store through a bitcast, the evaluator tries to move the bitcast from the pointer onto the stored value. If the cast is invalid, it tries to "introspect" the type to get a valid cast by obtaining a pointer to the initial element (if the type is nested, this may require walking several initial elements). In some situations it is possible to get a bitcast on a load (e.g. with unions, where the bitcast may not be the same type as the store). However, equivalent logic to the store to introspect the type is missing. This patch add this logic. Note, when developing the patch I was unhappy with adding similar logic directly to the load case as it could get out of step. Instead, I have abstracted the "introspection" into a helper function, with the specifics being handled by a passed-in lambda function. Differential Revision: https://reviews.llvm.org/D60793
  134. [GlobalISel][AArch64] Legalize G_FNEARBYINT Add legalizer support for G_FNEARBYINT. It's the same as G_FCEIL etc. Since the importer allows us to automatically select this after legalization, also add tests for selection etc. Also update arm64-vfloatintrinsics.ll.
  135. [GlobalISel] Add IRTranslator support for G_FNEARBYINT Translate llvm.nearbyint into G_FNEARBYINT as a simple intrinsic. Update arm64-irtranslator.ll. Differential Revision: https://reviews.llvm.org/D60922
  136. [GlobalISel] Add a G_FNEARBYINT opcode For eventually selecting llvm.nearbyint. Equivalent to the SelectionDAG nearbyint node. Update legalizer-info-validation.mir. Differential Revision: https://reviews.llvm.org/D60921
  137. Revert "[JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows." This reverts r359169, as it broke one of the windows bots.
  138. gn build: Document llvm_enable_dia_sdk variable better
  139. gn build: Make setting llvm_enable_dia_sdk=true work If this is set, %INCLUDE% must contain ".../DIA SDK/include" and %LIB% must contain ".../DIA SKD/lib/amd64" (assuming you're doing a 64-bit build).
  140. [InstCombine][X86] Tweak generic expansion of PACKSS/PACKUS to shuffle then truncate. NFCI. This has no effect on constant folding but will be useful when we expand non-saturating PACKSS/PACKUS intrinsics.
  141. [Support] json::OStream::flush(), which passes through to the underlying stream
  142. gn build: Merge r359179
  143. gn build: Merge r359174
  144. gn build: Merge r359142
  145. [Support] Add JSON streaming output API, faster where the heavy value types aren't needed. Summary: There's still a little bit of constant factor that could be trimmed (e.g. more overloads to avoid round-tripping primitives through json::Value). But this solves the memory scaling problem, and greatly improves the performance constant factor, and the API should leave room for optimization if needed. Adapt TimeProfiler to use it, eliminating almost all the performance regression from r358476. Performance test on my machine: perf stat -r 5 ~/llvmbuild-opt/bin/clang++ -w -S -ftime-trace -mllvm -time-trace-granularity=0 spirit.cpp Handcrafted JSON (HEAD=r358532 with r358476 reverted): 2480ms json::Value (HEAD): 2757ms (+11%) After this patch: 2520 ms (+1.6%) Reviewers: anton-afanasyev, lebedev.ri Subscribers: kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60804
  146. [InstCombine][X86] Add PACKSS/PACKUS tests for truncation where saturation won't occur
  147. [Support] Try to unbreak windows buildbot After r359179.
  148. Parallel: only allow the first TaskGroup to run tasks parallelly Summary: Concurrent (e.g. nested) llvm::parallel::for_each() may lead to dead locks. See PR35788 (fixed by rLLD322041) and PR41508 (fixed by D60757). When parallel_for_each() is about to return, in ~Latch() called by ~TaskGroup(), a thread (in the default executor) may block in Latch::sync() waiting for Count to become zero. If all threads in the default executor are blocked, it is a dead lock. To fix this, force serial execution if the current TaskGroup is not the first one. For a nested llvm::parallel::for_each(), this parallelizes the outermost loop and serializes inner loops. Differential Revision: https://reviews.llvm.org/D61115
  149. [llvm-objdump] Prep for adding newlines before and after "Disassembly of section ...:"
  150. [ConstantRange] [a, b) udiv a full range is [0, umax(b)). Reviewers: nikic, spatel, efriedma Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D60536
  151. [Testing] Move clangd::Annotations to llvm testing support Summary: Annotations allow writing nice-looking unit test code when one needs access to locations from the source code, e.g. running code completion at particular offsets in a file. See comments in Annotations.cpp for more details on the API. Also got rid of a duplicate annotations parsing code in clang's code complete tests. Reviewers: gribozavr, sammccall Reviewed By: gribozavr Subscribers: mgorny, hiraditya, ioeric, MaskRay, jkorous, arphaman, kadircet, jdoerfert, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D59814
  152. [yaml2obj] - Don't crash on invalid inputs. yaml2obj might crash on invalid input when unable to parse the YAML. Recently a crash with a very similar nature was fixed for an empty files. This patch revisits the fix and does it in yaml::Input instead. It seems to be more correct way to handle such situation. With that crash for invalid inputs is also fixed now. Differential revision: https://reviews.llvm.org/D61059
  153. Fix include order. NFCI.
  154. [X86][SSE] combineBitcastvxi1 - add support for bitcasting to non-scalar integers Truncate the movmsk scalar integer result to the equivalent scalar integer width as before but then bitcast to the requested type. We still have the issue identified in PR41594 but D61114 should handle this.
  155. [Support] Add a GTest matcher for Optional<T> Reviewers: sammccall Reviewed By: sammccall Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61071
  156. [NFC][LoopIdiomRecognize] Some basic baseline tests for bcmp loop idiom Doubt this is the final test coverage, but this appears to have good coverage already, so i figure i might as well precommit it.
  157. [MIPS] Use custom bitcast lowering to avoid excessive instructions On Mips32r2 bitcast can be expanded to two sw instructions and an ldc1 when using bitcast i64 to double or an sdc1 and two lw instructions when using bitcast double to i64. By introducing custom lowering that uses mtc1/mthc1 we can avoid excessive instructions. Patch by Mirko Brkusanin. Differential Revision: https://reviews.llvm.org/D61069
  158. [X86] Remove part of an if condition that should always be true. The IndexReg will always be non-null at this point. Earlier in the function, if IndexReg was null we set it to CurDAG->getRegister(0, VT) which made it non-null.
  159. [JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows. This should fix the MachO/x86-64 eh-frame regression test by ensuring that the symbols __ZTIi and ___gxx_personality_v0 are defined on all platforms.
  160. [llvm-rtdyld] Add support for passing command line arguments to rtdyld-run code. The --args option can now be used to pass arguments to code linked with llvm-rtdyld. E.g. $ llvm-rtdyld file1.o file2.o --args a b c is equivalent to: $ ld -o program file1.o file2.o $ ./program a b c This is the rtdyld counterpart to the jitlink change in r359115, and makes benchmarking and comparison between the tools easier.
  161. Enable LoopVectorization by default. Summary: When refactoring vectorization flags, vectorization was disabled by default in the new pass manager. This patch re-enables is for both managers, and changes the assumptions opt makes, based on the new defaults. Comments in opt.cpp should clarify the intended use of all flags to enable/disable vectorization. Reviewers: chandlerc, jgorbe Subscribers: jlebar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61091
  162. [llvm-objdump] errorToErrorCode+message -> toString For test/Object/elf-invalid-phdr.test, the intended error message got lost due to errorToErrorCode().
  163. Consolidate existing utilities for interpreting vector predicate maskes [NFC]
  164. Fix unused variable warning in LoopFusion pass. Do not wrap the contents of printFusionCandidates in the LLVM_DEBUG macro. This fixes an unused variable warning generated when compiling without asserts but with -DENABLE_LLVM_DUMP. Differential Revision: https://reviews.llvm.org/D61035
  165. [InstCombine] Be consistent w/handling of masked intrinsics style wise [NFC]
  166. [utils] Add a lldb data formatter for llvm::SmallString. Result: (lldb) p val (llvm::SmallString<32>) $31 = "patatino"
  167. Fix spelling error. NFC Summary: Test commit. Reviewers: msearles, jkorous Reviewed By: jkorous Subscribers: dexonsmith, arsenm, jvesely, nhaehnle, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61093
  168. llvm-cvtres: Make new dupe resource error a bit friendlier For well-known type IDs, include the name of the type. To not duplicate the ID->name map, make llvm-readobj call this new function as well. It has slightly different output, so this also requires updating a few tests. Differential Revision: https://reviews.llvm.org/D61086
  169. posix_spawn should retry upon EINTR Summary: We've seen cases of bots failing with: clang: error: unable to execute command: posix_spawn failed: Interrupted system call Add a small retry loop to posix_spawn in case this happens. Don't retry too much in case there's some systemic problem going on, but retry a few times. <rdar://problem/50181448> Reviewers: Bigcheese, arphaman Subscribers: jkorous, dexonsmith, kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61096
  170. Mark new jitlink test XFAIL for windows
  171. Recommitting r358783 and r358786 "[MS] Emit S_HEAPALLOCSITE debug info" with fixes for buildbot error (undefined assembler label). Summary: This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug info in codeview. Currently only changes FastISel, so emitting labels still needs to be implemented in SelectionDAG. Reviewers: rnk Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D61083
  172. [DAGCombiner] scale repeated FP divisor by splat factor If we have a vector FP division with a splatted divisor, use the existing transform that converts 'x/y' into 'x * (1.0/y)' to allow more conversions. This can then potentially be converted into a scalar FP division by existing combines (rL358984) as seen in the tests here. That can be a potentially big perf difference if scalar fdiv has better timing (including avoiding possible frequency throttling for vector ops). Differential Revision: https://reviews.llvm.org/D61028
  173. [PowerPC] Allow using initial-exec TLS with PIC Using initial-exec TLS variables is a reasonable performance optimisation for system libraries. Use the correct PIC mechanism to get hold of the GOT to avoid text relocations. Differential Revision: https://reviews.llvm.org/D61026
  174. Add period at end of comment.
  175. [X86] Attempt to fix use-after-poison from r359121.
  176. [AMDGPU] gfx1010 SOP instructions Differential Revision: https://reviews.llvm.org/D61080
  177. [SLP] Fix crash after r358519, by V. Porpodas. Summary: The code did not check if operand was undef before casting it to Instruction. Reviewers: RKSimon, ABataev, dtemirbulatov Reviewed By: ABataev Subscribers: uabelho Tags: #llvm Differential Revision: https://reviews.llvm.org/D61024
  178. Try once more to ensure constant initializaton of ManagedStatics First, use the old style of linker initialization for MSVC 2019 in addition to 2017. MSVC 2019 emits a dynamic initializer for ManagedStatic when compiled in debug mode, and according to zturner, also sometimes in release mode. I wasn't able to reproduce that, but it seems best to stick with the old code that works. When clang is using the MSVC STL, we have to give ManagedStatic a constexpr constructor that fully zero initializes all fields, otherwise it emits a dynamic initializer. The MSVC STL implementation of std::atomic has a non-trivial (but constexpr) default constructor that zero initializes the atomic value. Because one of the fields has a non-trivial constructor, ManagedStatic ends up with a non-trivial ctor. The ctor is not constexpr, so clang ends up emitting a dynamic initializer, even though it simply does zero initialization. To make it constexpr, we must initialize all fields of the ManagedStatic. However, while the constructor that takes a pointer is marked constexpr, clang says it does not evaluate to a constant because it contains a cast from a pointer to an integer. I filed this as: https://developercommunity.visualstudio.com/content/problem/545566/stdatomic-value-constructor-is-not-actually-conste.html Once we do that, we can add back the LLVM_REQUIRE_CONSTANT_INITIALIZATION marker, and so far as I'm aware it compiles successfully on all supported targets.
  179. Add optional arg to profile count getters to filter synthetic profile count. Differential Revision: http://reviews.llvm.org/D61025
  180. [X86] Prevent folding a load into an AND if that AND is really a ZEXT_INREG that should use movzx. This can save a 32-bit immediate move. We would shrink the load and fold it if it was non-volatile, but that's trickier to check for.
  181. llvm-cvtres: Remove a default argument. No behavior change.
  182. Revert using fcopyfile(3) to implement sys::fs::copy_file(Twine, int) on macOS It turns out that I mesread the man page and fcopyfile(3) does not actually support COPYFILE_CLONE for files. <rdar://problem/50148757>
  183. DebugInfo: Emit only declarations (not whole definitions) of non-unit user defined types into type units While this doesn't come up in reasonable cases currently (the only user defined types not in type units are ones without linkage - which makes for near-ODR violations, because it'd be a type with linkage referencing a type without linkage - such a type can't be validly defined in more than one TU, so arguably it shouldn't be in a type unit to begin with - but it's a convenient way to demonstrate an issue that will become more revalent with homed modular debug info type definitions - which also don't need to be in type units but more legitimately so). Precursor to the Clang change to de-type-unit (by omitting the 'identifier') types homed due to strong linkage vtables. (making that change without this one would lead to major type duplication in type units)
  184. [X86] Remove dead nodes left after ReplaceAllUsesWith calls during address matching ReplaceAllUsesWith doesn't remove the node that was replaced. So its left around in the graph messing up use counts on other nodes. One thing to note, is that this isn't valid if the node being deleted is the root node of an LEA match that gets rejected. In that case the node needs to stay alive because the isel table walking code would still have a reference to it that its going to try to match next. I don't think that's the case here though because the nodes being deleted here should be "and", "srl", and "zero_extend" none of which can be the root node of an LEA match. Differential Revision: https://reviews.llvm.org/D61048
  185. [AMDGPU] gfx1010 sgpr register changes Differential Revision: https://reviews.llvm.org/D61045
  186. [X86][SSE] Add tests for bitcasting vXi1 bool vectors to non-simple types.
  187. [JITLink] Add support for passing arguments to jit-linked code. The --args option can now be used to pass arguments to code linked with llvm-jitlink. E.g. $ llvm-jitlink file1.o file2.o --args a b c is equivalent to: $ ld -o program file1.o file2.o $ ./program a b c
  188. [LLVM-C] Deprecate the LLVMValueRef-returning metadata creation functions Summary: There is still some value in using these functions while the remaining LLVMValueRef-based accessors are still around, but LLVMMDNodeInContext in particular has some wonky semantics that make it worth replacing outright. Reviewers: whitequark, deadalnix Reviewed By: whitequark Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60524
  189. [AMDGPU] Add gfx1010 target definitions Differential Revision: https://reviews.llvm.org/D61041
  190. [InstCombine][X86] Use generic expansion of PACKSS/PACKUS for constant folding. NFCI. This patch rewrites the existing PACKSS/PACKUS constant folding code to expand as a generic expansion. This is a first NFCI step toward expanding PACKSS/PACKUS intrinsics which are acting as non-saturating truncations (although technically the expansion could be used in all cases - but we'll probably want to be conservative).
  191. Revert "[llvm-objdump] errorToErrorCode+message -> toString" Revert r359100 It breaks llvm/test/Object/elf-invalid-phdr.test
  192. llvm-undname: Fix assert-on->4GiB-string-literal, found by oss-fuzz
  193. [JITLink] Refer to FDE's CIE (not the most recent CIE) when parsing eh-frame. Frame Descriptor Entries (FDEs) have a pointer back to a Common Information Entry (CIE) that describes how the rest FDE should be parsed. JITLink had been assuming that FDEs always referred to the most recent CIE encountered, but the spec allows them to point back to any previously encountered CIE. This patch fixes JITLink to look up the correct CIE for the FDE. The testcase is a MachO binary with an FDE that refers to a CIE that is not the one immediately proceeding it (the layout can be viewed wit 'dwarfdump --eh-frame <testcase>'. This test case had to be a binary as llvm-mc now sorts FDEs (as of r356216) to ensure FDEs *do* point to the most recent CIE.
  194. [llvm-objdump] Delete redundant check
  195. [obj2yamp] - Simplify and cleanup the code in ELFDumper<ELFT>::dumpGroup a bit. NFC. This makes the variables naming to match LLVM style, simplifies the code used to extract the group members, simplifies the loop and reorders the code around a bit.
  196. [llvm-objdump] errorToErrorCode+message -> toString
  197. [AMDGPU][MC] Parser cleanup and refactoring Reviewers: artem.tamazov, arsenm Differential Revision: https://reviews.llvm.org/D60767
  198. [x86] make sure horizontal op and broadcast types match to simplify (PR41414) If the types don't match, we can't just remove the shuffle. There may be some other opportunity for optimization here, but this should prevent the crashing seen in: https://bugs.llvm.org/show_bug.cgi?id=41414
  199. [LLVM-C] Use dyn_cast instead of unwrap in LLVMGetDebugLoc functions Summary: The `unwrap<Type>` calls can assert with: ``` Assertion failed: (isa<X>(Val) && "cast<Ty>() argument of incompatible type!"), function cast ``` so replace them with `dyn_cast`. Reviewers: whitequark, abdulras, hiraditya, compnerd Reviewed By: whitequark Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60473
  200. [yaml2obj] Replace num_zeros with write_zeros
  201. [yaml2elf] - Replace a loop with write_zeros(). NFC. And apply clang-format to the method changed.
  202. [X86] Add shouldFoldConstantShiftPairToMask override placeholder. NFCI. Prep work toward fixing PR40758
  203. Let llvm-cvtres (and lld-link) report duplicate resources If two .res files contain the same resource, cvtres.exe (and hence link.exe) reject the input with this message: CVTRES : fatal error CVT1100: duplicate resource. type:STRING, name:101, language:0x0409 LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt llvm-cvtres (and lld-link) used to silently pick one of the duplicate resources instead. This patch makes them report an error as well. We slightly improve on cvtres by printing the name of two .res files containing duplicate entries as well. Differential Revision: https://reviews.llvm.org/D61049
  204. [X86][SSE] Add masked bit test cases for PR26697
  205. Add "const" in GetUnderlyingObjects. NFC Summary: Both the input Value pointer and the returned Value pointers in GetUnderlyingObjects are now declared as const. It turned out that all current (in-tree) uses of GetUnderlyingObjects were trivial to update, being satisfied with have those Value pointers declared as const. Actually, in the past several of the users had to use const_cast, just because of ValueTracking not providing a version of GetUnderlyingObjects with "const" Value pointers. With this patch we get rid of those const casts. Reviewers: hfinkel, materi, jkorous Reviewed By: jkorous Subscribers: dexonsmith, jkorous, jholewinski, sdardis, eraman, hiraditya, jrtc27, atanasyan, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61038
  206. [Mips][CodeGen] Remove MachineFunction::setSubtarget. Change Mips to just copy the subtarget from the MachineFunction instead of recalculating it. Summary: The MachineFunction should have been created with the correct subtarget. As long as there is no way to change it, MipsTargetMachine can just capture it directly from the MachineFunction without calling getSubtargetImpl again. While there, const correct the Subtarget pointer to avoid a const_cast. I believe the Mips16Subtarget and NoMips16Subtarget members are never used, but I'll leave there removal for a separate patch. Reviewers: echristo, atanasyan Reviewed By: atanasyan Subscribers: sdardis, arichardson, hiraditya, jrtc27, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60936
  207. [CommandLine] Provide parser<unsigned long> instantiation to allow cl::opt<uint64_t> on LP64 platforms Summary: And migrate opt<unsigned long long> to opt<uint64_t> Fixes PR19665 Differential Revision: https://reviews.llvm.org/D60933
  208. llvm-cvtres: Accept /? as help flag, like cvtres.exe
  209. gn build: Merge r359050 more
  210. gn build: Merge r359050
  211. Revert [AliasAnalysis] AAResults preserves AAManager. Triggers use-after-free.
  212. [Remarks] Fix documentation indentation Fix the documentation bot: http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/30450/steps/docs-llvm-html/logs/stdio
  213. [Remarks] Add string deduplication using a string table * Add support for uniquing strings in the remark streamer and emitting the string table in the remarks section. * Add parsing support for the string table in the RemarkParser. From this remark: ``` --- !Missed Pass: inline Name: NoDefinition DebugLoc: { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c', Line: 7, Column: 3 } Function: printArgsNoRet Args: - Callee: printf - String: ' will not be inlined into ' - Caller: printArgsNoRet DebugLoc: { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c', Line: 6, Column: 0 } - String: ' because its definition is unavailable' ... ``` to: ``` --- !Missed Pass: 0 Name: 1 DebugLoc: { File: 3, Line: 7, Column: 3 } Function: 2 Args: - Callee: 4 - String: 5 - Caller: 2 DebugLoc: { File: 3, Line: 6, Column: 0 } - String: 6 ... ``` And the string table in the .remarks/__remarks section containing: ``` inline\0NoDefinition\0printArgsNoRet\0 test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c\0printf\0 will not be inlined into \0 because its definition is unavailable\0 ``` This is mostly supposed to be used for testing purposes, but it gives us a 2x reduction in the remark size, and is an incremental change for the updates to the remarks file format. Differential Revision: https://reviews.llvm.org/D60227
  214. [Lint] Permit aliasing noalias readonly arguments Summary: If two arguments are both readonly, then they have no memory dependency that would violate noalias, even if they do actually overlap. Reviewers: hfinkel, efriedma Reviewed By: efriedma Subscribers: efriedma, hiraditya, llvm-commits, tstellar Tags: #llvm Differential Revision: https://reviews.llvm.org/D60239
  215. [AArch64][GlobalISel] Select G_INTRINSIC_ROUND Add selection support for G_INTRINSIC_ROUND, add a selection test, and add check lines to arm64-vfloatintrinsics.ll and f16-instructions.ll.
  216. [AArch64][GlobalISel] Mark G_INTRINSIC_ROUND as a pre-isel floating point opcode Add G_INTRINSIC_ROUND to isPreISelGenericFloatingPointOpcode to ensure that its input and output are assigned the correct register bank. Add a regbankselect test to verify that we get what we expect here.
  217. The error message for mismatched value sites is very cryptic. Make it more readable for an average user. Differential Revision: https://reviews.llvm.org/D60896
  218. [CMake] Use add_dependencies in add_llvm_install_targets Summary: The CMake documentation says that the `DEPENDS` field of add_custom_target is for files and output of custom commands. Adding a dependency on a target should be done with `add_dependency`. Differential Revision: https://reviews.llvm.org/D60879
  219. [CGP] Look through bitcasts when duplicating returns for tail calls The simple case of: ``` int *callee(); void *caller(void *a) { if (a == NULL) return callee(); return a; } ``` would generate a regular call instead of a tail call because we don't look through the bitcast of the call to `callee` when duplicating the return blocks. Differential Revision: https://reviews.llvm.org/D60837
  220. [X86] Add codegen prepare test exercising a bitcast + tail call In preparation of https://reviews.llvm.org/D60837, add this test where we don't perform a tail call because we don't look through a bitcast.
  221. [WebAssembly] Emit br_table for most switch instructions Summary: Always convert switches to br_tables unless there is only one case, which is equivalent to a simple branch. This reduces code size for wasm, and we defer possible jump table optimizations to the VM. Addresses PR41502. Reviewers: kripken, sunfish Subscribers: dschuff, sbc100, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60966
  222. [WebAssembly] Make LBB markers not affected by test order Summary: This way we can change the order of tests or delete some of them without affecting tests for other functions. Reviewers: tlively Subscribers: sunfish, dschuff, sbc100, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60929
  223. Revert "[MS] Emit S_HEAPALLOCSITE debug info" because of ToTWin64(db) buildbot failure. This reverts commit d07d6d617713bececf57f3547434dd52f0f13f9e and c774f687b6880484a126ed3e3d737e74c926f0ae.
  224. [AArch64][GlobalISel] Legalize G_INTRINSIC_ROUND Add it to the same rule as G_FCEIL etc. Add a legalizer test, and add a missing switch case to AArch64LegalizerInfo.cpp.
  225. [MemorySSA] LCSSA preserves MemorySSA. Summary: Enabling MemorySSA in the old pass manager leads to MemorySSA being run twice due to the fact that LCSSA and LoopSimplify do not preserve MemorySSA. This is the first step to address that: target LCSSA. LCSSA does not make any changes that invalidate MemorySSA, so it preserves it by design. It must preserve AA as well, for this to hold. After this patch, MemorySSA is still run twice in the old pass manager. Step two follows: target LoopSimplify. Subscribers: mehdi_amini, jlebar, Prazek, llvm-commits, george.burgess.iv, chandlerc Tags: #llvm Differential Revision: https://reviews.llvm.org/D60832
  226. [X86] Autogenerate complete checks. NFC Prep for D60993
  227. [AArch64][GlobalISel] Actually select G_INTRINSIC_TRUNC Apparently FileCheck wasn't actually matching the fallback check lines in arm64-vfloatintrinsics.ll properly. So, there were selection fallbacks for G_INTRINSIC_TRUNC there. Actually hook it up into AArch64InstructionSelector.cpp and write a proper selection test. I guess I'll figure out the FileCheck magic to make the fallback checks work properly in arm64-vfloatintrinsics.ll.
  228. [ObjC][ARC] Check the basic block size before calling DominatorTree::dominate. ARC contract pass has an optimization that replaces the uses of the argument of an ObjC runtime function call with the call result. For example: ; Before optimization %1 = tail call i8* @foo1() %2 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %1) store i8* %1, i8** @g0, align 8 ; After optimization %1 = tail call i8* @foo1() %2 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %1) store i8* %2, i8** @g0, align 8 // %1 is replaced with %2 Before replacing the argument use, DominatorTree::dominate is called to determine whether the user instruction is dominated by the ObjC runtime function call instruction. The call to DominatorTree::dominate can be expensive if the two instructions belong to the same basic block and the size of the basic block is large. This patch checks the basic block size and just bails out if the size exceeds the limit set by command line option "arc-contract-max-bb-size". rdar://problem/49477063 Differential Revision: https://reviews.llvm.org/D60900
  229. Reapply: "DebugInfo: Emit only one kind of accelerated access/name table"" Originally committed in r358931 Reverted in r358997 Seems this change made Apple accelerator tables miss names (because names started respecting the CU NameTableKind GNU & assuming that shouldn't produce accelerated names too), which is never correct (apple accelerator tables don't have separators or CU lists - if present, they must describe all names in all CUs). Original Description: Currently to opt in to debug_names in DWARFv5, the IR must contain 'nameTableKind: Default' which also enables debug_pubnames. Instead, only allow one of {debug_names, apple_names, debug_pubnames, debug_gnu_pubnames}. nameTableKind: Default gives debug_names in DWARFv5 and greater, debug_pubnames in v4 and earlier - and apple_names when tuning for lldb on MachO. nameTableKind: GNU always gives gnu_pubnames
  230. [ThinLTO] Pass down opt level to LTO backend and handle -O0 LTO in new PM Summary: The opt level was not being passed down to the ThinLTO backend when invoked via clang (for distributed ThinLTO). This exposed an issue where the new PM was asserting if the Thin or regular LTO backend pipelines were invoked with -O0 (not a new issue, could be provoked by invoking in-process *LTO backends via linker using new PM and -O0). Fix this similar to the old PM where -O0 only does the necessary lowering of type metadata (WPD and LowerTypeTest passes) and then quits, rather than asserting. Reviewers: xur Subscribers: mehdi_amini, inglorion, eraman, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits, pcc Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D61022
  231. llvm-cvtres: Split addChild(ID) into two functions Before, there was an IsData parameter. Now, there are two different functions for data nodes and ID nodes. No behavior change, needed for a follow-up change to make two data nodes (but not two ID nodes) with the same ID an error. For consistency, rename another addChild() overload to addNameChild().
  232. [AArch64][GlobalISel] Teach regbankselect about G_INTRINSIC_TRUNC Add it to isPreISelGenericFloatingPointOpcode, and add a regbankselect test. Update arm64-vfloatintrinsics.ll now that we can select it.
  233. [AArch64][GlobalISel] Legalize G_INTRINSIC_TRUNC Same patch as G_FCEIL etc. Add the missing switch case in widenScalar, add G_INTRINSIC_TRUNC to the correct rule in AArch64LegalizerInfo.cpp, and add a test.
  234. [ConstantRange] Add urem support Add urem support to ConstantRange, so we can handle in in LVI. This is an approximate implementation that tries to capture the most useful conditions: If the LHS is always strictly smaller than the RHS, then the urem is a no-op and the result is the same as the LHS range. Otherwise the lower bound is zero and the upper bound is min(LHSMax, RHSMax - 1). Differential Revision: https://reviews.llvm.org/D60952
  235. [ConstantRangeTest] Move helper methods; NFC Move Test(Unsigned|Signed)BinOpExhaustive() towards the top of the file, so they're easier to reuse.
  236. [AMDGPU] Fixed addReg() in SIOptimizeExecMaskingPreRA.cpp The second argument is flags, not subreg. Differential Revision: https://reviews.llvm.org/D61031
  237. [AArch64][GlobalISel] Legalize G_FMA for more vector types Same as G_FCEIL, G_FABS, etc. Just move it into that rule. Add a legalizer test for G_FMA, which we didn't have before and update arm64-vfloatintrinsics.ll.
  238. [AliasAnalysis] AAResults preserves AAManager. Summary: AAResults should not invalidate AAManager. Update tests. Reviewers: chandlerc Subscribers: mehdi_amini, jlebar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60914
  239. [AArch64][GlobalISel] Add G_FMA to isPreISelGenericFloatingPointOpcode Noticed an unnecessary fallback in arm64-vmul caused by this. Also add a regbankselect test for G_FMA.
  240. [APSInt][OpenMP] Fix isNegative, etc. for unsigned types Without this patch, APSInt inherits APInt::isNegative, which merely checks the sign bit without regard to whether the type is actually signed. isNonNegative and isStrictlyPositive call isNegative and so are also affected. This patch adjusts APSInt to override isNegative, isNonNegative, and isStrictlyPositive with implementations that consider whether the type is signed. A large set of Clang OpenMP tests are affected. Without this patch, these tests assume that `true` is not a valid argument for clauses like `collapse`. Indeed, `true` fails APInt::isStrictlyPositive but not APSInt::isStrictlyPositive. This patch adjusts those tests to assume `true` should be accepted. This patch also adds tests revealing various other similar fixes due to APSInt::isNegative calls in Clang's ExprConstant.cpp and SemaExpr.cpp: `++` and `--` overflow in `constexpr`, evaluated object size based on `alloc_size`, `<<` and `>>` shift count validation, and OpenMP array section validation. Reviewed By: lebedev.ri, ABataev, hfinkel Differential Revision: https://reviews.llvm.org/D59712
  241. [dsymutil] Put Swift interface files into a per-arch subdirectory. This was meant to be part of the original commit r358921, but somehow got lost. <rdar://problem/49751748>
  242. [x86] fix test checks for fdiv combine; NFC Must have picked up some transient code changes when originally generating this.
  243. llvm-undname: Support demangling the spaceship operator Also add a test for demanling the co_await operator.
  244. [x86] add tests for vector fdiv with splat divisor; NFC
  245. [dsymutil] Fix use-after-free when sys::path::append grows the buffer. <rdar://problem/50117620>
  246. Revert "[dsymutil] Fix use-after-free when sys::path::append grows the buffer."
  247. [dsymutil] Fix use-after-free when sys::path::append grows the buffer. <rdar://problem/50117620>
  248. [InstCombine] Convert a masked.load of a dereferenceable address to an unconditional load If we have a masked.load from a location we know to be dereferenceable, we can simply issue a speculative unconditional load against that address. The key advantage is that it produces IR which is well understood by the optimizer. The select (cnd, load, passthrough) form produced should be pattern matchable back to hardware predication if profitable. Differential Revision: https://reviews.llvm.org/D59703
  249. [x86] use psubus for more vsetcc lowering (PR39859) Circling back to a leftover bit from PR39859: https://bugs.llvm.org/show_bug.cgi?id=39859#c1 ...we have this counter-intuitive (based on the test diffs) opportunity to use 'psubus'. This appears to be the better perf option for both Haswell and Jaguar based on llvm-mca. We already do this transform for the SETULT predicate, so this makes the code more symmetrical too. If we have pminub/pminuw, we prefer those, so this should not affect anything but pre-SSE4.1 subtargets. $ cat before.s movdqa -16(%rip), %xmm2 ## xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768] pxor %xmm0, %xmm2 pcmpgtw -32(%rip), %xmm2 ## xmm2 = [255,255,255,255,255,255,255,255] pand %xmm2, %xmm0 pandn %xmm1, %xmm2 por %xmm2, %xmm0 $ cat after.s movdqa -16(%rip), %xmm2 ## xmm2 = [256,256,256,256,256,256,256,256] psubusw %xmm0, %xmm2 pxor %xmm3, %xmm3 pcmpeqw %xmm2, %xmm3 pand %xmm3, %xmm0 pandn %xmm1, %xmm3 por %xmm3, %xmm0 $ llvm-mca before.s -mcpu=haswell Iterations: 100 Instructions: 600 Total Cycles: 909 Total uOps: 700 Dispatch Width: 4 uOps Per Cycle: 0.77 IPC: 0.66 Block RThroughput: 1.8 $ llvm-mca after.s -mcpu=haswell Iterations: 100 Instructions: 700 Total Cycles: 409 Total uOps: 700 Dispatch Width: 4 uOps Per Cycle: 1.71 IPC: 1.71 Block RThroughput: 1.8 Differential Revision: https://reviews.llvm.org/D60838
  250. [SPARC] Use the correct register set for the "r" asm constraint. 64bit mode must use 64bit registers, otherwise assumptions about the top half of the registers are made. Problem found by Takeshi Nakayama in NetBSD.
  251. Revert "DebugInfo: Emit only one kind of accelerated access/name table" Regresses some apple_names situations - still investigating. This reverts commit r358931.
  252. Use llvm::stable_sort While touching the code, simplify if feasible.
  253. [RISCV] Support assembling %tls_{ie,gd}_pcrel_hi modifiers This patch adds support for parsing and assembling the %tls_ie_pcrel_hi and %tls_gd_pcrel_hi modifiers. Differential Revision: https://reviews.llvm.org/D55342
  254. gn build: Merge r358944
  255. [AMDGPU] Fix hidden argument metadata duplication for V3 Essentially complete a proper rebase of the V3 metadata change over https://reviews.llvm.org/D49096. Minimize the diff between the V2 and V3 variants of the relevant lit tests, and clean up some trailing whitespace.
  256. gn build: Merge r358949
  257. [X86] Pull out collectConcatOps helper. NFCI. Create collectConcatOps helper that returns all the subvector ops for CONCAT_VECTORS or a INSERT_SUBVECTOR series.
  258. ARM: disallow add/sub to sp unless Rn is also sp. The manual says that Thumb2 add/sub instructions are only allowed to modify sp if the first source is also sp. This is slightly different from the usual rGPR restriction since it's context-sensitive, so implement it in C++.
  259. [Docs] ReleaseNotes: fixup markup in memcmp()->bcmp() entry
  260. [DAGCombiner] generalize binop-of-splats scalarization If we only match build vectors, we can miss some patterns that use shuffles as seen in the affected tests. Note that the underlying calls within getSplatSourceVector() have the potential for compile-time explosion because of exponential recursion looking through binop opcodes, but currently the list of supported opcodes is very limited. Both of those problems should be addressed in follow-up patches.
  261. AMDGPU: Fix LCSSA phi lowering in SILowerI1Copies Summary: When an LCSSA phi survives through instruction selection, the pass ends up removing that phi entirely because it is dominated by the logic that does the lanemask merging. This then used to trigger an assertion when processing a dependent phi instruction. Change-Id: Id4949719f8298062fe476a25718acccc109113b6 Reviewers: llvm-commits Subscribers: kzhuravl, jvesely, wdng, yaxunl, t-tye, tpr, dstuttard, rtaylor, arsenm Tags: #llvm Differential Revision: https://reviews.llvm.org/D60999
  262. [CallSite removal] move InlineCost to CallBase usage Converting InlineCost interface and its internals into CallBase usage. Inliners themselves are still not converted. Reviewed By: reames Tags: #llvm Differential Revision: https://reviews.llvm.org/D60636
  263. Removing the explicit specifier from some default constructors; NFC.
  264. [ARM] Update check for CBZ in Ifcvt The check for creating CBZ in constant island pass recently obtained the ability to search backwards to find a Cmp instruction. The code in IfCvt should mirror this to allow more conversions to the smaller form. The common code has been pulled out into a separate function to be shared between the two places. Differential Revision: https://reviews.llvm.org/D60090
  265. [ARM] Don't replicate instructions in Ifcvt at minsize Ifcvt can replicate instructions as it converts them to be predicated. This stops that from happening on thumb2 targets at minsize where an extra IT instruction is likely needed. Differential Revision: https://reviews.llvm.org/D60089
  266. Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI.
  267. Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI.
  268. [DAGCombiner] Combine OR as ADD when no common bits are set Summary: The DAGCombiner is rewriting (canonicalizing) an ISD::ADD with no common bits set in the operands as an ISD::OR node. This could sometimes result in "missing out" on some combines that normally are performed for ADD. To be more specific this could happen if we already have rewritten an ADD into OR, and later (after legalizations or combines) we expose patterns that could have been optimized if we had seen the OR as an ADD (e.g. reassociations based on ADD). To make the DAG combiner less sensitive to if ADD or OR is used for these "no common bits set" ADD/OR operations we now apply most of the ADD combines also to an OR operation, when value tracking indicates that the operands have no common bits set. Reviewers: spatel, RKSimon, craig.topper, kparzysz Reviewed By: spatel Subscribers: arsenm, rampitec, lebedev.ri, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59758
  269. [AArch64] Add support for MTE intrinsics This patch provides intrinsics support for Memory Tagging Extension (MTE), which was introduced with the Armv8.5-a architecture. The intrinsics are described in detail in the latest ACLE Q1 2019 documentation: https://developer.arm.com/docs/101028/latest Reviewed by: David Spickett Differential Revision: https://reviews.llvm.org/D60486
  270. [ARM][FIX] Add missing f16.lane.vldN/vstN lowering Summary: Add missing D and Q lane VLDSTLane lowering for fp16 elements. Reviewers: efriedma, kosarev, SjoerdMeijer, ostannard Reviewed By: efriedma Subscribers: javed.absar, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60874
  271. [llvm-mc] - Properly set the the address align field of the compressed sections. About the compressed sections spec says: (https://docs.oracle.com/cd/E37838_01/html/E36783/section_compression.html) sh_addralign fields of the section header for a compressed section reflect the requirements of the compressed section. Currently, llvm-mc always puts uncompressed section alignment to sh_addralign. It is not correct. zlib styled section contains an Elfxx_Chdr header, so we should either use 4 or 8 values depending on the target (Uncompressed section alignment is stored in ch_addralign field of the compression header). GNU assembler version 2.31.1 also has this issue, but in 2.32.51 it was already fixed. This is how it was found during debugging of the https://bugs.llvm.org/show_bug.cgi?id=40482 actually. Differential revision: https://reviews.llvm.org/D60965
  272. [LSR] Limit the recursion for setup cost In some circumstances we can end up with setup costs that are very complex to compute, even though the scevs are not very complex to create. This can also lead to setupcosts that are calculated to be exactly -1, which LSR treats as an invalid cost. This patch puts a limit on the recursion depth for setup cost to prevent them taking too long. Thanks to @reames for the report and test case. Differential Revision: https://reviews.llvm.org/D60944
  273. [WebAssembly] Bail out of fastisel earlier when computing PIC addresses This change partially reverts https://reviews.llvm.org/D54647 in favor of bailing out during computeAddress instead. This catches the condition earlier and handles more cases. Differential Revision: https://reviews.llvm.org/D60986
  274. add Qiu Chaofan (qiucf@cn.ibm.com) to the CREDITS.txt
  275. Revert "Use const DebugLoc&" This reverts r358910 (git commit 2b744665308fc8d30a3baecb4947f2bd81aa7d30) While this patch *seems* trivial and safe and correct, it is not. The copies are actually load bearing copies. You can observe this with MSan or other ways of checking for use-after-destroy, but otherwise this may result in ... difficult to debug inexplicable behavior. I suspect the issue is that the debug location is used after the original reference to it is removed. The metadata backing it gets destroyed as its last references goes away, and then we reference it later through these const references.
  276. [CMake] Replace the sanitizer support in runtimes build with multilib This is a more generic solution; while the sanitizer support can be used only for sanitizer instrumented builds, the multilib support can be used to build other variants such as noexcept which is what we would like to use in Fuchsia. The name CMake target name uses the target name, same as for the regular runtimes build and the name of the multilib, concatenated with '+'. The libraries are installed in a subdirectory named after the multilib. Differential Revision: https://reviews.llvm.org/D60926
  277. Fully qualify llvm::Optional, some compilers complain otherwise.
  278. DebugInfo: Emit only one kind of accelerated access/name table Currently to opt in to debug_names in DWARFv5, the IR must contain 'nameTableKind: Default' which also enables debug_pubnames. Instead, only allow one of {debug_names, apple_names, debug_pubnames, debug_gnu_pubnames}. nameTableKind: Default gives debug_names in DWARFv5 and greater, debug_pubnames in v4 and earlier - and apple_names when tuning for lldb on MachO. nameTableKind: GNU always gives gnu_pubnames
  279. [SelectionDAG] move splat util functions up from x86 lowering This was supposed to be NFC, but the change in SDLoc definitions causes instruction scheduling changes. There's nothing x86-specific in this code, and it can likely be used from DAGCombiner's simplifyVBinOp().
  280. Try to work around compile errors with older versions of GCC.
  281. Relax test to check for a valid number instead of a specific number.
  282. [AMDGPU] Fix an issue in `op_sel_hi` skipping. Summary: - Only apply packed literal `op_sel_hi` skipping on operands requiring packed literals. Even an instruction is `packed`, it may have operand requiring non-packed literal, such as `v_dot2_f32_f16`. Reviewers: rampitec, arsenm, kzhuravl Subscribers: jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60978
  283. [dsymutil] Collect parseable Swift interfaces in the .dSYM bundle. When a Swift module built with debug info imports a library without debug info from a textual interface, the textual interface is necessary to reconstruct types defined in the library's interface. By recording the Swift interface files in DWARF dsymutil can collect them and LLDB can find them. This patch teaches dsymutil to look for DW_TAG_imported_modules and records all references to parseable Swift ingterfrace files and copies them to a.out.dSYM/Contents/Resources/<Arch>/<ModuleName>.swiftinterface <rdar://problem/49751748>
  284. [InstCombine] Eliminate stores to constant memory If we have a store to a piece of memory which is known constant, then we know the store must be storing back the same value. As a result, the store (or memset, or memmove) must either be down a dead path, or a noop. In either case, it is valid to simply remove the store. The motivating case for this involves a memmove to a buffer which is constant down a path which is dynamically dead. Note that I'm choosing to implement the less aggressive of two possible semantics here. We could simply say that the store *is undefined*, and prune the path. Consensus in the review was that the more aggressive form might be a good follow on change at a later date. Differential Revision: https://reviews.llvm.org/D60659
  285. [Support] unflake TempFileCollisions test Summary: This test was added to verify that createUniqueEntity() does not enter an infinite loop when all possible names are taken. However, it also checked that all possible names are generated, which is flaky (because the names are generated randomly). This change increases the number of attempts we make to make flakes exceedingly unlikely (3.88e-62). Reviewers: fedor.sergeev, rsmith Reviewed By: fedor.sergeev Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D56336
  286. [InstSimplify] Move masked.gather w/no active lanes handling to InstSimplify from InstCombine In the process, use the existing masked.load combine which is slightly stronger, and handles a mix of zero and undef elements in the mask.
  287. gn build: Merge r358869
  288. Use const DebugLoc&
  289. AMDGPU: Skip debug instructions in assert These are inserted after branch relaxation, and for some reason it's decided to put them in the long branch expansion block. It's probably not great to rely on the source block address, so this should probably be switched to being PC relative instead of relying on the block address
  290. [Tests] Revise a test as requested by reviewer in D59703
  291. [Tests] Add a negative test for masked.gather part of D59703
  292. [IPSCCP] Add missing `AssumptionCacheTracker` dependency Back in August, r340525 introduced a dependency on the assumption cache tracker in the ipsccp pass, but that commit missed a call to INITIALIZE_PASS_DEPENDENCY, which leaves the assumption cache improperly registered if SCCP is the only thing that pulls it in.
  293. [LPM/BPI] Preserve BPI through trivial loop pass pipeline (e.g. LCSSA, LoopSimplify) Currently, we do not expose BPI to loop passes at all. In the old pass manager, we appear to have been ignoring the fact that LCSSA and/or LoopSimplify didn't preserve BPI, and making it available to the following loop passes anyways. In the new one, it's invalidated before running any loop pass if either LCSSA or LoopSimplify actually make changes. If they don't make changes, then BPI is valid and available. So, we go ahead and teach LCSSA and LoopSimplify how to preserve BPI for consistency between old and new pass managers. This patch avoids an invalidation between the two requires in the following trivial pass pipeline: opt -passes="requires<branch-prob>,loop(no-op-loop),requires<branch-prob>" (when the input file is one which requires either LCSSA or LoopSimplify to canonicalize the loops) Differential Revision: https://reviews.llvm.org/D60790
  294. [PGO/SamplePGO][NFC] Move the function updateProfWeight from Instruction to CallInst. The issue was raised here: https://reviews.llvm.org/D60903#1472783 The function Instruction::updateProfWeight is only used for CallInst in profile update. From the current interface, it is very easy to think that the function can also be used for branch instruction. However, Branch instruction does't need the scaling the function provides for branch_weights and VP (value profile), in addition, scaling may introduce inaccuracy for branch probablity. The patch moves the function updateProfWeight from Instruction class to CallInst to remove the confusion. The patch also changes the scaling of branch_weights from a loop to a block because we know that ProfileData for branch_weights of CallInst will only have two operands at most. Differential Revision: https://reviews.llvm.org/D60911
  295. Use llvm::stable_sort. NFC
  296. Remove spurious semicolons; NFC.
  297. AMDGPU/GlobalISel: Fix non-power-of-2 G_EXTRACT sources
  298. STLExtras: add stable_sort wrappers
  299. GlobalISel: Legalize scalar G_EXTRACT sources
  300. llvm-undname: Fix an assert-on-invalid, found by oss-fuzz
  301. AMDGPU: Fix not checking for copy when looking at copy src Effectively reverts r356956. The check for isFullCopy was excessive, but there still needs to be a check that this is a copy.
  302. [AMDGPU][MC] Corrected parsing of SP3 'neg' modifier See bug 41156: https://bugs.llvm.org/show_bug.cgi?id=41156 Reviewers: artem.tamazov, arsenm Differential Revision: https://reviews.llvm.org/D60624
  303. [TargetLowering][AMDGPU][X86] Improve SimplifyDemandedBits bitcast handling This patch adds support for BigBitWidth -> SmallBitWidth bitcasts, splitting the DemandedBits/Elts accordingly. The AMDGPU backend needed an extra (srl (and x, c1 << c2), c2) -> (and (srl(x, c2), c1) combine to encourage BFE creation, I investigated putting this in DAGCombine but it caused a lot of noise on other targets - some improvements, some regressions. The X86 changes are all definite wins. Differential Revision: https://reviews.llvm.org/D60462
  304. [DAGCombiner] make variable name less ambiguous; NFC
  305. [DAGCombiner] prepare shuffle-of-splat to handle more patterns; NFC
  306. [LLVM-C] Add accessors to the default floating-point metadata node Summary: Add a getter and setter pair for floating-point accuracy metadata. Reviewers: whitequark, deadalnix Reviewed By: whitequark Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60527
  307. [NewPM] Add Option handling for SimpleLoopUnswitch This patch enables passing options to SimpleLoopUnswitch via the passes pipeline. Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe Reviewed By: fedor.sergeev Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D60676
  308. [AMDGPU] Regenerate uitofp i8 to float conversion tests. Prep work for D60462
  309. [NewPM] Add dummy Test for LoopVectorize option parsing.
  310. Revert "[ConstantRange] Rename make{Guaranteed -> Exact}NoWrapRegion() NFC" This reverts commit 7bf4d7c07f2fac862ef34c82ad0fef6513452445. After thinking about this more, this isn't right, the range is not exact in the same sense as makeExactICmpRegion(). This needs a separate function.
  311. [ConstantRange] Rename make{Guaranteed -> Exact}NoWrapRegion() NFC Following D60632 makeGuaranteedNoWrapRegion() always returns an exact nowrap region. Rename the function accordingly. This is in line with the naming of makeExactICmpRegion().
  312. [X86] Reject 512-bit types in getRegForInlineAsmConstraint when AVX512 is not enabled. Same for 256 bit and AVX.
  313. [JITLink] Remove a lot of reduntant 'JITLink_' prefixes. NFC.
  314. [cmake] Add llvm-jit to LLVM_TEST_DEPENDS Otherwise llvm-jit would say "utils/lit/lit/llvm/subst.py:127: note: Did not find llvm-jitlink in ..."
  315. [JITLink] Fix section start address calculation in eh-frame recorder. Section atoms are not sorted, so we need to scan the whole section to find the start address. No test case: Found by inspection, and any reproduction would depend on pointer ordering.
  316. Attemp get llvm-jitlink building on Windows By removing an include of dlfcn.h that looks unused. And clang-format a too-long line while here.
  317. [JITLink] Add an option to dump relocated section content. The -dump-relocated-section-content option will dump the contents of each section after relocations are applied, and before any checks are run or code executed.
  318. gn build: Re-run `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format`
  319. gn build: Merge r358749 Since the symlinks list for llvm-symbolizer is now never empty, the :symlinks target no longer needs an explicit dep on :llvm-symbolizer -- there will be at least one dep on a symlink, and each symlink depends on :llvm-symbolizer already. Since llvm-symbolizer:symlinks now produces symlinks that check-llvm uses, make llvm/test depend on the symlink target.
  320. gn build: Merge r358818 (JITLink)
  321. [cmake] Fix bug in r358779 - [CMake] Pass monorepo build settings in cross compile Escape semicolons in the targets list so that cmake doesn't expand them to spaces.
  322. llvm-undname: Fix hex escapes in wchar_t, char16_t, char32_t strings llvm-undname used to put '\x' in front of every pair of nibbles, but u"\xD7\xFF" produces a string with 6 bytes: \xD7 \0 \xFF \0 (and \0\0). Correct for a single character (plus terminating \0) is u\xD7FF instead. Now, wchar_t, char16_t, and char32_t strings roundtrip from source to clang-cl (and cl.exe) and then llvm-undname. (...at least as long as it's not a string like L"\xD7FF" L"foo" which gets demangled as L"\xD7FFfoo", where the compiler then considers the "f" as part of the hex escape. That seems ok.) Also add a comment saying that the "almost-valid" char32_t string I added in my last commit is actually produced by compilers.
  323. llvm-undname: Fix stack overflow on almost-valid If a unsigned with all 4 bytes non-0 was passed to outputHex(), there were two off-by-ones in it: - Both MaxPos and Pos left space for the final \0, which left the buffer one byte to small. Set MaxPos to 16 instead of 15 to fix. - The `assert(Pos >= 0);` was after a `Pos--`, move it up one line. Since valid Unicode codepoints are <= 0x10ffff, this could never really happen in practice. Found by oss-fuzz.
  324. [ConstantRange] Add saturating add/sub methods Add support for uadd_sat and friends to ConstantRange, so we can handle uadd.sat and friends in LVI. The implementation is forwarding to the corresponding APInt methods with appropriate bounds. One thing worth pointing out here is that the handling of wrapping ranges is not maximally accurate. A simple example is that adding 0 to a wrapped range will return a full range, rather than the original wrapped range. The tests also only check that the non-wrapping envelope is correct and minimal. Differential Revision: https://reviews.llvm.org/D60946
  325. [ConstantRange] Add getNonEmpty() constructor ConstantRanges have an annoying special case: If upper and lower are the same, it can be either an empty or a full set. When constructing constant ranges nearly always a full set is intended, but this still requires an explicit check in many places. This revision adds a getNonEmpty() constructor that disambiguates this case: If upper and lower are the same, a full set is created. Differential Revision: https://reviews.llvm.org/D60947
  326. [AArch64] add tests with multiple binop+splat vals; NFC See D60890 for context.
  327. llvm-undname: Fix stack overflow on invalid found by oss-fuzz
  328. gn build: Fix build after r358837
  329. [ARM] Rewrite isLegalT2AddressImmediate This does two main things, firstly adding some at least basic addressing modes for i64 types, and secondly treats floats and doubles sensibly when there is no fpu. The floating point change can help codesize in some cases, especially with D60294. Most backends seems to not consider the exact VT in isLegalAddressingMode, instead switching on type size. That is now what this does when the target does not have an fpu (as the float data will be loaded using LDR's). i64's currently use the address range of an LDRD (even though they may be legalised and loaded with an LDR). This is at least better than marking them all as illegal addressing modes. I have not attempted to do much with vectors yet. That will need changing once MVE is added. Differential Revision: https://reviews.llvm.org/D60677
  330. [X86] Add the rounding control operand to the printing for some scalar FMA instructions.
  331. [CachePruning] Simplify comparator
  332. [JITLink] Add dependency on MCParser to unit test after rL358818 This is required by -DBUILD_SHARED_LIBS=on builds for createMCAsmParser.
  333. [X86] Don't form masked vfpclass instruction from and+vfpclass unless the fpclass only has a single use.
  334. [JITLink] Remove an overly strict error check in JITLink's eh-frame parser. The error check required FDEs to refer to the most recent CIE, but the eh-frame spec allows them to refer to any previously seen CIE. This patch removes the offending check.
  335. [BinaryFormat] Fix bitfield-ordering of MachO::relocation_info on big-endian. Hopefully this will fix the JITLink regression test failures on big-endian testers (e.g. http://lab.llvm.org:8011/builders/clang-s390x-linux-lnt/builds/12702)
  336. [JITLink] Factor basic common GOT and stub creation code into its own class.
  337. [gn] Move Features.inc to clangd, create a config for it ClangdLSPServer and clangd unittests now include Features.inc so we need to append the target_gen_dir that contains it to their include_dirs. To do so, we use a public config that's applied to any target that depends on the features one. Differential Revision: https://reviews.llvm.org/D60919
  338. [JITLink] Add dependencies on MCDissassembler and Target to unit test.
  339. llvm-undname: Improve string literal demangling with embedded \0 chars - Don't assert when a string looks like a u32 string to the heuristic but doesn't have a length that's 0 mod 4. Instead, classify those as u16 with embedded \0 chars. Found by oss-fuzz. - Print embedded nul bytes as \0 instead of \x00.
  340. ftime-trace: Trace the name of the currently active pass as well. Differential Revision: https://reviews.llvm.org/D60782
  341. [JITLink] Add yet more detail to MachO/x86-64 unsupported relocation errors. Knowing the address/symbolnum field values makes it easier to identify the unsupported relocation, and provides enough information for the full bit pattern of the relocation to be reconstructed.
  342. [JITLink][ORC] Add JITLink to the list of dependencies for ORC. The new ObjectLinkingLayer in ORC depends on JITLink. This should fix the build error at http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/9621
  343. [JITLink] Fix a bad formatv format string.
  344. [JITLink] Disable MachO/x86-64 regression test if the X86 target is not built.
  345. Revert r358800. Breaks Obsequi from the test suite. The last attempt fixed gcc and consumer-typeset, but Obsequi seems to fail with a different issue.
  346. [JITLink] Add llvm-jitlink to the list of available tools in lit. Should fix the 'llvm-jitlink command not found' errors that are appearing on some builders.
  347. [JITLink] Add BinaryFormat to JITLink's dependencies. Hopefully this will fix the missing dependence on llvm::identify_magic that is showing up on some PPC bots. E.g. http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/9617
  348. [JITLink] Add more detail to MachO/x86-64 "unsupported relocation" errors. The extra information here will be helpful in diagnosing errors, like the ones currently occuring on the PPC big-endian bots. :)
  349. [JITLink] Add check to JITLink unit test to bail out for unsupported targets. This should prevent spurious JITLink unit test failures for builds that do not support the target(s) required by the tests.
  350. [JITLink] Silence some MSVC implicit cast warnings.
  351. [JITLink] Add llvm-jitlink subdirectory to tools/LLVMBuild.txt
  352. [JITLink] Use memset instead of bzero.
  353. [JITLink] Silence a narrowing conversion warning.
  354. [JITLink] Update BuildingAJIT tutorials to account for API changes in r358818. DynamicLibrarySearchGenerator::GetForCurrentProcess now takes a char (the global prefix) rather than a DataLayout reference.
  355. [JITLink] Fix a missing header and bad prototype.
  356. Initial implementation of JITLink - A replacement for RuntimeDyld. Summary: JITLink is a jit-linker that performs the same high-level task as RuntimeDyld: it parses relocatable object files and makes their contents runnable in a target process. JITLink aims to improve on RuntimeDyld in several ways: (1) A clear design intended to maximize code-sharing while minimizing coupling. RuntimeDyld has been developed in an ad-hoc fashion for a number of years and this had led to intermingling of code for multiple architectures (e.g. in RuntimeDyldELF::processRelocationRef) in a way that makes the code more difficult to read, reason about, extend. JITLink is designed to isolate format and architecture specific code, while still sharing generic code. (2) Support for native code models. RuntimeDyld required the use of large code models (where calls to external functions are made indirectly via registers) for many of platforms due to its restrictive model for stub generation (one "stub" per symbol). JITLink allows arbitrary mutation of the atom graph, allowing both GOT and PLT atoms to be added naturally. (3) Native support for asynchronous linking. JITLink uses asynchronous calls for symbol resolution and finalization: these callbacks are passed a continuation function that they must call to complete the linker's work. This allows for cleaner interoperation with the new concurrent ORC JIT APIs, while still being easily implementable in synchronous style if asynchrony is not needed. To maximise sharing, the design has a hierarchy of common code: (1) Generic atom-graph data structure and algorithms (e.g. dead stripping and | memory allocation) that are intended to be shared by all architectures. | + -- (2) Shared per-format code that utilizes (1), e.g. Generic MachO to | atom-graph parsing. | + -- (3) Architecture specific code that uses (1) and (2). E.g. JITLinkerMachO_x86_64, which adds x86-64 specific relocation support to (2) to build and patch up the atom graph. To support asynchronous symbol resolution and finalization, the callbacks for these operations take continuations as arguments: using JITLinkAsyncLookupContinuation = std::function<void(Expected<AsyncLookupResult> LR)>; using JITLinkAsyncLookupFunction = std::function<void(const DenseSet<StringRef> &Symbols, JITLinkAsyncLookupContinuation LookupContinuation)>; using FinalizeContinuation = std::function<void(Error)>; virtual void finalizeAsync(FinalizeContinuation OnFinalize); In addition to its headline features, JITLink also makes other improvements: - Dead stripping support: symbols that are not used (e.g. redundant ODR definitions) are discarded, and take up no memory in the target process (In contrast, RuntimeDyld supported pointer equality for weak definitions, but the redundant definitions stayed resident in memory). - Improved exception handling support. JITLink provides a much more extensive eh-frame parser than RuntimeDyld, and is able to correctly fix up many eh-frame sections that RuntimeDyld currently (silently) fails on. - More extensive validation and error handling throughout. This initial patch supports linking MachO/x86-64 only. Work on support for other architectures and formats will happen in-tree. Differential Revision: https://reviews.llvm.org/D58704
  357. [X86] Disable argument copy elision for arguments passed via pointers Summary: If you pass two 1024 bit vectors in IR with AVX2 on Windows 64. Both vectors will be split in four 256 bit pieces. The four pieces of the first argument will be passed indirectly using 4 gprs. The second argument will get passed via pointers in memory. The PartOffsets stored for the second argument are all in terms of its original 1024 bit size. So the PartOffsets for each piece are 32 bytes apart. So if we consider it for copy elision we'll only load an 8 byte pointer, but we'll move the address 32 bytes. The stack object size we create for the first part is probably wrong too. This issue was encountered by ISPC. I'm working on getting a reduce test case, but wanted to go ahead and get feedback on the fix. Reviewers: rnk Reviewed By: rnk Subscribers: dbabokin, llvm-commits, hiraditya Tags: #llvm Differential Revision: https://reviews.llvm.org/D60801
  358. [CorrelatedValuePropagation] Mark subs that we know not to wrap with nuw/nsw. Summary: Teach CorrelatedValuePropagation to also handle sub instructions in addition to add. Relatively simple since makeGuaranteedNoWrapRegion already understood sub instructions. Only subtle change is which range is passed as "Other" to that function, since sub isn't commutative. Note that CorrelatedValuePropagation::processAddSub is still hidden behind a default-off flag as IndVarSimplify hasn't yet been fixed to strip the added nsw/nuw flags and causes a miscompile. (PR31181) Reviewers: sanjoy, apilipenko, nikic Reviewed By: nikic Subscribers: hiraditya, jfb, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60036
  359. [ExecutionDomainFix] Optimize a binary search insertion
  360. [llvm-symbolizer] Fix section index at the end of a section This is very minor issue. The returned section index is only used by DWARFDebugLine as an llvm::upper_bound input and the use case shouldn't cause any behavioral change.
  361. [IndVarSimplify] Generate full checks for some LFTR tests; NFC
  362. [IndVarSimplify] Add tests for PR31181; NFC
  363. [ADT] Avoid warning in bsearch testcase
  364. [llvm-objdump] Fix End in disassemblyObject after rL358806
  365. [CVP] Add tests for sub nowrap inference; NFC These are baseline tests for D60036. Patch by Luqman Aden.
  366. [X86] Fix stack probing on x32 (PR41477) Fix for https://bugs.llvm.org/show_bug.cgi?id=41477. On the x32 ABI with stack probing a dynamic alloca will result in a WIN_ALLOCA_32 with a 32-bit size. The current implementation tries to copy it into RAX, resulting in a physreg copy error. Fix this by copying to EAX instead. Also fix incorrect opcodes or registers used in subs.
  367. [llvm-objdump] Don't disassemble symbols before SectionAddr This was caught by UBSAN tools/llvm-objdump/X86/macho-disassembly-g-dsym.test tools/llvm-objdump/X86/hex-displacement.test
  368. [X86] Don't turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the original AND can represented by MOVZX. The MOVZX doesn't require an immediate to be encoded at all. Though it does use a 2 byte opcode so its the same size as a 1 byte immediate. But it has a separate source and dest register so can help avoid copies.
  369. [X86] Turn (and (anyextend (shl X, C1), C2)) into (shl (and (anyextend X), (C1 >> C2), C2) if the AND could match a movzx. There's one slight regression in here because we don't check that the immediate already allowed movzx before the shift. I'll fix that next.
  370. [llvm-objdump] Simplify --{start,stop}-address
  371. [WebAssembly] Object: Improve error messages on invalid section Also add a test. Differential Revision: https://reviews.llvm.org/D60836
  372. Revert "Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores"" We were shifting the wrong component of a split load when trying to combine them back into a single value.
  373. [GlobalISel][AArch64] Legalize + select G_FRINT Exactly the same as G_FCEIL, G_FABS, etc. Add tests for the fp16/nofp16 behaviour, update arm64-vfloatintrinsics, etc. Differential Revision: https://reviews.llvm.org/D60895
  374. [WebAssembly] FastISel: Don't fallback to SelectionDAG after BuildMI in selectCall My understanding is that once BuildMI has been called we can't fallback to SelectionDAG. This change moves the fallback for when getRegForValue() fails for that target of an indirect call. This was failing in -fPIC mode when the callee is GlobalValue. Add a test case that tickles this. Differential Revision: https://reviews.llvm.org/D60908
  375. [GVN+LICM] Use line 0 locations for better crash attribution This is a follow-up to r291037+r291258, which used null debug locations to prevent jumpy line tables. Using line 0 locations achieves the same effect, but works better for crash attribution because it preserves the right inline scope. Differential Revision: https://reviews.llvm.org/D60913
  376. Update GN files to build with r358103
  377. Remove the EnableEarlyCSEMemSSA set of options from the legacy and new pass managers. They were default to true and not being used. Differential Revision: https://reviews.llvm.org/D60747
  378. [AArch64] Fix checks for AArch64MCExpr::VK_SABS flag. VK_SABS is part of the SymLoc bitfield in the variant kind which should be compared for equality, not by checking the VK_SABS bit. As far as I know, the existing code happened to produce the correct results in all cases, so this is just a cleanup. Patch by Stephen Crane. Differential Revision: https://reviews.llvm.org/D60596
  379. [GlobalISel] Add IRTranslator support for G_FRINT Add it as a simple intrinsic, update arm64-irtranslator.ll. Differential Revision: https://reviews.llvm.org/D60893
  380. Attempt to fix buildbot failure in commit 1bb57bac959ac163fd7d8a76d734ca3e0ecee6ab.
  381. [GlobalISel] Add a G_FRINT opcode Equivalent to SelectionDAG's frint node. Differential Revision: https://reviews.llvm.org/D60891
  382. [X86] Add test case for D60801. NFC
  383. [MS] Emit S_HEAPALLOCSITE debug info Summary: This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug info in codeview. Currently only changes FastISel, so emitting labels still needs to be implemented in SelectionDAG. Reviewers: hans, rnk Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D60800
  384. [CMake] Pass monorepo build settings in cross compile This allows the cross compiled build targets to configure the LLVM tools and sub-projects that are part of the main build. This is needed for generating native non llvm *-tablegen tools when cross compiling clang in the monorepo build environment.
  385. [gn] Support dots in CMake paths in the sync script Some file paths use dots to pick up sources from parent directories. Differential Revision: https://reviews.llvm.org/D60734
  386. [LICM & MemorySSA] Make limit flags pass tuning options. Summary: Make the flags in LICM + MemorySSA tuning options in the old and new pass managers. Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60490
  387. Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores" This introduces some runtime failures which I'll need to investigate further.
  388. [GlobalISel][AArch64] Legalize vector G_FPOW This instruction is legalized in the same way as G_FSIN, G_FCOS, G_FLOG10, etc. Update legalize-pow.mir and arm64-vfloatintrinsics.ll to reflect the change. Differential Revision: https://reviews.llvm.org/D60218
  389. [NewPassManager] Adding pass tuning options: loop vectorize. Summary: Trying to add the plumbing necessary to add tuning options to the new pass manager. Testing with the flags for loop vectorize. Reviewers: chandlerc Subscribers: sanjoy, mehdi_amini, jlebar, steven_wu, dexonsmith, dang, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59723
  390. [dsymutil] DwarfLinker: delete unused parameter
  391. [SelectionDAG] soften splat mask assert/unreachable (PR41535) These are general queries, so they should not die when given a degenerate input like an all undef mask. Callers should be able to deal with an op that will eventually be simplified away.
  392. llvm-undname: Attempt to fix leak-on-invalid found by oss-fuzz
  393. gn build: Merge r358722
  394. gn build: Merge r358691
  395. [LTO] Add plumbing to save stats during LTO on Darwin. Gold and ld on Linux already support saving stats, but the infrastructure is missing on Darwin. Unfortunately it seems like the configuration from lib/LTO/LTO.cpp is not used. This patch adds a new LTOStatsFile option and adds plumbing in Clang to use it on Darwin, similar to the way remarks are handled. Currnetly the handling of LTO flags seems quite spread out, with a bunch of duplication. But I am not sure if there is an easy way to improve that? Reviewers: anemet, tejohnson, thegameg, steven_wu Reviewed By: steven_wu Differential Revision: https://reviews.llvm.org/D60516
  396. Change \r\n -> \n for llvm-symbolizer/help.test after rL358749
  397. [llvm-symbolizer] Add llvm-addr2line This adds an alias for llvm-symbolizer with different defaults so that it can be used as a drop-in replacement for GNU's addr2line. If a substring "addr2line" is found in the tool's name: * it defaults "-i", "-f" and "-C" to OFF; * it uses "--output-style=GNU" by default. Differential Revision: https://reviews.llvm.org/D60067
  398. [llvm-symbolizer] Unhide and document the "-output-style" option With the latest changes, the option gets useful for users of llvm-symbolizer, not only for the upcoming llvm-addr2line. Differential Revision: https://reviews.llvm.org/D60816
  399. [llvm-symbolizer] Make the output with -output-style=GNU closer to addr2line's This patch addresses two differences in the output of llvm-symbolizer and GNU's addr2line: * llvm-symbolizer prints an empty line after the report for an address. * With "-f -i=0", llvm-symbolizer replaces the name of an inlined function with the name from the symbol table, i. e., the top caller function in the inlining chain. addr2line preserves the name of the inlined function. Differential Revision: https://reviews.llvm.org/D60770
  400. [AMDGPU] Regenerate extractelt->truncate test. Prep work for D60462
  401. [CodeGen] Add "const" to MachineInstr::mayAlias Summary: The basic idea here is to make it possible to use MachineInstr::mayAlias also when the MachineInstr is const (or the "Other" MachineInstr is const). The addition of const in MachineInstr::mayAlias then rippled down to the need for adding const in several other places, such as TargetTransformInfo::getMemOperandWithOffset. Reviewers: hfinkel Reviewed By: hfinkel Subscribers: hfinkel, MatzeB, arsenm, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60856
  402. [PATCH] [MachineScheduler] Check pending instructions when an instruction is scheduled Pending instructions that may have been blocked from being available by the HazardRecognizer may no longer may not be blocked any more when an instruction is scheduled; pending instructions should be re-checked in this case. This is primarily aimed at VLIW targets with large parallelism and esoteric constraints. No testcase as no in-tree targets have this behavior. Differential revision: https://reviews.llvm.org/D60861
  403. [MergeFunc] Delete unused FunctionNode::release()
  404. [MergeFunc] removeUsers: call remove() only on direct users removeUsers uses a work list to collect indirect users and call remove() on those functions. However it has a bug (`if (!Visited.insert(UU).second)`). Actually, we don't have to collect indirect users. After the merge of F and G, G's callers will be considered (added to Deferred). If G's callers can be merged, G's callers' callers will be considered. Update the test unnamed-addr-reprocessing.ll to make it clear we can still merge indirect callers.
  405. [AMDGPU] Ignore non-SUnits edges Summary: Ignore edges to non-SUnits (e.g. ExitSU) when checking for low latency instructions. When calling the function isLowLatencyInstruction(), an ExitSU could be on the list of successors, not necessarily a regular SU. In other places in the code there is a check "Succ->NodeNum >= DAGSize" to prevent further processing of ExitSU as "Succ->getInstr()" is NULL in such a case. Also, 8 out of 9 cases of "SUnit *Succ = SuccDep.getSUnit())" has the guard, so it is clearly an omission here. Change-Id: Ica86f0327c7b2e6bcb56958e804ea6c71084663b Reviewers: nhaehnle Reviewed By: nhaehnle Subscribers: MatzeB, arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60864
  406. [CallSite removal] Move the legacy PM, call graph, and some inliner code to `CallBase`. This patch focuses on the legacy PM, call graph, and some of inliner and legacy passes interacting with those APIs from `CallSite` to the new `CallBase` class. No interesting changes. Differential Revision: https://reviews.llvm.org/D60412
  407. [MergeFunc] Use less_first() as the comparator of Schwartzian transform
  408. [X86] Turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the AND could match a movzx. Could get further improvements by recognizing (i64 and (anyext (i32 shl))).
  409. [X86] Add test cases for turning (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) when the AND could match to a movzx. We already reorder when C1 >> C2 would allow a smaller immediate encoding.
  410. [X86] Make sure we copy the HandleSDNode back to N before executing the default code after the switch in matchAddressRecursively Summary: There are two places where we create a HandleSDNode in address matching in order to handle the case where N is changed by CSE. But if we end up not matching, we fall back to code at the bottom of the switch that really would like N to point to something that wasn't CSEd away. So we should make sure we copy the handle back to N on any paths that can reach that code. This appears to be the true reason we needed to check DELETED_NODE in the negation matching. In pr32329.ll we had two subtracts back to back. We recursed through the first subtract, and onto the second subtract. The second subtract called matchAddressRecursively on its LHS which caused that subtract to CSE. We ultimately failed the match and ended up in the default code. But N was pointing at the old node that had been deleted, but the default code didn't know that and took it as the base register. Then we unwound back to the first subtract and tried to access this bogus base reg requiring the check for deleted node. With this patch we now use the CSE result as the base reg instead. matchAdd has been broken since sometime in 2015 when it was pulled out of the switch into a helper function. The assignment to N at the end was still there, but N was passed by value and not by reference so the update didn't go anywhere. Reviewers: niravd, spatel, RKSimon, bkramer Reviewed By: niravd Subscribers: llvm-commits, hiraditya Tags: #llvm Differential Revision: https://reviews.llvm.org/D60843
  411. [DWARF] Use hasFileAtIndex to properly verify DWARF 5 after rL358732
  412. [llvm] Prevent duplicate files in debug line header in dwarf 5: another attempt Another attempt to land the changes in debug line header to prevent duplicate files in Dwarf 5. I rolled back my previous commit because of a mistake in generating the object file in a test. Meanwhile, I addressed some offline comments and changed the implementation; the largest difference is that MCDwarfLineTableHeader does not keep DwarfVersion but gets it as a parameter. I also merged the patch to fix two lld tests that will strt to fail into this patch. Original Commit: https://reviews.llvm.org/D59515 Original Message: Motivation: In previous dwarf versions, file name indexes started from 1, and the primary source file was not explicit. Dwarf 5 standard (6.2.4) prescribes the primary source file to be explicitly given an entry with an index number 0. The current implementation honors the specification by just duplicating the main source file, once with index number 0, and later maybe with another index number. While this is compliant with the letter of the standard, the duplication causes problems for consumers of this information such as lldb. (Some files are duplicated, where only some of them have a line table although all refer to the same file) With this change, dwarf 5 debug line section files always start from 0, and the zeroth entry is not duplicated whenever possible. This requires different handling of dwarf 4 and dwarf 5 during generation (e.g. when a function returns an index zero for a file name, it signals an error in dwarf 4, but not in dwarf 5) However, I think the minor complication is worth it, because it enables all consumers (lldb, gdb, dwarfdump, objdump, and so on) to treat all files in the file name list homogenously.
  413. [APInt] Optimize umul_ov Change two costly udiv() calls to lshr(1)*RHS + left-shift + plus On one 64-bit umul_ov benchmark, I measured an obvious improvement: 12.8129s -> 3.6257s Note, there may be some value to special case 64-bit (the most common case) with __builtin_umulll_overflow(). Differential Revision: https://reviews.llvm.org/D60669
  414. MergeFunc: preserve COMDAT information when creating a thunk We would previously drop the COMDAT on the thunk we generated when replacing a function body with the forwarding thunk. This would result in a function that may have been multiply emitted and multiply merged to be emitted with the same name without the COMDAT. This is a hard error with PE/COFF where the COMDAT is used for the deduplication of Value Witness functions for Swift.
  415. [LoopUnroll] Move list of params into a struct [NFCI]. Summary: Cleanup suggested in review of r358304. Reviewers: sanjoy, efriedma Subscribers: jlebar, zzheng, dmgreen, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60638
  416. [AArch64] add tests for mul-by-element; NFC
  417. Implement sys::fs::copy_file using the macOS copyfile(3) API to support APFS clones. This patch adds a Darwin-specific implementation of llvm::sys::fs::copy_file() that uses the macOS copyfile(3) API to support APFS copy-on-write clones, which should be faster and much more space efficient. https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/APFS_Guide/ToolsandAPIs/ToolsandAPIs.html Differential Revision: https://reviews.llvm.org/D60802 This reapplies 358628 with an additional bugfix handling the case where the destination file already exists. (Caught by the clang testsuite).
  418. [GlobalISel][AArch64] Legalize/select G_(S/Z/ANY)_EXT for v8s8s This adds legalization for G_SEXT, G_ZEXT, and G_ANYEXT for v8s8s. We were falling back on G_ZEXT in arm64-vabs.ll before, preventing us from selecting the @llvm.aarch64.neon.sabd.v8i8 intrinsic. This adds legalizer support for those 3, which gives us selection via the importer. Update the relevant tests (legalize-ext.mir, select-int-ext.mir) and add a GISel line to arm64-vabs.ll. Differential Revision: https://reviews.llvm.org/D60881
  419. [GlobalISel][AArch64] Legalize v8s8 loads Add legalizer support for loads of v8s8 and update legalize-load-store.mir. Differential Revision: https://reviews.llvm.org/D60877
  420. llvm-undname: Fix two more asserts-on-invalid, found by oss-fuzz
  421. llvm-undname: Fix two asserts-on-invalid
  422. [GuardWidening] Wire up a NPM version of the LoopGuardWidening pass
  423. [NFC] FMF propagation for GlobalIsel
  424. [BlockExtractor] Extend the file format to support the grouping of basic blocks Prior to this patch, each basic block listed in the extrack-blocks-file would be extracted to a different function. This patch adds the support for comma separated list of basic blocks to form group. When the region formed by a group is not extractable, e.g., not single entry, all the blocks of that group are left untouched. Let us see this new format in action (comments are not part of the file format): ;; funcName bbName[,bbName...] foo bb1 ;; Extract bb1 in its own function foo bb2,bb3 ;; Extract bb2,bb3 in their own function bar bb1,bb4 ;; Extract bb1,bb4 in their own function bar bb2 ;; Extract bb2 in its own function Assuming all regions are extractable, this will create one function and thus one call per region. Differential Revision: https://reviews.llvm.org/D60746
  425. [PowerPC] Add some PPC vec cost tests to prep for D60160 NFC
  426. [X86] combineVectorTruncationWithPACKUS - remove split/concatenation of mask combineVectorTruncationWithPACKUS is currently splitting the upper bit bit masking into 128-bit subregs and then concatenating them back together. This was originally done to avoid regressions that caused existing subregs to be concatenated to the larger type just for the AND masking before being extracted again. This was fixed by @spatel (notably rL303997 and rL347356). This also lets SimplifyDemandedBits do some further improvements before it hits the recursive depth limit. My only annoyance with this is that we were broadcasting some xmm masks but we seem to have lost them by moving to ymm - but that's a known issue as the logic in lowerBuildVectorAsBroadcast isn't great. Differential Revision: https://reviews.llvm.org/D60375#inline-539623
  427. [LoopPred] Fix a blatantly obvious bug in r358684 The bug is that I didn't check whether the operand of the invariant_loads were themselves invariant. I don't know how this got missed in the patch and review. I even had an unreduced test case locally, and I remember handling this case, but I must have lost it in one of the rebases. Oops.
  428. [x86] add tests for improved insertelement to index 0 (PR41512); NFC Patch proposal in D60852.
  429. [CMake] Allow custom extensions for externalized debug info Summary: Extra flexibility for emitting debug info to external files (remains Darwin only for now). LLDB needs this functionality to emit a LLDB.framework.dSYM instead of LLDB.dSYM when building the framework, because the latter could conflict with the driver's lldb.dSYM when emitted in the same directory on case-insensitive file systems. Reviewers: friss, bogner, beanz Subscribers: mgorny, aprantl, llvm-commits, #lldb Tags: #llvm Differential Revision: https://reviews.llvm.org/D60862
  430. [LoopPredication] Allow predication of loop invariant computations (within the loop) The purpose of this patch is to eliminate a pass ordering dependence between LoopPredication and LICM. To understand the purpose, consider the following snippet of code inside some loop 'L' with IV 'i' A = _a.length; guard (i < A) a = _a[i] B = _b.length; guard (i < B); b = _b[i]; ... Z = _z.length; guard (i < Z) z = _z[i] accum += a + b + ... + z; Today, we need LICM to hoist the length loads, LoopPredication to make the guards loop invariant, and TrivialUnswitch to eliminate the loop invariant guard to establish must execute for the next length load. Today, if we can't prove speculation safety, we'd have to iterate these three passes 26 times to reduce this example down to the minimal form. Using the fact that the array lengths are known to be invariant, we can short circuit this iteration. By forming the loop invariant form of all the guards at once, we remove the need for LoopPredication from the iterative cycle. At the moment, we'd still have to iterate LICM and TrivialUnswitch; we'll leave that part for later. As a secondary benefit, this allows LoopPred to expose peeling oppurtunities in a much more obvious manner. See the udiv test changes as an example. If the udiv was not hoistable (i.e. we couldn't prove speculation safety) this would be an example where peeling becomes obviously profitable whereas it wasn't before. A couple of subtleties in the implementation: - SCEV's isSafeToExpand guarantees speculation safety (i.e. let's us expand at a new point). It is not a precondition for expansion if we know the SCEV corresponds to a Value which dominates the requested expansion point. - SCEV's isLoopInvariant returns true for expressions which compute the same value across all iterations executed, regardless of where the original Value is located. (i.e. it can be in the loop) This implies we have a speculation burden to prove before expanding them outside loops. - invariant_loads and AA->pointsToConstantMemory are two cases that SCEV currently does not handle, but meets the SCEV definition of invariance. I plan to sink this part into SCEV once this has baked for a bit. Differential Revision: https://reviews.llvm.org/D60093
  431. [SDA] Bug fix: Use IPD outside the loop as divergence bound Summary: The immediate post dominator of the loop header may be part of the divergent loop. Since this /was/ the divergence propagation bound the SDA would not detect joins of divergent paths outside the loop. Reviewers: nhaehnle Reviewed By: nhaehnle Subscribers: mmasten, arsenm, jvesely, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59042
  432. Fix a bug in SCEV's isSafeToExpand around speculation safety isSafeToExpand was making a common, but dangerously wrong, mistake in assuming that if any instruction within a basic block executes, that all instructions within that block must execute. This can be trivially shown to be false by considering the following small example: bb: add x, y <-- InsertionPoint call @throws() udiv x, y <-- SCEV* S br ... It's clearly not legal to expand S above the throwing call, but the previous logic would do so since S dominates (but not properlyDominates) the block containing the InsertionPoint. Since iterating instructions w/in a block is expensive, this change special cases two cases: 1) S is an operand of InsertionPoint, and 2) InsertionPoint is the terminator of it's block. These two together are enough to keep all current optimizations triggering while fixing the latent correctness issue. As best I can tell, this is a silent bug in current ToT. Given that, there's no tests with this change. It was noticed in an upcoming optimization change (D60093), and was reviewed as part of that. That change will include the test which caused me to notice the issue. I'm submitting this seperately so that anyone bisecting a problem gets a clear explanation.
  433. MinidumpYAML: Fix ambiguity between std::make_unique and llvm::make_unique
  434. MinidumpYAML: Add support for ModuleList stream Summary: This patch adds support for yaml (de)serialization of the minidump ModuleList stream. It's a fairly straight forward-application of the existing patterns to the ModuleList structures defined in previous patches. One thing, which may be interesting to call out explicitly is the addition of "new" allocation functions to the helper BlobAllocator class. The reason for this was, that there was an emerging pattern of a need to allocate space for entities, which do not have a suitable lifetime for use with the existing allocation functions. A typical example of that was the "size" of various lists, which is only available as a temporary returned by the .size() method of some container. For these cases, one can use the new set of allocation functions, which will take a temporary object, and store it in an allocator-managed buffer until it is written to disk. Reviewers: amccarth, jhenderson, clayborg, zturner Subscribers: lldb-commits, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60405
  435. gn build: Merge r358607
  436. gn build: Merge r358633
  437. gn build: Merge r358620
  438. [llvm-objcopy] Add -B mips
  439. [yaml2elf/obj2yaml] - Allow normal parsing/dumping of the .rela.dyn section .rela.dyn is a section that has sh_info normally set to zero. And Info is an optional field in the description of the relocation section in YAML. But currently, yaml2obj would fail to produce the object when Info is not explicitly listed. The patch fixes the issue. Differential revision: https://reviews.llvm.org/D60820
  440. [X86][SSE] Lower ICMP EQ(AND(X,C),C) -> SRA(SHL(X,LOG2(C)),BW-1) iff C is power-of-2. This replaces the MOVMSK combine introduced at D52121/rL342326 (movmsk (setne (and X, (1 << C)), 0)) -> (movmsk (X << C)) with the more general icmp lowering so it can pick up more cases through bitcasts - notably vXi8 cases which use vXi16 shifts+masks, this patch can remove the mask and use pcmpgtb(0,x) for the sra. Differential Revision: https://reviews.llvm.org/D60625
  441. [llvm-objcopy][llvm-strip] Add switch to allow removing referenced sections llvm-objcopy currently emits an error if a section to be removed is referenced by another section. This is a reasonable thing to do, but is different to GNU objcopy. We should allow users who know what they are doing to have a way to produce the invalid ELF. This change adds a new switch --allow-broken-links to both llvm-strip and llvm-objcopy to do precisely that. The corresponding sh_link field is then set to 0 instead of an error being emitted. I cannot use llvm-readelf/readobj to test the link fields because they emit an error if any sections, like the .dynsym, cannot be properly loaded. Reviewed by: rupprecht, grimar Differential Revision: https://reviews.llvm.org/D60324
  442. Test commit access [NFC] Remove a trailing space
  443. [NewPM] Add Option handling for LoopVectorize This patch enables passing options to LoopVectorizePass via the passes pipeline. Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe Reviewed By: fedor.sergeev Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D60681
  444. [PowerPC] Fix wrong ElemSIze when calling isConsecutiveLS() Summary: This issue from the bugzilla: https://bugs.llvm.org/show_bug.cgi?id=41177 When the two operands for BUILD_VECTOR are same, we will get assert error. llvm::SDValue combineBVOfConsecutiveLoads(llvm::SDNode*, llvm::SelectionDAG&): Assertion `!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) && "The loads cannot be both consecutive and reverse consecutive."' failed. This error caused by the wrong ElemSIze when calling isConsecutiveLS(). We should use `getScalarType().getStoreSize();` to get the ElemSize instread of `getScalarSizeInBits() / 8`. Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D60811
  445. [llvm-profdata] Fix one bad format in llvm-profdata CommandGuide doc. NFC
  446. Elaborate why we have an option on by default for enabling chr.
  447. [AMDGPU] Avoid DAG combining assert with fneg(fadd(A,0)) fneg combining attempts to turn it into fadd(fneg(A), fneg(0)), but creating the new fadd folds to just fneg(A). When A has multiple uses, this confuses it and you get an assert. Fixed. Differential Revision: https://reviews.llvm.org/D60633 Change-Id: I0ddc9b7286abe78edc0cd8d734fdeb05ff09821c
  448. Fix a typo in comments. [NFC]
  449. [GISel]:IRTranslator: Prefer a buidInstr form that allows CSE of cast instructions https://reviews.llvm.org/D60844 Use the style of buildInstr that allows CSEing.
  450. Fix bad compare function over FusionCandidate. Reverse the checking of the domiance order so that when a self compare happens, it returns false. This makes compare function have strict weak ordering.
  451. Revert Implement sys::fs::copy_file using the macOS copyfile(3) API to support APFS clones. This reverts r358628 (git commit 91a06bee788262a294527b815354f380d99dfa9b) while investigating a crash reproducer bot failure.
  452. Implement sys::fs::copy_file using the macOS copyfile(3) API to support APFS clones. This patch adds a Darwin-specific implementation of llvm::sys::fs::copy_file() that uses the macOS copyfile(3) API to support APFS copy-on-write clones, which should be faster and much more space efficient. https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/APFS_Guide/ToolsandAPIs/ToolsandAPIs.html Differential Revision: https://reviews.llvm.org/D60802
  453. Fix formatting. NFC
  454. [x86] try to widen 'shl' as part of LEA formation The test file has pairs of tests that are logically equivalent: https://rise4fun.com/Alive/2zQ %t4 = and i8 %t1, 8 %t5 = zext i8 %t4 to i16 %sh = shl i16 %t5, 2 %t6 = add i16 %sh, %t0 => %t4 = and i8 %t1, 8 %sh2 = shl i8 %t4, 2 %z5 = zext i8 %sh2 to i16 %t6 = add i16 %z5, %t0 ...so if we can fold the shift op into LEA in the 1st pattern, then we should be able to do the same in the 2nd pattern (unnecessary 'movzbl' is a separate bug I think). We don't want to do this any sooner though because that would conflict with generic transforms that try to narrow the width of the shift. Differential Revision: https://reviews.llvm.org/D60789
  455. Test commit by Denis Bakhvalov Change-Id: I4d85123a157d957434902fb14ba50926b2d56212
  456. [AsmPrinter] hoist %a output template to base class for ARM+Aarch64 Summary: X86 is quite complicated; so I intend to leave it as is. ARM+Aarch64 do basically the same thing (Aarch64 did not correctly handle immediates, ARM has a test llvm/test/CodeGen/ARM/2009-04-06-AsmModifier.ll that uses %a with an immediate) for a flag that should be target independent anyways. Reviewers: echristo, peter.smith Reviewed By: echristo Subscribers: javed.absar, eraman, kristof.beyls, hiraditya, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D60841
  457. Add a getSizeInBits() accessor to MachineMemOperand. NFC. Cleans up a bunch of places where we do getSize() * 8. Differential Revision: https://reviews.llvm.org/D60799
  458. [GlobalISel] Add legalization support for non-power-2 loads and stores Legalize things like i24 load/store by splitting them into smaller power of 2 operations. This matches how SelectionDAG handles these operations. Differential Revision: https://reviews.llvm.org/D59971
  459. Add basic loop fusion pass. This patch adds a basic loop fusion pass. It will fuse loops that conform to the following 4 conditions: 1. Adjacent (no code between them) 2. Control flow equivalent (if one loop executes, the other loop executes) 3. Identical bounds (both loops iterate the same number of iterations) 4. No negative distance dependencies between the loop bodies. The pass does not make any changes to the IR to create opportunities for fusion. Instead, it checks if the necessary conditions are met and if so it fuses two loops together. The pass has not been added to the pass pipeline yet, and thus is not enabled by default. It can be run stand alone using the -loop-fusion option. Differential Revision: https://reviews.llvm.org/D55851
  460. [AsmPrinter] defer %c to base class for ARM, PPC, and Hexagon. NFC Summary: None of these derived classes do anything that the base class cannot. If we remove these case statements, then the base class can handle them just fine. Reviewers: peter.smith, echristo Reviewed By: echristo Subscribers: nemanjai, javed.absar, eraman, kristof.beyls, hiraditya, kbarton, jsji, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D60803
  461. [ThinLTO] Fix ThinLTOCodegenerator to export llvm.used symbols Summary: Reapply r357931 with fixes to ThinLTO testcases and llvm-lto tool. ThinLTOCodeGenerator currently does not preserve llvm.used symbols and it can internalize them. In order to pass the necessary information to the legacy ThinLTOCodeGenerator, the input to the code generator is rewritten to be based on lto::InputFile. Now ThinLTO using the legacy LTO API will requires data layout in Module. "internalize" thinlto action in llvm-lto is updated to run both "promote" and "internalize" with the same configuration as ThinLTOCodeGenerator. The old "promote" + "internalize" option does not produce the same output as ThinLTOCodeGenerator. This fixes: PR41236 rdar://problem/49293439 Reviewers: tejohnson, pcc, kromanova, dexonsmith Reviewed By: tejohnson Subscribers: ormris, bd1976llvm, mehdi_amini, inglorion, eraman, hiraditya, jkorous, dexonsmith, arphaman, dang, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60421
  462. [InstCombine] Factor out unreachable inst idiom creation [NFC] In InstCombine, we use an idiom of "store i1 true, i1 undef" to indicate we've found a path which we've proven unreachable. We can't actually insert the unreachable instruction since that would require changing the CFG. We leave that to simplifycfg later. This just factors out that idiom creation so we don't duplicate the same mostly undocument idiom creation in multiple places.
  463. [LVI][CVP] Constrain values in with.overflow branches If a branch is conditional on extractvalue(op.with.overflow(%x, C), 1) then we can constrain the value of %x inside the branch based on makeGuaranteedNoWrapRegion(). We do this by extending the edge-value handling in LVI. This allows CVP to then fold comparisons against %x, as illustrated in the tests. Differential Revision: https://reviews.llvm.org/D60650
  464. [AMDGPU][MC] Corrected handling of "-" before expressions See bug 41156: https://bugs.llvm.org/show_bug.cgi?id=41156 Reviewers: artem.tamazov, arsenm Differential Revision: https://reviews.llvm.org/D60622
  465. [ARM] tighten test checks; NFC
  466. AMDGPU: Force skip over SMRD, VMEM and s_waitcnt instructions Summary: This fixes a large Dawn of War 3 performance regression with RADV from Mesa 19.0 to master which was caused by creating less code in some branches. Reviewers: arsen, nhaehnle Reviewed By: nhaehnle Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60824
  467. [ARM] make test checks more thorough; NFC This will change with the proposal in D60214. Unfortunately, the triple is not supported for auto-generation via script, and the multiple RUN lines have diffs on this test, but I can't tell exactly what is required by this test. PR7162 was an assert/crash, so hopefully, this is good enough.
  468. [LoopUnroll] Allow unrolling if the unrolled size does not exceed loop size. Summary: In the following cases, unrolling can be beneficial, even when optimizing for code size: 1) very low trip counts 2) potential to constant fold most instructions after fully unrolling. We can unroll in those cases, by setting the unrolling threshold to the loop size. This might highlight some cost modeling issues and fixing them will have a positive impact in general. Reviewers: vsk, efriedma, dmgreen, paquette Reviewed By: paquette Differential Revision: https://reviews.llvm.org/D60265
  469. [DAGCombine] Add SimplifyDemandedBits helper that handles demanded elts mask as well The other SimplifyDemandedBits helpers become wrappers to this new demanded elts variant.
  470. [Support] Add LEB128 support to BinaryStreamReader/Writer. Summary: This patch adds support for ULEB128 and SLEB128 encoding and decoding to BinaryStreamWriter and BinaryStreamReader respectively. Support for ULEB128/SLEB128 will be used for eh-frame parsing in the JITLink library currently under development (see https://reviews.llvm.org/D58704). Reviewers: zturner, dblaikie Subscribers: kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60810
  471. [ScheduleDAGRRList] Recompute topological ordering on demand. Currently there is a single point in ScheduleDAGRRList, where we actually query the topological order (besides init code). Currently we are recomputing the order after adding a node (which does not have predecessors) and then we add predecessors edge-by-edge. We can avoid adding edges one-by-one after we added a new node. In that case, we can just rebuild the order from scratch after adding the edges to the DAG and avoid all the updates to the ordering. Also, we can delay updating the DAG until we query the DAG, if we keep a list of added edges. Depending on the number of updates, we can either apply them when needed or recompute the order from scratch. This brings down the geomean compile time for of CTMark with -O1 down 0.3% on X86, with no regressions. Reviewers: MatzeB, atrick, efriedma, niravd, paquette Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D60125
  472. [AMDGPU][MC] Corrected parsing of registers See bug 41280: https://bugs.llvm.org/show_bug.cgi?id=41280 Reviewers: artem.tamazov, arsenm Differential Revision: https://reviews.llvm.org/D60621
  473. [AMDGPU] Flag new raw/struct atomic ops as source of divergence Differential Revision: https://reviews.llvm.org/D60731 Change-Id: I821d93dec8b9cdd247b8172d92fb5e15340a9e7d
  474. gn build: Merge r358554
  475. [LLVM-C] Add DIFile Field Accesssors Summary: Add accessors for the file, directory, source file name (curiously, an `Optional` value?), of a DIFile. This is intended to replace the LLVMValueRef-based accessors used in D52239 Reviewers: whitequark, jberdine, deadalnix Reviewed By: whitequark, jberdine Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60489
  476. [CostModel][X86] Add bool anyof/allof reduction costs On pre-AVX512 targets we can use MOVMSK to extract reduced boolean results. This is properly optimized, annoyingly AVX512 isn't and produces code that is almost as bad as the (unchanged) costs suggest...... Differential Revision: https://reviews.llvm.org/D60403
  477. [DWARF] llvm::Error -> Error. NFC The unqualified name is more common and is used in the file as well.
  478. Change some llvm::{lower,upper}_bound to llvm::bsearch. NFC
  479. [llvm-objcopy] Support full list of bfd targets that lld uses. Summary: This change takes the full list of bfd targets that lld supports (see `ScriptParser.cpp`), including generic handling for `*-freebsd` targets (which uses the same settings but with a FreeBSD OSABI). In particular this adds mips support for `--output-target` (but not yet via `--binary-architecture`). lld and llvm-objcopy use their own different custom data structures, so I'd prefer to check this in as-is (add support directly in llvm-objcopy, including all the test coverage) and do a separate NFC patch(s) that consolidate the two by putting this mapping into libobject. See [[ https://bugs.llvm.org/show_bug.cgi?id=41462 | PR41462 ]]. Reviewers: jhenderson, jakehehrlich, espindola, alexshap, arichardson Reviewed By: arichardson Subscribers: fedor.sergeev, emaste, sdardis, krytarowski, atanasyan, llvm-commits, MaskRay, arichardson Tags: #llvm Differential Revision: https://reviews.llvm.org/D60773
  480. [CVP] processOverflowIntrinsic(): don't crash if constant-holding happened As reported by Mikael Holmén in post-commit review in https://reviews.llvm.org/D60791#1469765
  481. [DWARF] Pass ReferenceToDIEOffsets elements by reference
  482. Fixed error message printing in write_cmake_config.py Summary: Previously, write_cmake_config.py would raise an error while printing the error, because `leftovers` in "'\n'.join(leftovers)" is a tuple. Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60766
  483. [X86] Autogenerate complete checks. NFC
  484. [X86] In CopyToFromAsymmetricReg, use VR128 instead of FR32 instructions for GR32<->XMM register copies. We have two versions of some instructions, VR128 versions and FR32 versions that are marked as CodeGenOnly. This change switches to using the VR128 versions for these copies. It's after register allocation so the class size no longer matters. This matches how GR64 works.
  485. [MCA] Moved the bottleneck analysis to its own file. NFCI
  486. Revert "Add basic loop fusion pass." Per request. This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda.
  487. Revert "Temporarily Revert "Add basic loop fusion pass."" The reversion apparently deleted the test/Transforms directory. Will be re-reverting again.
  488. Remove the run-slp-after-loop-vectorization option. It's been on by default for 4 years and cleans up the pass hierarchy.
  489. Temporarily Revert "Add basic loop fusion pass." As it's causing some bot failures (and per request from kbarton). This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda.
  490. Add basic loop fusion pass. This patch adds a basic loop fusion pass. It will fuse loops that conform to the following 4 conditions: 1. Adjacent (no code between them) 2. Control flow equivalent (if one loop executes, the other loop executes) 3. Identical bounds (both loops iterate the same number of iterations) 4. No negative distance dependencies between the loop bodies. The pass does not make any changes to the IR to create opportunities for fusion. Instead, it checks if the necessary conditions are met and if so it fuses two loops together. The pass has not been added to the pass pipeline yet, and thus is not enabled by default. It can be run stand alone using the -loop-fusion option. Phabricator: https://reviews.llvm.org/D55851
  491. [ADT] llvm::bsearch, binary search for mere mortals Summary: Add to STLExtras a binary search function with a simple mental model: You provide a range and a predicate which is true above a certain point. bsearch() tells you that point. Overloads are provided for integers, iterators, and containers. This is more suitable than std:: alternatives in many cases: - std::binary_search only indicates presence/absence - upper_bound/lower_bound give you the opportunity to pick the wrong one - all of the options have confusing names and definitions when your predicate doesn't have simple "less than" semantics - all of the options require iterators - we plumb around a useless `value` parameter that should be a lambda capture The API is inspired by Go's standard library, but we add an extra parameter as well as some overloads and templates to show how clever C++ is. Reviewers: ilya-biryukov, gribozavr Subscribers: dexonsmith, kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60779
  492. [x86] adjust LEA tests for better coverage; NFC The scale can 1, 2, or 3.
  493. [LLVM-C] Add Accessors For Global Variable Metadata Properties Summary: Metadata for a global variable is really a (GlobalVariable, Expression) tuple. Allow access to these, then allow retrieving the file, scope, and line for a DIVariable, whether global or local. This should be the last of the accessors required for uniform access to location and file information metadata. Reviewers: jberdine, whitequark, deadalnix Reviewed By: jberdine, whitequark Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60725
  494. Fix a typo in comments. [NFC]
  495. [NVPTXAsmPrinter] clean up dead code. NFC Summary: The printOperand function takes a default parameter, for which there are zero call sites that explicitly pass such a parameter. As such, there is no case to support. This means that the method printVecModifiedImmediate is purly dead code, and can be removed. The eventual goal for some of these AsmPrinter refactoring is to have printOperand be a virtual method; making it easier to print operands from the base class for more generic Asm printing. It will help if all printOperand methods have the same function signature (ie. no Modifier argument when not needed). Reviewers: echristo, tra Reviewed By: echristo Subscribers: jholewinski, hiraditya, llvm-commits, craig.topper, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D60727
  496. [TargetLowering] Rename preferShiftsToClearExtremeBits and shouldFoldShiftPairToMask (PR41359) As discussed on PR41359, this patch renames the pair of shift-mask target feature functions to make their purposes more obvious. shouldFoldShiftPairToMask -> shouldFoldConstantShiftPairToMask preferShiftsToClearExtremeBits -> shouldFoldMaskToVariableShiftPair
  497. [EarlyCSE] detect equivalence of selects with inverse conditions and commuted operands (PR41101) This is 1 of the problems discussed in the post-commit thread for: rL355741 / http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190311/635516.html and filed as: https://bugs.llvm.org/show_bug.cgi?id=41101 Instcombine tries to canonicalize some of these cases (and there's room for improvement there independently of this patch), but it can't always do that because of extra uses. So we need to recognize these commuted operand patterns here in EarlyCSE. This is similar to how we detect commuted compares and commuted min/max/abs. Differential Revision: https://reviews.llvm.org/D60723
  498. Time profiler: optimize json output time Summary: Use llvm::json::Array.reserve() to optimize json output time. Here is motivation: https://reviews.llvm.org/D60609#1468941. In short: for the json array with ~32K entries, pushing back each entry takes ~4% of whole time compared to the method of preliminary memory reservation: (3995-3845)/3995 = 3.75%. Reviewers: lebedev.ri Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60792
  499. [CVP] Simplify umulo and smulo that cannot overflow If a umul.with.overflow or smul.with.overflow operation cannot overflow, simplify it to a simple mul nuw / mul nsw. After the refactoring in D60668 this is just a matter of removing an explicit check against multiplications. Differential Revision: https://reviews.llvm.org/D60791
  500. [Support][JSON] Add reserve() to json Array Summary: Space reservation increases json lib performance for the arrays with large number of entries. Here is the example and discussion: https://reviews.llvm.org/D60609#1468941 Reviewers: lebedev.ri, sammccall Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60788
  501. [SLP] Refactoring of the operand reordering code. This is a refactoring patch which should have all the functionality of the current code. Its goal is twofold: i. Cleanup and simplify the reordering code, and ii. Generalize reordering so that it will work for an arbitrary number of operands, not just 2. This is the second patch in a series of patches that will enable operand reordering across chains of operations. An example of this was presented in EuroLLVM'18 https://www.youtube.com/watch?v=gIEn34LvyNo . Committed on behalf of @vporpo (Vasileios Porpodas) Differential Revision: https://reviews.llvm.org/D59973
  502. [CVP] Add tests for non-overflowing mulo; NFC Should be simplified to simple mul.
  503. [X86][AVX] X86ISD::PERMV/PERMV3 node types can never fold index ops Improves codegen demonstrated by D60512 - instructions represented by X86ISD::PERMV/PERMV3 can never memory fold the operand used for their index register. This patch updates the 'isUseOfShuffle' helper into the more capable 'isFoldableUseOfShuffle' that recognises that the op is used for a X86ISD::PERMV/PERMV3 index mask and can't be folded - allowing us to use broadcast/subvector-broadcast ops to reduce the size of the mask constant pool data. Differential Revision: https://reviews.llvm.org/D60562
  504. [InstCombine] Prune fshl/fshr with masked operands If a constant shift amount is used, then only some of the LHS/RHS operand bits are demanded and we may be able to simplify based on that. InstCombineSimplifyDemanded already had the necessary support for that, we just weren't calling it with fshl/fshr as root. In particular, this allows us to relax some masked funnel shifts into simple shifts, as shown in the tests. Patch by Shawn Landden. Differential Revision: https://reviews.llvm.org/D60660
  505. [InstCombine] Add tests for fshl/fshr with masked operands; NFC Baseline tests for D60660. Patch by Shawn Landden. Differential Revision: https://reviews.llvm.org/D60688
  506. [x86] add more tests for LEA formation; NFC Promoting the shift to the wider type should allow LEA.
  507. [IR] Add WithOverflowInst class This adds a WithOverflowInst class with a few helper methods to get the underlying binop, signedness and nowrap type and makes use of it where sensible. There will be two more uses in D60650/D60656. The refactorings are all NFC, though I left some TODOs where things could be improved. In particular we have two places where add/sub are handled but mul isn't. Differential Revision: https://reviews.llvm.org/D60668
  508. [Tests] Add branch_weights to latches so that test is not effected by future profitability patch to LoopPredication
  509. [Hexagon] Remove indeterministic traversal order Patch by Sergei Larin.
  510. [llvm-objdump] Test tabs in disassemble-align.s with a more visible character Summary: Apply rupprecht's suggestion in D60376 Reviewers: rupprecht Reviewed By: rupprecht Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60777
  511. [DAGCombiner] Add missing flag to addressing mode check The checks in `canFoldInAddressingMode` tested for addressing modes that have a base register but didn't set the `HasBaseReg` flag to true (it's false by default). This patch fixes that. Although the omission of the flag was technically incorrect it had no known observable impact, so no tests were changed by this patch. Differential Revision: https://reviews.llvm.org/D60314
  512. [OCaml] Update api to account for FNeg and CallBr instructions Summary: This diff adds minimal support for the recent FNeg and CallBr instructions to the OCaml bindings. Reviewers: whitequark Reviewed By: whitequark Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60680
  513. [RISCV] Custom lower SHL_PARTS, SRA_PARTS, SRL_PARTS When not optimizing for minimum size (-Oz) we custom lower wide shifts (SHL_PARTS, SRA_PARTS, SRL_PARTS) instead of expanding to a libcall. Differential Revision: https://reviews.llvm.org/D59477
  514. [SystemZ] Add missing intrinsics to intrinsics-immarg.ll As of r356091, support for the ImmArg intrinsics was added, including a SystemZ test case. However, that test case doesn't actually verify all SystemZ intrinsics with immediate arguments, only a subset. The rest of them actually works correctly, there's just no test for them. This patch add all missing intrinsics.
  515. [llvm][Support] Provide interface to set thread priorities Summary: We have a multi-platform thread priority setting function(last piece landed with D58683), I wanted to make this available to all llvm community, there seem to be other users of such functionality with portability fixmes: lib/Support/CrashRecoveryContext.cpp tools/clang/tools/libclang/CIndex.cpp Reviewers: gribozavr, ioeric Subscribers: krytarowski, jfb, kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59130
  516. llvm-undname: Consistently use "return nullptr" in functions returning pointers
  517. llvm-undname: Fix nullptr deref on invalid structor names in template args Similar to r358421: A StructorIndentifierNode has a Class field which is read when printing it, but if the StructorIndentifierNode appears in a template argument then demangleFullyQualifiedSymbolName() which sets Class isn't called. Since StructorIndentifierNodes are always leaf names, we can just reject them as well. Found by oss-fuzz.
  518. llvm-undname: Tweak arena allocator - Make `allocUnalignedBuffer` look more like `allocArray` and `alloc`. No behavior change. - Change `Head->Used < Head->Capacity` to `Head->Used <= Head->Capacity` in `allocArray` and `alloc`. No intended behavior change, might be a minuscule memory usage improvement. Noticed this since it was the logic used in `allocUnalignedBuffer`. - Don't let `allocArray` alloc too small buffers for names that have more than 512 levels of nesting (in 64-bit builds). Fixes a heap buffer overflow found by oss-fuzz. Differential Revision: https://reviews.llvm.org/D60774
  519. llvm-undname: add a missing CHECK: to a passing test
  520. Fix llvm-undname tests after r358485
  521. gn build: Merge r358422
  522. llvm-undname: Add a -raw-file flag to pass a raw buffer to microsoftDemangle The default handling splits input into lines. Since llvm-microsoft-demangle-fuzzer doesn't do this, oss-fuzz produces inputs that only trigger crashes if the input isn't split into lines. This adds a hidden flag -raw-file which passes file contents to microsoftDemangle() in the same way the fuzzer does, for reproducing oss-fuzz reports. Also change llvm-undname to have a non-0 exit code for invalid symbols. Differential Revision: https://reviews.llvm.org/D60771
  523. Re-commit r357452: SimplifyCFG SinkCommonCodeFromPredecessors: Also sink function calls without used results (PR41259) The original commit caused false positives from AddressSanitizer's use-after-scope checks, which have now been fixed in r358478. > The code was previously checking that candidates for sinking had exactly > one use or were a store instruction (which can't have uses). This meant > we could sink call instructions only if they had a use. > > That limitation seemed a bit arbitrary, so this patch changes it to > "instruction has zero or one use" which seems more natural and removes > the need to special-case stores. > > Differential revision: https://reviews.llvm.org/D59936
  524. Removed CMake cache upgrade code from 2011 Summary: This code was added in r141266 to make a breaking change to CMake, but still be compatible with existing cache files. The cache files from 2011 are irrelevant today in 2019. Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60711
  525. Asan use-after-scope: don't poison allocas if there were untraced lifetime intrinsics in the function (PR41481) If there are any intrinsics that cannot be traced back to an alloca, we might have missed the start of a variable's scope, leading to false error reports if the variable is poisoned at function entry. Instead, if there are some intrinsics that can't be traced, fail safe and don't poison the variables in that function. Differential revision: https://reviews.llvm.org/D60686
  526. Use native llvm JSON library for time profiler output Summary: Replace plain json text output with llvm JSON library wrapper using. Reviewers: takuto.ikuta, lebedev.ri Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60609
  527. [llvm-objdump] Align instructions to a tab stop in disassembly output This relands D60376/rL358405, with the difference: sed 'y/\t/ /' -> tr '\t' ' ' BSD sed doesn't support escape characters for the 'y' command. I didn't use it in rL358405 because it was not listed at https://llvm.org/docs/GettingStarted.html#software but it should be available. Original description: In GNU objdump, -w/--wide aligns instructions in the disassembly output. This patch does the same to llvm-objdump. However, we always use the wide format (-w/--wide is ignored), because the narrow format (instructions are misaligned) is probably not very useful. In llvm-readobj, we made a similar decision: always use the wide format, accept but ignore -W/--wide. To save some columns, we change the tab before hex bytes (controlled by --[no-]show-raw-insn) to a space.
  528. [llvm-objdump] Simplify PrintHelpMessage() logic This relands rL358418. It missed one test that should also use -macho Note, all the other -private-header -exports-trie tests are used together with -macho.
  529. [CodeExtractor] Add a few debug lines to understand why a region is not extracted The CodeExtractor is not smart enough to compute which basic block is the entry of a region. Instead it relies on the order of the list of basic blocks that is handed to it and assumes that the entry is the first block in the list. Without the additional debug information, it is hard to understand why a valid region does not get extracted, because we would miss that the order of in the list just doesn't match what the CodeExtractor wants. NFC
  530. Remove some more unused headers from MachineFunction.h and friends. Most of these headers are still included via transitive includes and so won't likely show any problems or improvements in incremental rebuild time. Differential Revision: https://reviews.llvm.org/D60741
  531. Reapply [Support] Fix recursive response file expansion guard The test in the dependent revision has been fixed for Windows. Original commit message: Response file expansion limits the amount of expansion to prevent potential infinite recursion. However, the current logic assumes that any argument beginning with @ is a response file, which is not true for e.g. `-Xlinker -rpath -Xlinker @executable_path/../lib` on Darwin. Having too many of these non-response file arguments beginning with @ prevents actual response files from being expanded. Instead, limit based on the number of successful response file expansions, which should still prevent infinite recursion but also avoid false positives. Differential Revision: https://reviews.llvm.org/D60631 llvm-svn: 358452
  532. Reapply [Support] Add a test for recursive response file expansion Use the appropriate tokenizer to fix the test on Windows. Original commit message: I'm going to be modifying the logic to avoid infinitely recursing on self-referential response files, so add a unit test to verify the expected behavior. Differential Revision: https://reviews.llvm.org/D60630 llvm-svn: 358451
  533. Revert [Support] Add a test for recursive response file expansion This reverts r358451 (git commit c8497467edc5766ae81ffbde58159f8c6af50803) The test breaks a Windows buildbot: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/17016/steps/test-check-all/logs/stdio
  534. Revert [Support] Fix recursive response file expansion guard This reverts r358452 (git commit c8df4fb9c3865eac52a99602c26bbc070098c3d4) A dependent commit breaks the Windows buildbots.
  535. Revert r358405: "[llvm-objdump] Align instructions to a tab stop in disassembly output" The test fails on darwin due to a sed error: sed: 1: "y/\t/ /": transform strings are not the same length
  536. [AArch64][GlobalISel] Don't do extending loads combine for non-pow-2 types. Since non-pow-2 types are going to get split up into multiple loads anyway, don't do the [SZ]EXTLOAD combine for those and save us trouble later in legalization.
  537. [LSR] Rewrite misses some fixup locations if it splits critical edge If LSR split critical edge during rewriting phi operands and phi node has other pending fixup operands, we need to update those pending fixups. Otherwise formulae will not be implemented completely and some instructions will not be eliminated. llvm.org/PR41445 Differential Revision: https://reviews.llvm.org/D60645 Patch by: Denis Bakhvalov <denis.bakhvalov@intel.com>
  538. Only use argv[0] as the main executable name if it exists. Under some environments, argv[0] doesn't hold a valid file name, but sys::fs::getMainExecutable will find the main executable properly. This patch tweaks the logic to fall back to sys::fs::getMainExecutable in more situations. Differential Revision: https://reviews.llvm.org/D60730
  539. [EarlyCSE] add more tests for double-negated select condition; NFC
  540. [Support] Fix recursive response file expansion guard Response file expansion limits the amount of expansion to prevent potential infinite recursion. However, the current logic assumes that any argument beginning with @ is a response file, which is not true for e.g. `-Xlinker -rpath -Xlinker @executable_path/../lib` on Darwin. Having too many of these non-response file arguments beginning with @ prevents actual response files from being expanded. Instead, limit based on the number of successful response file expansions, which should still prevent infinite recursion but also avoid false positives. Differential Revision: https://reviews.llvm.org/D60631
  541. [Support] Add a test for recursive response file expansion I'm going to be modifying the logic to avoid infinitely recursing on self-referential response files, so add a unit test to verify the expected behavior. Differential Revision: https://reviews.llvm.org/D60630
  542. [X86] Limit the 'x' inline assembly constraint to zmm0-15 when used for a 512 type. The 'v' constraint is used to select zmm0-31. This makes 512 bit consistent with 128/256-bit.a
  543. [X86] Fix a stack folding test to have a full xmm2-31 clobber list instead of stopping at xmm15. Add an additional dependency to keep instruction below inline asm block.
  544. Time profiler: small fixes and optimizations Summary: Fixes from Roman's review here: https://reviews.llvm.org/D58675#1465336 Reviewers: lebedev.ri Subscribers: hiraditya, mgrang, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D60663
  545. AMDGPU: Fix unreachable when counting register usage of SGPR96
  546. AMDGPU: Fix printed format of SReg_96 These are artificial, so I think this should only come up with inline asm comments.
  547. [EarlyCSE] add test for select condition double-negation; NFC
  548. Revert r358418: "[llvm-objdump] Simplify PrintHelpMessage() logic" This reverts commit r358418 as it broke `test/Object/objdump-export-list` on Darwin.
  549. [Tests] Add a few more tests for LoopPredication w/invariant loads Making sure to cover an important legality cornercase.
  550. [X86] Block i32/i64 for 'k' and 'Yk' in getRegForInlineAsmConstraint without avx512bw. 32 and 64 bit k-registers require avx512bw. If we don't block this properly, it leads to a crash.
  551. [LoopPred] Stop passing around builders [NFC] This is a preparatory patch for D60093. This patch itself is NFC, but while preparing this I noticed and committed a small hoisting change in rL358419. The basic structure of the new scheme is that we pass around the guard ("the using instruction"), and select an optimal insert point by examining operands at each construction point. This seems conceptually a bit cleaner to start with as it isolates the knowledge about insertion safety at the actual insertion point. Note that the non-hoisting path is not actually used at the moment. That's not exercised until D60093 is rebased on this one. Differential Revision: https://reviews.llvm.org/D60718
  552. [x86] update test checks; NFC
  553. [DEBUGINFO] Prevent Instcombine from dropping debuginfo when removing zexts Zexts can be treated like no-op casts when it comes to assessing whether their removal affects debug info. Reviewer: aprantl Differential Revision: https://reviews.llvm.org/D60641
  554. Add explicit dependency to MCDwarf.h in ARC backend.
  555. Fix header guard typo and build error.
  556. [CommandLineParser] Add DefaultOption flag Summary: Add DefaultOption flag to CommandLineParser which provides a default option or alias, but allows users to override it for some other purpose as needed. Also, add `-h` as a default alias to `-help`, which can be seamlessly overridden by applications like llvm-objdump and llvm-readobj which use `-h` as an alias for other options. (relanding after revert, r358414) Added DefaultOptions.clear() to reset(). Reviewers: alexfh, klimek Reviewed By: klimek Subscribers: kristina, MaskRay, mehdi_amini, inglorion, dexonsmith, hiraditya, llvm-commits, jhenderson, arphaman, cfe-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D59746
  557. [X86] Restore the pavg intrinsics. The pattern we replaced these with may be too hard to match as demonstrated by PR41496 and PR41316. This patch restores the intrinsics and then we can start focusing on the optimizing the intrinsics. I've mostly reverted the original patch that removed them. Though I modified the avx512 intrinsics to not have masking built in. Differential Revision: https://reviews.llvm.org/D60674
  558. Add slbfee instruction.
  559. [PGO] Profile guided code size optimization. Summary: Enable some of the existing size optimizations for cold code under PGO. A ~5% code size saving in big internal app under PGO. The way it gets BFI/PSI is discussed in the RFC thread http://lists.llvm.org/pipermail/llvm-dev/2019-March/130894.html Note it doesn't currently touch loop passes. Reviewers: davidxl, eraman Reviewed By: eraman Subscribers: mgorny, javed.absar, smeenai, mehdi_amini, eraman, zzheng, steven_wu, dexonsmith, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59514
  560. llvm-undname: Fix nullptr deref on invalid conversion operator names in template args A ConversionOperatorIdentifierNode has a TargetType which is read when printing it, but if the ConversionOperatorIdentifierNode appears in a template argument there's nothing that can provide the TargetType. Normally the COIN is a symbol (leaf) name and takes its TargetType from the symbol's type, but in a template argument context the COIN can only be either a non-leaf name piece or a type, and must hence be invalid. Similar to the COIN check in demangleDeclarator(). Found by oss-fuzz.
  561. [EarlyCSE] add tests for selects with commuted operands (PR41101); NFC
  562. [LoopPred] Hoist and of predicated checks where legal If we have multiple range checks which can be predicated, hoist the and of the results outside the loop. This minorly cleans up the resulting IR, but the main motivation is as a building block for D60093.
  563. [llvm-objdump] Simplify PrintHelpMessage() logic
  564. [llvm-objdump] Wrap things in namespace llvm
  565. [llvm-objdump] Delete unused forward declarations
  566. [llvm-objdump] Reorganize cl::opt variables and move Mach-O specifics to MachODump.cpp
  567. Revert r358337: "[CommandLineParser] Add DefaultOption flag" The change causes test failures under asan. Reverting to unbreak our integrate.
  568. [EarlyCSE] regenerate test checks; NFC
  569. [llvm-objdump] Align instructions to a tab stop in disassembly output Summary: In GNU objdump, -w/--wide aligns instructions in the disassembly output. This patch does the same to llvm-objdump. However, we always use the wide format (-w/--wide is ignored), because the narrow format (instructions are misaligned) is probably not very useful. In llvm-readobj, we made a similar decision: always use the wide format, accept but ignore -W/--wide. To save some columns, we change the tab before hex bytes (controlled by --[no-]show-raw-insn) to a space. Reviewers: rupprecht, jhenderson, grimar Reviewed By: jhenderson Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60376
  570. [InstCombine] canonicalize fdiv after fmul if reassociation is allowed (X / Y) * Z --> (X * Z) / Y This can allow other optimizations/reassociations as shown in the test diffs.
  571. DAG: propagate ConsecutiveRegs flags to returns too. Arguments already have a flag to inform backends when they have been split up. The AArch64 arm64_32 ABI makes use of these on return types too, so that code emitted for armv7k can be ABI-compliant. There should be no CodeGen changes yet, just making more information available.
  572. DAG: propagate whether an arg is a pointer for CallingConv decisions. The arm64_32 ABI specifies that pointers (despite being 32-bits) should be zero-extended to 64-bits when passed in registers for efficiency reasons. This means that the SelectionDAG needs to be able to tell the backend that an argument was originally a pointer, which is implmented here. Additionally, some memory intrinsics need to be declared as taking an i8* instead of an iPTR. There should be no CodeGen change yet, but it will be triggered when AArch64 backend support for ILP32 is added.
  573. gn build: Merge r358390
  574. [llvm-readelf] Correctly dump symbols whose section id is SHN_XINDEX Differential revision: https://reviews.llvm.org/D60614
  575. [llvm-readobj] Reapply: Improve error message for --string-dump This is a resubmission of a previous patch that caused test failures, with the fixes for the relevant tests included. Fixes bug 40630: https://bugs.llvm.org/show_bug.cgi?id=40630 This patch changes the error message when the section specified by --string-dump cannot be found by including the name of the section in the error message and changing the prefix text to not imply that the file itself was invalid. As part of this change some uses of std::error_code have been replaced with the llvm Error class to better encapsulate the error info (rather than passing File strings around), and the WithColor class replaces string literal error prefixes.
  576. [AMDGPU] Fixed incorrect test in vcnd/vcmp optimization This fixes a test I introduced in change D59191 (that added src0 and src1 modifiers to the v_cndmask instruction for disassembly purposes). Spotted by David Binderman in bug 41488. Differential Revision: https://reviews.llvm.org/D60652 Change-Id: I6ac95e66cd84e812ed3359ad57bcd0e13198ba0c
  577. [Docs] Switch a code block from LLVM to text While I can't replicate this locally, it looks like the buildbots don't recognize the IR block in r358385 l764 as IR. Downgrade it to being just text while I look into it. http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/30132
  578. FileCheck [1/12]: Move variable table in new object Summary: This patch is part of a patch series to add support for FileCheck numeric expressions. This specific patch adds a new class to hold pattern matching global state. The table holding the values of FileCheck variable constitutes some sort of global state for the matching phase, yet is passed as parameters of all functions using it. This commit create a new FileCheckPatternContext class pointed at from FileCheckPattern. While it increases the line count, it separates local data from global state. Later commits build on that to add numeric expression global state to that class. Copyright: - Linaro (changes up to diff 183612 of revision D55940) - GraphCore (changes in later versions of revision D55940 and in new revision created off D55940) Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield Tags: #llvm Differential Revision: https://reviews.llvm.org/D60381
  579. [TableGen] Include schedule model name in diagnostic. If you have more than one schedule model in your TableGen target definitions, then the diagnostic "No schedule information for instruction 'foo'" is rather unhelpful, because it doesn't tell you _which_ schedule model is missing the necessary information (or, as it might be, missing the UnsupportedFeatures definition that would stop it thinking it needed it). Extended the message to include the name of the schedule model that it's complaining about. Reviewers: nhaehnle, hfinkel, javedabsar, efriedma, javed.absar Reviewed By: javed.absar Subscribers: javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60559
  580. [Docs] Correct some indentation muppetry that trips buildbots
  581. [DWARF] Fix DWARFVerifier::DieRangeInfo::contains It didn't handle empty LHS correctly. If two ranges of LHS were contiguous and jointly contained one range of RHS, it could also be incorrect. DWARFAddressRange::contains can be removed and its tests can be merged into DWARFVerifier::DieRangeInfo::contains
  582. [DebugInfo][Docs] Document variable location metadata transformations This patch adds documentation explaining how variable location information is compiled from the IR representation down to the end of the codegen pipeline, but avoiding discussion of file formats and encoding. This should make it clearer how the dbg.value / dbg.declare etc intrinsics are transformed and arranged into DBG_VALUE instructions, and their meaning. Differential Revision: https://reviews.llvm.org/D59790
  583. Codegen: Fixed perf branch_weights in couple of tests. NFC. This is need to pass future checks of perf branch_weights metadata.
  584. Revert "[DWARF] Delete redundant check in DWARFAddressRange::intersects" This reverts rL358377. It isn't redundant, though the semantic seems weird.
  585. [Transforms][ASan] Move findAllocaForValue() to Utils/Local.cpp. NFC Summary: Factor out findAllocaForValue() from ASan so that we can use it in MSan to handle lifetime intrinsics. Reviewers: eugenis, pcc Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60615
  586. [NewPM] Add Option handling for SimplifyCFG This patch enables passing options to SimplifyCFGPass via the passes pipeline. Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe Reviewed By: fedor.sergeev Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D60675
  587. [DWARF] Delete redundant check in DWARFAddressRange::intersects
  588. [DWARF] Fix DWARFVerifier::DieRangeInfo::intersects It was incorrect if RHS had more than 1 ranges and one of the ranges interacted with *this
  589. [DWARF] Make DWARFDebugLine::ParsingState::RowNumber a local variable
  590. [SelectionDAG] Use KnownBits::computeForAddSub/computeForAddCarry Summary: Use KnownBits::computeForAddSub/computeForAddCarry in SelectionDAG::computeKnownBits when doing value tracking for addition/subtraction. This should improve the precision of the known bits, as we only used to make a simple estimate of known zeroes. The KnownBits support functions are also able to deduce bits that are known to be one in the result. Reviewers: spatel, RKSimon, nikic, lebedev.ri Reviewed By: nikic Subscribers: nikic, javed.absar, lebedev.ri, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60460
  591. [X86] Regenerate checks for domain-reassignment.mir Apparently there are some stray IMPLICIT_DEF operations that weren't in the checks. Not sure if they've always been there or something changed at some point.
  592. [Sparc] Fix typo. NFC.
  593. [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only. Other opcodes shouldn't be CSE'd until we can be sure debug info quality won't be degraded. This change also improves the IRTranslator so that in most places, but not all, it creates constants using the MIRBuilder directly instead of first creating a new destination vreg and then creating a constant. By doing this, the buildConstant() method can just return the vreg of an existing G_CONSTANT instead of having to create a COPY from it. I measured a 0.2% improvement in compile time and a 0.9% improvement in code size at -O0 ARM64. Compile time: Program base cse diff test-suite...ark/tramp3d-v4/tramp3d-v4.test 9.04 9.12 0.8% test-suite...Mark/mafft/pairlocalalign.test 2.68 2.66 -0.7% test-suite...-typeset/consumer-typeset.test 5.53 5.51 -0.4% test-suite :: CTMark/lencod/lencod.test 5.30 5.28 -0.3% test-suite :: CTMark/Bullet/bullet.test 25.82 25.76 -0.2% test-suite...:: CTMark/ClamAV/clamscan.test 6.92 6.90 -0.2% test-suite...TMark/7zip/7zip-benchmark.test 34.24 34.17 -0.2% test-suite :: CTMark/SPASS/SPASS.test 6.25 6.24 -0.1% test-suite...:: CTMark/sqlite3/sqlite3.test 1.66 1.66 -0.1% test-suite :: CTMark/kimwitu++/kc.test 13.61 13.60 -0.0% Geomean difference -0.2% Code size: Program base cse diff test-suite...-typeset/consumer-typeset.test 1315632 1266480 -3.7% test-suite...:: CTMark/ClamAV/clamscan.test 1313892 1297508 -1.2% test-suite :: CTMark/lencod/lencod.test 1439504 1423112 -1.1% test-suite...TMark/7zip/7zip-benchmark.test 2936980 2904172 -1.1% test-suite :: CTMark/Bullet/bullet.test 3478276 3445460 -0.9% test-suite...ark/tramp3d-v4/tramp3d-v4.test 8082868 8033492 -0.6% test-suite :: CTMark/kimwitu++/kc.test 3870380 3853972 -0.4% test-suite :: CTMark/SPASS/SPASS.test 1434904 1434896 -0.0% test-suite...Mark/mafft/pairlocalalign.test 764528 764528 0.0% test-suite...:: CTMark/sqlite3/sqlite3.test 782092 782092 0.0% Geomean difference -0.9% Differential Revision: https://reviews.llvm.org/D60580
  594. [GlobalISel] Introduce a CSEConfigBase class to allow targets to define their own CSE configs. Because CodeGen can't depend on GlobalISel, we need a way to encapsulate the CSE configs that can be passed between TargetPassConfig and the targets' custom pass configs. This CSEConfigBase allows targets to create custom CSE configs which is then used by the GISel passes for the CSEMIRBuilder. This support will be used in a follow up commit to allow constant-only CSE for -O0 compiles in D60580.
  595. llvm-undname: Fix oss-fuzz-foudn crash-on-invalid with incomplete special table nodes
  596. gn build: Merge r358297
  597. gn build: Merge r358243
  598. gn build: Merge r358272
Revision 359494 by phosek:
[gn] Use label_name rather than target_output_name for objects

Multiple targets in the same output directory can use the same
target_output_name. The typical example of that is having a shared
and a static library of the same, e.g. libc++.so and libc++.a.
When that's the case, the object files produced for each target
are going to conflict. Using the label_name avoids this conflict
since labels are guaranteed to be unique within a single BUILD.gn
file which corresponds to a single output directory.

Differential Revision: https://reviews.llvm.org/D60329
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/build/toolchain/BUILD.gntrunk/utils/gn/build/toolchain/BUILD.gn
Revision 359493 by rnk:
Fix string UAF in new FileCheck test
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/Support/FileCheckTest.cpptrunk/unittests/Support/FileCheckTest.cpp
Revision 359491 by rksimon:
[X86][SSE] isHorizontalBinOp - add support for target shuffles

Add target shuffle decoding to isHorizontalBinOp as well as ISD::VECTOR_SHUFFLE support.

This does mean we can go through bitcasts so we need to bitcast the extracted args to ensure they are the correct type

Fixes PR39936 and should help with PR39920/PR39921

Differential Revision: https://reviews.llvm.org/D61245
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/haddsub.lltrunk/test/CodeGen/X86/haddsub.ll
The file was modified/llvm/trunk/test/CodeGen/X86/phaddsub.lltrunk/test/CodeGen/X86/phaddsub.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v4.lltrunk/test/CodeGen/X86/vector-shuffle-256-v4.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v8.lltrunk/test/CodeGen/X86/vector-shuffle-256-v8.ll
Revision 359488 by rksimon:
[llvm-pdbutil] FunctionDumper::dump(PDBSymbolTypeFunctionArg) - fix null dereference warning

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpptrunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp
Revision 359486 by rksimon:
computePolynomialFromPointer - add missing early-out return for non-pointer types.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/InterleavedLoadCombinePass.cpptrunk/lib/CodeGen/InterleavedLoadCombinePass.cpp
Revision 359485 by spatel:
[InstCombine] reduce code duplication; NFC

Follow-up to:
rL359482

Avoid this potential problem throughout by giving the type a name
and verifying the assumption that both operands are the same type.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpptrunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
Revision 359484 by dhinton:
Fix additional cases of more that two dashes for options in tests.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AArch64/preferred-function-alignment.lltrunk/test/CodeGen/AArch64/preferred-function-alignment.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/thumb_indirect_calls.lltrunk/test/CodeGen/ARM/thumb_indirect_calls.ll
Revision 359483 by rksimon:
Remove duplicate line. NFCI.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Object/MachOObjectFile.cpptrunk/lib/Object/MachOObjectFile.cpp
Revision 359482 by rksimon:
[InstCombine] visitFCmpInst - appease copy+paste pattern warning. NFCI.

PVS Studio's copy+paste recognizer was seeing this as a typo, technically Op0/Op1 in a fcmp should always be the same type, but we might as well avoid the issue.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpptrunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
Revision 359481 by dsanders:
[globalisel] Improve Legalizer debug output

* LegalizeAction should be printed by name rather than number
* Newly created instructions are incomplete at the point the observer first sees
  them. They are therefore recorded in a small vector and printed just before
  the legalizer moves on to another instruction. By this point, the instruction
  must be complete.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.htrunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/Legalizer.cpptrunk/lib/CodeGen/GlobalISel/Legalizer.cpp
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerInfo.cpptrunk/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
Revision 359480 by dhinton:
[CommandLine] Don't allow unlimitted dashes for options. Part 1 or 5

Summary:
Prior to this patch, the CommandLine parser would strip an
unlimitted number of dashes from options.  This patch limits it to
two.

Reviewers: rnk

Reviewed By: rnk

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61229
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/CommandLine.cpptrunk/lib/Support/CommandLine.cpp
The file was modified/llvm/trunk/test/DebugInfo/X86/array.lltrunk/test/DebugInfo/X86/array.ll
The file was modified/llvm/trunk/test/DebugInfo/dwarfdump-64-bit-dwarf.testtrunk/test/DebugInfo/dwarfdump-64-bit-dwarf.test
Revision 359479 by rksimon:
[X86] scaleShuffleMask - avoid potential signed overflow warning.

Use size_t assignment to prevent a bad explicit type conversion warning.

Given the typical size of shuffle masks this was never going to happen, but this at least stops the warning.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.htrunk/lib/Target/X86/X86ISelLowering.h
Revision 359478 by rksimon:
[TextAPI] Fix Symbol::dump which was failing to append the SymbolKind string.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/TextAPI/MachO/Symbol.cpptrunk/lib/TextAPI/MachO/Symbol.cpp
Revision 359477 by rksimon:
[llvm-mca][x86] Fix MMX PMOVMSKB test

This is defined as part of SSE1, XMM PMOVMSKB doesn't appear until SSE2
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.strunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.strunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.strunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.strunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.strunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.strunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.strunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.strunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.strunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.strunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.strunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s
Revision 359476 by bjope:
[DAG] Refactor DAGCombiner::ReassociateOps

Summary:
Extract the logic for doing reassociations
from DAGCombiner::reassociateOps into a helper
function DAGCombiner::reassociateOpsCommutative,
and use that helper to trigger reassociation
on the original operand order, or the commuted
operand order.

Codegen is not identical since the operand order will
be different when doing the reassociations for the
commuted case. That causes some unfortunate churn in
some test cases. Apart from that this should be NFC.

Reviewers: spatel, craig.topper, tstellar

Reviewed By: spatel

Subscribers: dmgreen, dschuff, jvesely, nhaehnle, javed.absar, sbc100, jgravelle-google, hiraditya, aheejin, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61199
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-addr-type-promotion.lltrunk/test/CodeGen/AArch64/arm64-addr-type-promotion.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/calling-conventions.lltrunk/test/CodeGen/AMDGPU/calling-conventions.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/cvt_f32_ubyte.lltrunk/test/CodeGen/AMDGPU/cvt_f32_ubyte.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/shl_add_constant.lltrunk/test/CodeGen/AMDGPU/shl_add_constant.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/widen-smrd-loads.lltrunk/test/CodeGen/AMDGPU/widen-smrd-loads.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/and-load-combine.lltrunk/test/CodeGen/ARM/and-load-combine.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/load-combine-big-endian.lltrunk/test/CodeGen/ARM/load-combine-big-endian.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/load-combine.lltrunk/test/CodeGen/ARM/load-combine.ll
The file was modified/llvm/trunk/test/CodeGen/SystemZ/buildvector-00.lltrunk/test/CodeGen/SystemZ/buildvector-00.ll
The file was modified/llvm/trunk/test/CodeGen/Thumb2/constant-hoisting.lltrunk/test/CodeGen/Thumb2/constant-hoisting.ll
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/address-offsets.lltrunk/test/CodeGen/WebAssembly/address-offsets.ll
The file was modified/llvm/trunk/test/CodeGen/X86/add-ext.lltrunk/test/CodeGen/X86/add-ext.ll
The file was modified/llvm/trunk/test/CodeGen/X86/combine-multiplies.lltrunk/test/CodeGen/X86/combine-multiplies.ll
The file was modified/llvm/trunk/test/CodeGen/X86/load-combine.lltrunk/test/CodeGen/X86/load-combine.ll
The file was modified/llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.lltrunk/test/CodeGen/X86/lsr-loop-exit-cond.ll
The file was modified/llvm/trunk/test/CodeGen/X86/merge_store.lltrunk/test/CodeGen/X86/merge_store.ll
The file was modified/llvm/trunk/test/CodeGen/X86/sad.lltrunk/test/CodeGen/X86/sad.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-ext-logic.lltrunk/test/CodeGen/X86/vector-ext-logic.ll
Revision 359475 by thopre:
FileCheck [3/12]: Stricter parsing of @LINE expressions

Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch gives earlier and better
diagnostics for the @LINE expressions.

Rather than detect parsing errors at matching time, this commit adds
enhance parsing to detect issues with @LINE expressions at parse time
and diagnose them more accurately.

Copyright:
    - Linaro (changes up to diff 183612 of revision D55940)
    - GraphCore (changes in later versions of revision D55940 and
                 in new revision created off D55940)

Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60383
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/FileCheck.htrunk/include/llvm/Support/FileCheck.h
The file was modified/llvm/trunk/lib/Support/FileCheck.cpptrunk/lib/Support/FileCheck.cpp
The file was modified/llvm/trunk/test/FileCheck/line-count.txttrunk/test/FileCheck/line-count.txt
The file was modified/llvm/trunk/unittests/Support/FileCheckTest.cpptrunk/unittests/Support/FileCheckTest.cpp
Revision 359474 by rksimon:
[TableGen] Fix null pointer dereferencing.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/TableGen/SearchableTableEmitter.cpptrunk/utils/TableGen/SearchableTableEmitter.cpp
Revision 359473 by rksimon:
Avoid "checking a pointer after dereferencing" warning. NFCI.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUInline.cpptrunk/lib/Target/AMDGPU/AMDGPUInline.cpp
Revision 359472 by rksimon:
Move if() to newline to stop ambiguity over whether it should be else if. NFCI.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
Revision 359469 by rksimon:
Fix operator precedence warning. NFCI.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpptrunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
Revision 359467 by rksimon:
Remove superfluous break from switch statement. NFCI.

Reported in https://www.viva64.com/en/b/0629/
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpptrunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
Revision 359464 by qcolombet:
[llvm-extract] Expose the group extraction feature of the BlockExtractor

This patch extends the `-bb` option to be able to use the group
extraction feature from the BlockExtractor.
In particular, `-bb=func:bb` is modified to support a list of basic
blocks per function: `-bb=func:bb1[;bb2...]` that will be extracted
together if at all possible (region must be single entry.)

Differential Revision: https://reviews.llvm.org/D60973
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/tools/llvm-extract/extract-blocks-with-groups.lltrunk/test/tools/llvm-extract/extract-blocks-with-groups.ll
The file was modified/llvm/trunk/tools/llvm-extract/llvm-extract.cpptrunk/tools/llvm-extract/llvm-extract.cpp
Revision 359463 by qcolombet:
[BlockExtractor] Expose a constructor for the group extraction

NFC

Differential Revision: https://reviews.llvm.org/D60971
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/IPO.htrunk/include/llvm/Transforms/IPO.h
The file was modified/llvm/trunk/lib/Transforms/IPO/BlockExtractor.cpptrunk/lib/Transforms/IPO/BlockExtractor.cpp
Revision 359462 by qcolombet:
[BlockExtractor] Change the basic block separator from ',' to ';'

This change aims at making the file format be compatible with the
way LLVM handles command line options.

Differential Revision: https://reviews.llvm.org/D60970
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/BlockExtractor.cpptrunk/lib/Transforms/IPO/BlockExtractor.cpp
The file was modified/llvm/trunk/test/Transforms/BlockExtractor/extract-blocks-with-groups.lltrunk/test/Transforms/BlockExtractor/extract-blocks-with-groups.ll
Revision 359461 by kpn:
Add AVX support to this test.

Requested by Craig Topper and Andrew Kaylor as part of D55897.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/vector-constrained-fp-intrinsics.lltrunk/test/CodeGen/X86/vector-constrained-fp-intrinsics.ll
Revision 359460 by rksimon:
[X86] Remove duplicate string comparison

Fix typo introduced in rL332824 where we simplified the extact string matches for "avx512.mask.permvar.sf.256" and "avx512.mask.permvar.si.256" to a string startswith test for "avx512.mask.permvar."
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/IR/AutoUpgrade.cpptrunk/lib/IR/AutoUpgrade.cpp
Revision 359457 by c-rhodes:
[AArch64][SVE] Asm: add aliases for unpredicated bitwise logical instructions

This patch adds aliases for element sizes .B/.H/.S to the
AND/ORR/EOR/BIC bitwise logical instructions. The assembler now accepts
these instructions with all element sizes up to 64-bit (.D). The
preferred disassembly is .D.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64SVEInstrInfo.tdtrunk/lib/Target/AArch64/AArch64SVEInstrInfo.td
The file was modified/llvm/trunk/lib/Target/AArch64/SVEInstrFormats.tdtrunk/lib/Target/AArch64/SVEInstrFormats.td
The file was modified/llvm/trunk/test/MC/AArch64/SVE/and.strunk/test/MC/AArch64/SVE/and.s
The file was modified/llvm/trunk/test/MC/AArch64/SVE/bic.strunk/test/MC/AArch64/SVE/bic.s
The file was modified/llvm/trunk/test/MC/AArch64/SVE/eor.strunk/test/MC/AArch64/SVE/eor.s
The file was modified/llvm/trunk/test/MC/AArch64/SVE/orr.strunk/test/MC/AArch64/SVE/orr.s
Revision 359454 by rksimon:
[X86][SSE] Add scalar horizontal add/sub tests for non-0/1 element extractions
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/haddsub.lltrunk/test/CodeGen/X86/haddsub.ll
The file was modified/llvm/trunk/test/CodeGen/X86/phaddsub-extract.lltrunk/test/CodeGen/X86/phaddsub-extract.ll
Revision 359447 by thopre:
FileCheck [2/12]: Stricter parsing of -D option

Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch gives earlier and better
diagnostics for the -D option.

Prior to this change, parsing of -D option was very loose: it assumed
that there is an equal sign (which to be fair is now checked by the
FileCheck executable) and that the part on the left of the equal sign
was a valid variable name. This commit adds logic to ensure that this
is the case and gives diagnostic when it is not, making it clear that
the issue came from a command-line option error. This is achieved by
sharing the variable parsing code into a new function ParseVariable.

Copyright:
    - Linaro (changes up to diff 183612 of revision D55940)
    - GraphCore (changes in later versions of revision D55940 and
                 in new revision created off D55940)

Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60382
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/FileCheck.htrunk/include/llvm/Support/FileCheck.h
The file was modified/llvm/trunk/lib/Support/FileCheck.cpptrunk/lib/Support/FileCheck.cpp
The file was modified/llvm/trunk/test/FileCheck/defines.txttrunk/test/FileCheck/defines.txt
The file was modified/llvm/trunk/unittests/Support/FileCheckTest.cpptrunk/unittests/Support/FileCheckTest.cpp
Revision 359446 by yrouban:
[LoopSimplifyCFG] Suppress expensive DomTree verification

This patch makes verification level lower for builds with
inexpensive checks.

Differential Revision: https://reviews.llvm.org/D61055
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpptrunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
Revision 359445 by grimar:
[yaml2obj] - Simplify and reduce the code. NFC.

This inlines 2 single line static methods
and simplifies the code.

It is also possible to remove the `Is64Bit`
variable since it is used only once,
but I am not sure it will be better for readability.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359444 by grimar:
[yaml2obj] - Replace a loop with write_zeros(). NFCI.

This looks better.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359443 by grimar:
[yaml2obj] - Cleanup and simplify the code. NFCI.

The current code has the following problems:
`initSymtabSectionHeader` and `initStrtabSectionHeader` method
names saying us they are going to initialize the section headers.
Though for a few cases sh_flags field is initialized outside of them.
It does not look clean. This patch moves initialization of the
sh_flags inside these methods.

Also, it removes an excessive variable, what together with the above
change hopefully makes the code a bit more readable.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359437 by rksimon:
[X86][SSE] Moved haddps test from phaddsub.ll to haddsub.ll (D61245)

Also merged duplicate PR39921 + PR39936 tests
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/haddsub.lltrunk/test/CodeGen/X86/haddsub.ll
The file was modified/llvm/trunk/test/CodeGen/X86/phaddsub.lltrunk/test/CodeGen/X86/phaddsub.ll
Revision 359435 by rksimon:
[InstCombine][X86] Add PACKSS tests for truncation of sign-extended comparisons
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/InstCombine/X86/x86-pack.lltrunk/test/Transforms/InstCombine/X86/x86-pack.ll
Revision 359433 by dnsampaio:
[ARM] Add bitcast/extract_subvec. of fp16 vectors

Summary:
This patch adds some basic operations for fp16
vectors, such as bitcast from fp16 to i16,
required to perform extract_subvector (also added
here) and extract_element.

Reviewers: SjoerdMeijer, DavidSpickett, t.p.northover, ostannard

Reviewed By: ostannard

Subscribers: javed.absar, kristof.beyls, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60618
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrNEON.tdtrunk/lib/Target/ARM/ARMInstrNEON.td
The file was added/llvm/trunk/test/CodeGen/ARM/big-endian-neon-fp16-bitconv.lltrunk/test/CodeGen/ARM/big-endian-neon-fp16-bitconv.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/fp16-vector-argument.lltrunk/test/CodeGen/ARM/fp16-vector-argument.ll
Revision 359431 by dnsampaio:
[ARM] Add v4f16 and v8f16 types to the CallingConv

Summary:
The Procedure Call Standard for the Arm Architecture
states that float16x4_t and float16x8_t behave just
as uint16x4_t and uint16x8_t for argument passing.
This patch adds the fp16 vectors to the
ARMCallingConv.td file.

Reviewers: miyuki, ostannard

Reviewed By: ostannard

Subscribers: ostannard, javed.absar, kristof.beyls, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60720
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMCallingConv.tdtrunk/lib/Target/ARM/ARMCallingConv.td
The file was added/llvm/trunk/test/CodeGen/ARM/fp16-vector-argument.lltrunk/test/CodeGen/ARM/fp16-vector-argument.ll
Revision 359430 by russell_gallop:
vs integration: Use llvm-lib for librarian

This uses llvm-lib.exe for the librarian instead of Visual Studio
provided lib.exe. Without this it is not possible to create static
libraries with -flto using the plugin.

Original patch by Steven Noonan

This fixes: PR41147

Differential Revision: https://reviews.llvm.org/D61193
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/msbuild/LLVM.Cpp.Common.propstrunk/tools/msbuild/LLVM.Cpp.Common.props
The file was modified/llvm/trunk/tools/msbuild/LLVM.Cpp.Common.targetstrunk/tools/msbuild/LLVM.Cpp.Common.targets
The file was modified/llvm/trunk/tools/msbuild/llvm-general.xmltrunk/tools/msbuild/llvm-general.xml
Revision 359429 by hans:
gn: Fix check-clang build after r359179
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/unittests/Sema/BUILD.gntrunk/utils/gn/secondary/clang/unittests/Sema/BUILD.gn
Revision 359427 by theraven:
Try to use /proc on FreeBSD for getExecutablePath

Currently, clang's libTooling passes this function a fake argv0, which
means that no libTooling tools can find the standard headers on FreeBSD.
With this change, these will now work on any FreeBSD systems that have
procfs mounted.  This isn't the right fix for the libTooling issue, but
it does bring the FreeBSD implementation of getExecutablePath closer to
the Linux and macOS implementations.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/Unix/Path.inctrunk/lib/Support/Unix/Path.inc
Revision 359426 by jmorse:
[DebugInfo] Terminate more location-list ranges at the end of blocks

This patch fixes PR40795, where constant-valued variable locations can
"leak" into blocks placed at higher addresses. The root of this is that
DbgEntityHistoryCalculator terminates all register variable locations at
the end of each block, but not constant-value variable locations.

Fixing this requires constant-valued DBG_VALUE instructions to be
broadcast into all blocks where the variable location remains valid, as
documented in the LiveDebugValues section of SourceLevelDebugging.rst,
and correct termination in DbgEntityHistoryCalculator.

Differential Revision: https://reviews.llvm.org/D59431
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpptrunk/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp
The file was modified/llvm/trunk/lib/CodeGen/LiveDebugValues.cpptrunk/lib/CodeGen/LiveDebugValues.cpp
The file was modified/llvm/trunk/test/DebugInfo/COFF/pieces.lltrunk/test/DebugInfo/COFF/pieces.ll
The file was modified/llvm/trunk/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mirtrunk/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir
The file was modified/llvm/trunk/test/DebugInfo/X86/fission-ranges.lltrunk/test/DebugInfo/X86/fission-ranges.ll
The file was added/llvm/trunk/test/DebugInfo/X86/live-debug-values-constprop.mirtrunk/test/DebugInfo/X86/live-debug-values-constprop.mir
Revision 359425 by maskray:
[DWARF] Fix dump of local/foreign TU lists in .debug_names

Differential Revision: https://reviews.llvm.org/D61241
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpptrunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
The file was added/llvm/trunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.strunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.s
Revision 359422 by maskray:
[DWARF] Delete a redundant check in getFileNameByIndex()
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpptrunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
Revision 359418 by ctopper:
[X86] Remove some intel syntax aliases on (v)cvtpd2(u)dq, (v)cvtpd2ps, (v)cvt(u)qq2ps. Add 'x' and'y' suffix aliases to masked version of the same in att syntax.

The 128/256 bit version of these instructions require an 'x' or 'y' suffix to
disambiguate the memory form in att syntax.

We were allowing the same suffix in intel syntax, but it appears gas does not
do that.

gas does allow the 'x' and 'y' suffix on register and broadcast forms even
though its not needed. We were allowing it on unmasked register form, but not on
masked versions or on masked or unmasked broadcast form.

While there fix some test coverage holes so they can be extended with the 'x'
and 'y' suffix tests.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.tdtrunk/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/lib/Target/X86/X86InstrSSE.tdtrunk/lib/Target/X86/X86InstrSSE.td
The file was modified/llvm/trunk/test/MC/X86/intel-syntax-x86-64-avx.strunk/test/MC/X86/intel-syntax-x86-64-avx.s
The file was modified/llvm/trunk/test/MC/X86/intel-syntax-x86-64-avx512f_vl.strunk/test/MC/X86/intel-syntax-x86-64-avx512f_vl.s
The file was modified/llvm/trunk/test/MC/X86/x86-64-avx512dq_vl.strunk/test/MC/X86/x86-64-avx512dq_vl.s
The file was modified/llvm/trunk/test/MC/X86/x86-64-avx512f_vl.strunk/test/MC/X86/x86-64-avx512f_vl.s
Revision 359417 by maskray:
[llvm-nm] -print-size => --print-size
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-nm/ARM/macho-print-size.testtrunk/test/tools/llvm-nm/ARM/macho-print-size.test
Revision 359416 by maskray:
[llvm-nm] Simplify and fix a buffer overflow

* char SymbolAddrStr[18] can't hold "%" PRIo64 which may need 22 characters.
* Use range-based for
* Delete unnecessary typedef
* format(...).print(Str, sizeof(Str)) + outs() << Str => outs() << format(...)
* Use cascading outs() << .. << ..
* Use iterator_range(Container &&c)
* (A & B) == B => A & B   if B is a power of 2
* replace null sentinel in constants with makeArrayRef
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359414 by nico:
llvm-cvtres: Attempt to make llvm-cvtres/duplicate.test work on big-endian systems
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Object/WindowsResource.cpptrunk/lib/Object/WindowsResource.cpp
Revision 359409 by rksimon:
[X86] Add PR39921 HADD pairwise reduction test and AVX2 test coverage
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/phaddsub.lltrunk/test/CodeGen/X86/phaddsub.ll
Revision 359408 by rksimon:
[X86][AVX] Add fast-hops target for add/fadd reduction tests
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-add-widen.lltrunk/test/CodeGen/X86/vector-reduce-add-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-add.lltrunk/test/CodeGen/X86/vector-reduce-add.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-fadd-fast.lltrunk/test/CodeGen/X86/vector-reduce-fadd-fast.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-fadd.lltrunk/test/CodeGen/X86/vector-reduce-fadd.ll
Revision 359407 by rksimon:
[X86] Add PR39936 HADD Tests
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/phaddsub.lltrunk/test/CodeGen/X86/phaddsub.ll
Revision 359406 by rksimon:
[X86][SSE] combineExtractVectorElt - add early-out to return zero/undef for out-of-range extraction indices.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
Revision 359402 by nikic:
[ConstantRange] Add makeExactNoWrapRegion()

I got confused on the terminology, and the change in D60598 was not
correct. I was thinking of "exact" in terms of the result being
non-approximate. However, the relevant distinction here is whether
the result is

* Largest range such that:
   Forall Y in Other: Forall X in Result: X BinOp Y does not wrap.
   (makeGuaranteedNoWrapRegion)
* Smallest range such that:
   Forall Y in Other: Forall X not in Result: X BinOp Y wraps.
   (A hypothetical makeAllowedNoWrapRegion)
* Both. (makeExactNoWrapRegion)

I'm adding a separate makeExactNoWrapRegion method accepting a
single APInt (same as makeExactICmpRegion) and using it in the
places where the guarantee is relevant.

Differential Revision: https://reviews.llvm.org/D60960
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/Analysis/LazyValueInfo.cpptrunk/lib/Analysis/LazyValueInfo.cpp
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 359401 by rksimon:
[X86][AVX] Enabled AVX512F tests and add PR40815 test case
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/oddsubvector.lltrunk/test/CodeGen/X86/oddsubvector.ll
Revision 359400 by rksimon:
[X86][AVX] Combine non-lane crossing binary shuffles using X86ISD::VPERMV3

Some of the combines might be further improved if we lower more shuffles with X86ISD::VPERMV3 directly, instead of waiting to combine the results.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-shuffles/partial_permute.lltrunk/test/CodeGen/X86/avx512-shuffles/partial_permute.ll
The file was modified/llvm/trunk/test/CodeGen/X86/insertelement-ones.lltrunk/test/CodeGen/X86/insertelement-ones.ll
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-strided-with-offset-256.lltrunk/test/CodeGen/X86/shuffle-strided-with-offset-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-256-widen.lltrunk/test/CodeGen/X86/shuffle-vs-trunc-256-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-256.lltrunk/test/CodeGen/X86/shuffle-vs-trunc-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-512-widen.lltrunk/test/CodeGen/X86/shuffle-vs-trunc-512-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-512.lltrunk/test/CodeGen/X86/shuffle-vs-trunc-512.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vec_smulo.lltrunk/test/CodeGen/X86/vec_smulo.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vec_umulo.lltrunk/test/CodeGen/X86/vec_umulo.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-fshl-256.lltrunk/test/CodeGen/X86/vector-fshl-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-fshr-256.lltrunk/test/CodeGen/X86/vector-fshr-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-128-v16.lltrunk/test/CodeGen/X86/vector-shuffle-128-v16.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-128-v4.lltrunk/test/CodeGen/X86/vector-shuffle-128-v4.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-128-v8.lltrunk/test/CodeGen/X86/vector-shuffle-128-v8.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v16.lltrunk/test/CodeGen/X86/vector-shuffle-256-v16.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v32.lltrunk/test/CodeGen/X86/vector-shuffle-256-v32.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v4.lltrunk/test/CodeGen/X86/vector-shuffle-256-v4.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v8.lltrunk/test/CodeGen/X86/vector-shuffle-256-v8.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-512-v64.lltrunk/test/CodeGen/X86/vector-shuffle-512-v64.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-combining-avx512vbmi.lltrunk/test/CodeGen/X86/vector-shuffle-combining-avx512vbmi.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-v1.lltrunk/test/CodeGen/X86/vector-shuffle-v1.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-widen.lltrunk/test/CodeGen/X86/vector-trunc-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc.lltrunk/test/CodeGen/X86/vector-trunc.ll
Revision 359399 by spatel:
[SelectionDAG] include FP min/max variants as binary operators

The x86 test diffs don't look great because of extra move ops,
but FP min/max should clearly be included in the list.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.htrunk/include/llvm/CodeGen/SelectionDAGNodes.h
The file was modified/llvm/trunk/test/CodeGen/X86/extract-fp.lltrunk/test/CodeGen/X86/extract-fp.ll
Revision 359398 by spatel:
[DAGCombiner] try repeated fdiv divisor transform before building estimate

This was originally part of D61028, but it's an independent diff.

If we try the repeated divisor reciprocal transform before producing an estimate sequence,
then we have an opportunity to use scalar fdiv. On x86, the trade-off is 1 divss vs. 5
vector FP ops in the default estimate sequence. On recent chips (Skylake, Ryzen), the
full-precision division is only 3 cycle throughput, so that's probably the better perf
default option and avoids problems from x86's inaccurate estimates.

The last 2 tests show that users still have the option to override the defaults by using
the function attributes for reciprocal estimates, but those patterns are potentially made
faster by converting the vector ops (including ymm ops) to scalar math.

Differential Revision: https://reviews.llvm.org/D61149
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/fdiv-combine-vec.lltrunk/test/CodeGen/X86/fdiv-combine-vec.ll
Revision 359397 by adibiagio:
[MCA] Fix typo in AVX2 gather tests. NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx2.strunk/test/tools/llvm-mca/X86/Broadwell/resources-avx2.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx2.strunk/test/tools/llvm-mca/X86/Generic/resources-avx2.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx2.strunk/test/tools/llvm-mca/X86/Haswell/resources-avx2.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx2.strunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx2.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx2.strunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx2.s
The file was modified/llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx2.strunk/test/tools/llvm-mca/X86/Znver1/resources-avx2.s
Revision 359396 by rksimon:
[X86][SSE] Optimize llvm.experimental.vector.reduce.xor.vXi1 parity reduction (PR38840)

An xor reduction of a bool vector can be optimized to a parity check of the MOVMSK/BITCAST'd integer - if the population count is odd return 1, else return 0.

Differential Revision: https://reviews.llvm.org/D61230
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-xor-bool.lltrunk/test/CodeGen/X86/vector-reduce-xor-bool.ll
Revision 359395 by rksimon:
[X86][AVX] Add AVX512DQ coverage for masked memory ops tests (PR34584)
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/masked_compressstore.lltrunk/test/CodeGen/X86/masked_compressstore.ll
The file was modified/llvm/trunk/test/CodeGen/X86/masked_expandload.lltrunk/test/CodeGen/X86/masked_expandload.ll
The file was modified/llvm/trunk/test/CodeGen/X86/masked_load.lltrunk/test/CodeGen/X86/masked_load.ll
The file was modified/llvm/trunk/test/CodeGen/X86/masked_store.lltrunk/test/CodeGen/X86/masked_store.ll
Revision 359392 by ctopper:
[X86] Remove (V)MOV64toSDrr/m and (V)MOVDI2SSrr/m. Use 128-bit result MOVD/MOVQ and COPY_TO_REGCLASS instead

Summary:
The register form of these instructions are CodeGenOnly instructions that cover
GR32->FR32 and GR64->FR64 bitcasts. There is a similar set of instructions for
the opposite bitcast. Due to the patterns using bitcasts these instructions get
marked as "bitcast" machine instructions as well. The peephole pass is able to
look through these as well as other copies to try to avoid register bank copies.

Because FR32/FR64/VR128 are all coalescable to each other we can end up in a
situation where a GR32->FR32->VR128->FR64->GR64 sequence can be reduced to
GR32->GR64 which the copyPhysReg code can't handle.

To prevent this, this patch removes one set of the 'bitcast' instructions. So
now we can only go GR32->VR128->FR32 or GR64->VR128->FR64. The instruction that
converts from GR32/GR64->VR128 has no special significance to the peephole pass
and won't be looked through.

I guess the other option would be to add support to copyPhysReg to just promote
the GR32->GR64 to a GR64->GR64 copy. The upper bits were basically undefined
anyway. But removing the CodeGenOnly instruction in favor of one that won't be
optimized seemed safer.

I deleted the peephole test because it couldn't be made to work with the bitcast
instructions removed.

The load version of the instructions were unnecessary as the pattern that selects
them contains a bitcasted load which should never happen.

Fixes PR41619.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61223
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.tdtrunk/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/lib/Target/X86/X86InstrFoldTables.cpptrunk/lib/Target/X86/X86InstrFoldTables.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86InstrSSE.tdtrunk/lib/Target/X86/X86InstrSSE.td
The file was modified/llvm/trunk/test/CodeGen/X86/evex-to-vex-compress.mirtrunk/test/CodeGen/X86/evex-to-vex-compress.mir
The file was modified/llvm/trunk/test/CodeGen/X86/fast-isel-fneg.lltrunk/test/CodeGen/X86/fast-isel-fneg.ll
The file was removed/llvm/trunk/test/CodeGen/X86/peephole.mirtrunk/test/CodeGen/X86/peephole.mir
The file was added/llvm/trunk/test/CodeGen/X86/pr41619.lltrunk/test/CodeGen/X86/pr41619.ll
Revision 359391 by rksimon:
Revert rL359389: [X86][SSE] Add support for <64 x i1> bool reduction

Minor generalization of the existing <32 x i1> pre-AVX2 split code.
........
Causing irregular buildbot failures.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-and-bool.lltrunk/test/CodeGen/X86/vector-reduce-and-bool.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-or-bool.lltrunk/test/CodeGen/X86/vector-reduce-or-bool.ll
Revision 359390 by rksimon:
[X86][AVX] Add additional SSE/AVX expandload and compressstore targets
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/masked_compressstore.lltrunk/test/CodeGen/X86/masked_compressstore.ll
The file was modified/llvm/trunk/test/CodeGen/X86/masked_expandload.lltrunk/test/CodeGen/X86/masked_expandload.ll
Revision 359389 by rksimon:
[X86][SSE] Add support for <64 x i1> bool reduction

Minor generalization of the existing <32 x i1> pre-AVX2 split code.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-and-bool.lltrunk/test/CodeGen/X86/vector-reduce-and-bool.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-or-bool.lltrunk/test/CodeGen/X86/vector-reduce-or-bool.ll
Revision 359388 by rksimon:
[X86][AVX] Cleanup and add additional expandload and compressstore tests

sort order by types and add vXi32/vXi16/vXi8 test coverage
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/masked_compressstore.lltrunk/test/CodeGen/X86/masked_compressstore.ll
The file was modified/llvm/trunk/test/CodeGen/X86/masked_expandload.lltrunk/test/CodeGen/X86/masked_expandload.ll
Revision 359386 by rksimon:
[X86][AVX512] Improve vector bool reductions

As predicate masks are legal on AVX512 targets, we avoid MOVMSK in these cases, but we can just bitcast the bool vector to the integer equivalent directly - avoiding expansion of the reduction to a shuffle pattern.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vector-compare-all_of.lltrunk/test/CodeGen/X86/vector-compare-all_of.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-compare-any_of.lltrunk/test/CodeGen/X86/vector-compare-any_of.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-and-bool.lltrunk/test/CodeGen/X86/vector-reduce-and-bool.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-reduce-or-bool.lltrunk/test/CodeGen/X86/vector-reduce-or-bool.ll
Revision 359385 by rksimon:
[X86] Add vector boolean reduction tests (PR38840)

AND/OR/XOR tests for the @llvm.experimental.vector.reduce intrinsics

AND/OR are pretty good (pre-AVX512), XOR (not so common but used for parity reduction) is still pretty bad.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/vector-reduce-and-bool.lltrunk/test/CodeGen/X86/vector-reduce-and-bool.ll
The file was added/llvm/trunk/test/CodeGen/X86/vector-reduce-or-bool.lltrunk/test/CodeGen/X86/vector-reduce-or-bool.ll
The file was added/llvm/trunk/test/CodeGen/X86/vector-reduce-xor-bool.lltrunk/test/CodeGen/X86/vector-reduce-xor-bool.ll
Revision 359384 by Lang Hames:
[lli] Fix a typo in a cl::opt description.

Patch by Wasiher. Thanks Wasiher!

Differential Revision: https://reviews.llvm.org/D61135
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/lli/lli.cpptrunk/tools/lli/lli.cpp
Revision 359383 by maskray:
[llvm-nm][llvm-readelf] Avoid single-dash -long-option in tests
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/DebugInfo/X86/xray-split-dwarf-interaction.lltrunk/test/DebugInfo/X86/xray-split-dwarf-interaction.ll
The file was modified/llvm/trunk/test/DebugInfo/debuglineinfo-path.lltrunk/test/DebugInfo/debuglineinfo-path.ll
The file was modified/llvm/trunk/test/LTO/X86/runtime-library.lltrunk/test/LTO/X86/runtime-library.ll
The file was modified/llvm/trunk/test/MC/Mips/tls-symbols.strunk/test/MC/Mips/tls-symbols.s
The file was modified/llvm/trunk/test/Other/llvm-nm-without-aliases.lltrunk/test/Other/llvm-nm-without-aliases.ll
The file was modified/llvm/trunk/test/ThinLTO/X86/cache-icall.lltrunk/test/ThinLTO/X86/cache-icall.ll
The file was modified/llvm/trunk/test/tools/gold/X86/bcsection.lltrunk/test/tools/gold/X86/bcsection.ll
The file was modified/llvm/trunk/test/tools/llvm-ar/coff-weak.yamltrunk/test/tools/llvm-ar/coff-weak.yaml
The file was modified/llvm/trunk/test/tools/llvm-nm/X86/IRobj.testtrunk/test/tools/llvm-nm/X86/IRobj.test
The file was modified/llvm/trunk/test/tools/llvm-nm/X86/dyldinfo.testtrunk/test/tools/llvm-nm/X86/dyldinfo.test
The file was modified/llvm/trunk/test/tools/llvm-nm/X86/radix.strunk/test/tools/llvm-nm/X86/radix.s
The file was modified/llvm/trunk/test/tools/llvm-readobj/elf-reloc-symbol-with-versioning.testtrunk/test/tools/llvm-readobj/elf-reloc-symbol-with-versioning.test
The file was modified/llvm/trunk/test/tools/llvm-readobj/elf-versioninfo.testtrunk/test/tools/llvm-readobj/elf-versioninfo.test
The file was modified/llvm/trunk/test/tools/lto/opt-level.lltrunk/test/tools/lto/opt-level.ll
The file was modified/llvm/trunk/test/tools/yaml2obj/dynamic-symbols.yamltrunk/test/tools/yaml2obj/dynamic-symbols.yaml
The file was modified/llvm/trunk/test/tools/yaml2obj/symbol-index.yamltrunk/test/tools/yaml2obj/symbol-index.yaml
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359382 by rksimon:
Fix check-prefixes typo
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/oddsubvector.lltrunk/test/CodeGen/X86/oddsubvector.ll
Revision 359381 by maskray:
[DJB] Fix variable case after D61178
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/DJB.cpptrunk/lib/Support/DJB.cpp
Revision 359380 by maskray:
[llvm-nm] Support section type 'u': STB_GNU_UNIQUE
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359379 by rksimon:
[X86][SSE] Add initial test case for subvector insert/extract of illegal types

Suggested by @nikic on D59188
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/oddsubvector.lltrunk/test/CodeGen/X86/oddsubvector.ll
Revision 359378 by rksimon:
[X86][AVX] Merge mask select with shuffles across extract_subvector (PR40332)

Fixes PR40332 in the limited case where we're selecting between a target shuffle and a zero vector.

We can extend this in the future to handle more opcodes and non-zero selections.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-shuffles/partial_permute.lltrunk/test/CodeGen/X86/avx512-shuffles/partial_permute.ll
Revision 359377 by adibiagio:
[MCA] Add field `IsEliminated` to class Instruction. NFCI
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/MCA/Instruction.htrunk/include/llvm/MCA/Instruction.h
The file was modified/llvm/trunk/lib/MCA/Stages/DispatchStage.cpptrunk/lib/MCA/Stages/DispatchStage.cpp
Revision 359376 by atanasyan:
[cmake] Disable a GCC optimization when building LLVM for MIPS

GCC when compiling LLVM for MIPS can introduce a jump to an uninitialized
value when shrink wrapping is enabled. As shrink wrapping is enabled in
GCC at all optimization levels, it must be disabled. This bug exists for
all versions of GCC since 4.9.2.

This partially resolves PR37701 / GCC PR target/86069.

Patch by Simon Dardis.

Differential Revision: https://reviews.llvm.org/D48069
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/cmake/modules/HandleLLVMOptions.cmaketrunk/cmake/modules/HandleLLVMOptions.cmake
Revision 359368 by ctopper:
[X86] Use MOVQ for i64 atomic_stores when SSE2 is enabled

Summary: If we have SSE2 we can use a MOVQ to store 64-bits and avoid falling back to a cmpxchg8b loop. If its a seq_cst store we need to insert an mfence after the store.

Reviewers: spatel, RKSimon, reames, jfb, efriedma

Reviewed By: RKSimon

Subscribers: hiraditya, dexonsmith, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60546
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.htrunk/lib/Target/X86/X86ISelLowering.h
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.tdtrunk/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.tdtrunk/lib/Target/X86/X86InstrFragmentsSIMD.td
The file was modified/llvm/trunk/lib/Target/X86/X86InstrSSE.tdtrunk/lib/Target/X86/X86InstrSSE.td
The file was modified/llvm/trunk/test/CodeGen/X86/atomic-fp.lltrunk/test/CodeGen/X86/atomic-fp.ll
The file was modified/llvm/trunk/test/CodeGen/X86/atomic-load-store-wide.lltrunk/test/CodeGen/X86/atomic-load-store-wide.ll
The file was modified/llvm/trunk/test/CodeGen/X86/atomic-non-integer.lltrunk/test/CodeGen/X86/atomic-non-integer.ll
The file was modified/llvm/trunk/test/CodeGen/X86/atomic6432.lltrunk/test/CodeGen/X86/atomic6432.ll
Revision 359363 by msearles:
Revert "AMDGPU: Split block for si_end_cf"

This reverts commit 7a6ef3004655dd86d722199c471ae78c28e31bb4.

We discovered some internal test failures, so reverting for now.

Differential Revision: https://reviews.llvm.org/D61213
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpptrunk/lib/Target/AMDGPU/SIInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstructions.tdtrunk/lib/Target/AMDGPU/SIInstructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/SILowerControlFlow.cpptrunk/lib/Target/AMDGPU/SILowerControlFlow.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIOptimizeExecMasking.cpptrunk/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpptrunk/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/collapse-endcf.mirtrunk/test/CodeGen/AMDGPU/collapse-endcf.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.ds.ordered.swap.lltrunk/test/CodeGen/AMDGPU/llvm.amdgcn.ds.ordered.swap.ll
Revision 359358 by rampitec:
[AMDGPU] gfx1010 VOPC implementation

Differential Revision: https://reviews.llvm.org/D61208
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpptrunk/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.htrunk/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInsertSkips.cpptrunk/lib/Target/AMDGPU/SIInsertSkips.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.htrunk/lib/Target/AMDGPU/SIInstrInfo.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.tdtrunk/lib/Target/AMDGPU/SIInstrInfo.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP2Instructions.tdtrunk/lib/Target/AMDGPU/VOP2Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOPCInstructions.tdtrunk/lib/Target/AMDGPU/VOPCInstructions.td
The file was modified/llvm/trunk/test/MC/AMDGPU/vop2-err.strunk/test/MC/AMDGPU/vop2-err.s
Revision 359357 by Lang Hames:
[ORC] Add a 'plugin' interface to ObjectLinkingLayer for events/configuration.

ObjectLinkingLayer::Plugin provides event notifications when objects are loaded,
emitted, and removed. It also provides a modifyPassConfig callback that allows
plugins to modify the JITLink pass configuration.

This patch moves eh-frame registration into its own plugin, and teaches
llvm-jitlink to only add that plugin when performing execution runs on
non-Windows platforms. This should allow us to re-enable the test case that was
removed in r359198.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/JITLink/EHFrameSupport.htrunk/include/llvm/ExecutionEngine/JITLink/EHFrameSupport.h
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.htrunk/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpptrunk/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
The file was modified/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.testtrunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.test
The file was modified/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.cpptrunk/tools/llvm-jitlink/llvm-jitlink.cpp
Revision 359351 by paquette:
[GlobalISel][AArch64] Use getConstantVRegValWithLookThrough for extracts

getConstantVRegValWithLookThrough does the same thing as the
getConstantValueForReg function, and has more visibility across GISel. Plus, it
supports looking through G_TRUNC, G_SEXT, and G_ZEXT. So, we get better code
reuse and more functionality for free by using it.

Add some test cases to select-extract-vector-elt.mir to show that we can now
look through those instructions.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpptrunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-extract-vector-elt.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-extract-vector-elt.mir
Revision 359337 by nickdesaulniers:
[AsmPrinter] refactor to support %c w/ GlobalAddress'

Summary:
Targets like ARM, MSP430, PPC, and SystemZ have complex behavior when
printing the address of a MachineOperand::MO_GlobalAddress. Move that
handling into a new overriden method in each base class. A virtual
method was added to the base class for handling the generic case.

Refactors a few subclasses to support the target independent %a, %c, and
%n.

The patch also contains small cleanups for AVRAsmPrinter and
SystemZAsmPrinter.

It seems that NVPTXTargetLowering is possibly missing some logic to
transform GlobalAddressSDNodes for
TargetLowering::LowerAsmOperandForConstraint to handle with "i" extended
inline assembly asm constraints.

Fixes:
- https://bugs.llvm.org/show_bug.cgi?id=41402
- https://github.com/ClangBuiltLinux/linux/issues/449

Reviewers: echristo, void

Reviewed By: void

Subscribers: void, craig.topper, jholewinski, dschuff, jyknight, dylanmckay, sdardis, nemanjai, javed.absar, sbc100, jgravelle-google, eraman, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, jrtc27, atanasyan, jsji, llvm-commits, kees, tpimh, nathanchance, peter.smith, srhines

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60887
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/AsmPrinter.htrunk/include/llvm/CodeGen/AsmPrinter.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpptrunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64AsmPrinter.cpptrunk/lib/Target/AArch64/AArch64AsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpptrunk/lib/Target/ARM/ARMAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.htrunk/lib/Target/ARM/ARMAsmPrinter.h
The file was modified/llvm/trunk/lib/Target/AVR/AVRAsmPrinter.cpptrunk/lib/Target/AVR/AVRAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BPFAsmPrinter.cpptrunk/lib/Target/BPF/BPFAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/Hexagon/HexagonAsmPrinter.cpptrunk/lib/Target/Hexagon/HexagonAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/Lanai/LanaiAsmPrinter.cpptrunk/lib/Target/Lanai/LanaiAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpptrunk/lib/Target/MSP430/MSP430AsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpptrunk/lib/Target/Mips/MipsAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpptrunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpptrunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/Sparc/SparcAsmPrinter.cpptrunk/lib/Target/Sparc/SparcAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/SystemZ/SystemZAsmPrinter.cpptrunk/lib/Target/SystemZ/SystemZAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpptrunk/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpptrunk/lib/Target/X86/X86AsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86AsmPrinter.htrunk/lib/Target/X86/X86AsmPrinter.h
The file was modified/llvm/trunk/lib/Target/XCore/XCoreAsmPrinter.cpptrunk/lib/Target/XCore/XCoreAsmPrinter.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/inlineasm-output-template.lltrunk/test/CodeGen/AArch64/inlineasm-output-template.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/inlineasm-output-template.lltrunk/test/CodeGen/ARM/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/BPF/inlineasm-output-template.lltrunk/test/CodeGen/BPF/inlineasm-output-template.ll
The file was modified/llvm/trunk/test/CodeGen/Hexagon/inlineasm-output-template.lltrunk/test/CodeGen/Hexagon/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/Lanai/inlineasm-output-template.lltrunk/test/CodeGen/Lanai/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/MSP430/inlineasm-output-template.lltrunk/test/CodeGen/MSP430/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/Mips/inlineasm-output-template.lltrunk/test/CodeGen/Mips/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/NVPTX/inlineasm-output-template.lltrunk/test/CodeGen/NVPTX/inlineasm-output-template.ll
The file was modified/llvm/trunk/test/CodeGen/PowerPC/inlineasm-output-template.lltrunk/test/CodeGen/PowerPC/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/SPARC/inlineasm-output-template.lltrunk/test/CodeGen/SPARC/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/SystemZ/inlineasm-output-template.lltrunk/test/CodeGen/SystemZ/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/WebAssembly/inlineasm-output-template.lltrunk/test/CodeGen/WebAssembly/inlineasm-output-template.ll
The file was added/llvm/trunk/test/CodeGen/X86/inline-asm-modifier-c.lltrunk/test/CodeGen/X86/inline-asm-modifier-c.ll
The file was added/llvm/trunk/test/CodeGen/XCore/inlineasm-output-template.lltrunk/test/CodeGen/XCore/inlineasm-output-template.ll
Revision 359332 by rksimon:
[X86][AVX] Fold extract_subvector(broadcast(x)) -> broadcast(x) iff x has one use
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-hadd-hsub.lltrunk/test/CodeGen/X86/avx512-hadd-hsub.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-shuffles/partial_permute.lltrunk/test/CodeGen/X86/avx512-shuffles/partial_permute.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-fshl-rot-256.lltrunk/test/CodeGen/X86/vector-fshl-rot-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-fshl-rot-512.lltrunk/test/CodeGen/X86/vector-fshl-rot-512.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-fshr-rot-256.lltrunk/test/CodeGen/X86/vector-fshr-rot-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-fshr-rot-512.lltrunk/test/CodeGen/X86/vector-fshr-rot-512.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-rotate-256.lltrunk/test/CodeGen/X86/vector-rotate-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-rotate-512.lltrunk/test/CodeGen/X86/vector-rotate-512.ll
Revision 359331 by paquette:
[AArch64][GlobalISel] Select G_BSWAP for vectors of s32 and s64

There are instructions for these, so mark them as legal. Select the correct
instruction in AArch64InstructionSelector.cpp.

Update select-bswap.mir and arm64-rev.ll to reflect the changes.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpptrunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bswap.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-bswap.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-rev.lltrunk/test/CodeGen/AArch64/arm64-rev.ll
Revision 359328 by rampitec:
[AMDGPU] gfx1010 VOP3 and VOP3P implementation

Differential Revision: https://reviews.llvm.org/D61202
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpptrunk/lib/Target/AMDGPU/SIInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP3Instructions.tdtrunk/lib/Target/AMDGPU/VOP3Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP3PInstructions.tdtrunk/lib/Target/AMDGPU/VOP3PInstructions.td
The file was added/llvm/trunk/test/CodeGen/AMDGPU/preserve-hi16.lltrunk/test/CodeGen/AMDGPU/preserve-hi16.ll
The file was modified/llvm/trunk/test/MC/AMDGPU/reg-syntax-extra.strunk/test/MC/AMDGPU/reg-syntax-extra.s
Revision 359326 by rksimon:
[DAGCombine] Cleanup visitEXTRACT_SUBVECTOR. NFCI.

Use ArrayRef::slice, reduce some rather awkward long lines for legibility and run clang-format.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 359321 by nikic:
[ConstantRange] Add abs() support

Add support for abs() to ConstantRange. This will allow to handle
SPF_ABS select flavor in LVI and will also come in handy as a
primitive for the srem implementation.

The implementation is slightly tricky, because a) abs of signed min
is signed min and b) sign-wrapped ranges may have an abs() that is
smaller than a full range, so we need to explicitly handle them.

Differential Revision: https://reviews.llvm.org/D61084
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 359318 by ctopper:
[X86] Sink NoRegister creation for unused Base/Index registers into getAddressOperands. NFCI
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
Revision 359317 by ctopper:
[X86] Segment registers should have i16 type not i32.

Probably doesn't really matter, but was inconsistent with the rest of the code.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
Revision 359316 by rampitec:
[AMDGPU] gfx1010 VOP2 changes

Differential Revision: https://reviews.llvm.org/D61156
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpptrunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpptrunk/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpptrunk/lib/Target/AMDGPU/SIInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP1Instructions.tdtrunk/lib/Target/AMDGPU/VOP1Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP2Instructions.tdtrunk/lib/Target/AMDGPU/VOP2Instructions.td
The file was added/llvm/trunk/test/CodeGen/AMDGPU/max-sgprs.lltrunk/test/CodeGen/AMDGPU/max-sgprs.ll
The file was added/llvm/trunk/test/MC/Disassembler/AMDGPU/null-reg.txttrunk/test/MC/Disassembler/AMDGPU/null-reg.txt
Revision 359315 by maskray:
[llvm-nm] Revert inadvertently committed 'i' change in r359314
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359314 by maskray:
[ThinLTO] Fix X86/strong_non_prevailing.ll after llvm-nm 'r' change
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/ThinLTO/X86/strong_non_prevailing.lltrunk/test/ThinLTO/X86/strong_non_prevailing.ll
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359313 by froese:
[PowerPC] Update P9 vector costs for insert/extract element

The PPC vector cost model values for insert/extract element reflect older
processors that lacked vector insert/extract and move-to/move-from VSR
instructions.  Update getVectorInstrCost to give appropriate values for when
the newer instructions are present.

Differential Revision: https://reviews.llvm.org/D60160
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpptrunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
The file was modified/llvm/trunk/test/Analysis/CostModel/PowerPC/insert_extract.lltrunk/test/Analysis/CostModel/PowerPC/insert_extract.ll
Revision 359312 by maskray:
[llvm-nm] Generalize symbol types 'N', 'n' and '?'
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359311 by maskray:
[llvm-nm] Fix handling of symbol types 't' 'd' 'r'

In addition, fix and convert the two tests to yaml2obj based. This
allows us to delete two executables.

X86/weak.test: 'v' was not tested
X86/init-fini.test: symbol types of __bss_start _edata _end were wrong
  GNU nm reports __init_array_start as 't', and __preinit_array_start as 'd'.
  __init_array_start is 't' just because its section ".init_array" starts with ".init"

  'd' makes more sense and allows us to drop the weird SHT_INIT_ARRAY rule.
  So, change __init_array_start to 'd' instead.
Change TypePath in RepositoryPath in Workspace
The file was removed/llvm/trunk/test/tools/llvm-nm/X86/Inputs/init-fini.out.elf-x86_64trunk/test/tools/llvm-nm/X86/Inputs/init-fini.out.elf-x86_64
The file was removed/llvm/trunk/test/tools/llvm-nm/X86/Inputs/weak.obj.elf-x86_64trunk/test/tools/llvm-nm/X86/Inputs/weak.obj.elf-x86_64
The file was modified/llvm/trunk/test/tools/llvm-nm/X86/init-fini.testtrunk/test/tools/llvm-nm/X86/init-fini.test
The file was modified/llvm/trunk/test/tools/llvm-nm/X86/weak.testtrunk/test/tools/llvm-nm/X86/weak.test
The file was modified/llvm/trunk/tools/llvm-nm/llvm-nm.cpptrunk/tools/llvm-nm/llvm-nm.cpp
Revision 359309 by dhinton:
[docs] Put DefaultOption bullet in alphabetical order.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CommandLine.rsttrunk/docs/CommandLine.rst
Revision 359308 by maskray:
[llvm-nm][llvm-size] Use --double-dash options in tests
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-nm/ARM/macho-print-size.testtrunk/test/tools/llvm-nm/ARM/macho-print-size.test
The file was modified/llvm/trunk/test/tools/llvm-nm/X86/archive-no-llvm-bc.testtrunk/test/tools/llvm-nm/X86/archive-no-llvm-bc.test
The file was modified/llvm/trunk/test/tools/llvm-size/X86/test-common.strunk/test/tools/llvm-size/X86/test-common.s
Revision 359307 by maskray:
s/Dwarf 5/DWARF v5/ NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.htrunk/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
The file was modified/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.htrunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
The file was modified/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpptrunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
Revision 359306 by spatel:
[x86] add tests for fmin/fmax; NFC

'maximum' and 'minimum' still crash, so they are commented out.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/extract-fp.lltrunk/test/CodeGen/X86/extract-fp.ll
Revision 359302 by aganea:
Fix llvm-objcopy/ELF/preserve-segment-contents test on UTF-8 locale

Differential Revision: https://reviews.llvm.org/D61137
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/preserve-segment-contents.testtrunk/test/tools/llvm-objcopy/ELF/preserve-segment-contents.test
Revision 359301 by grimar:
[yaml2obj] - Make implicitSectionNames() return std::vector<StringRef>. NFCI.

No need to use SmallVector of char* here.
This simplifies the code.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359300 by grimar:
[yaml2obj] - Remove excessive variable. NFC.

`auto &Strtab` was used only once.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359299 by rksimon:
Fix Wparentheses warning. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
Revision 359298 by grimar:
[yaml2obj] - Make the code to match the LLVM style. NFCI.

This renames the variables to uppercase and
removes use of `auto` for unobvious type.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359297 by grimar:
[yaml2elf] - Cleanup the initSectionHeaders(). NFCI.

This encapsulates the section specific code inside the
corresponding writeSectionContent methods.
Making the code a bit more consistent.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359296 by rksimon:
[X86][SSE] Pull out OR(EXTRACTELT(X,0),OR(EXTRACTELT(X,1),...)) matching code from LowerVectorAllZeroTest

Create a matchBitOpReduction helper that checks for the pattern with any opcode.

First step towards reusing this code to recognize other scalar reduction patterns.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
Revision 359295 by nico:
Minor formatting tweak, no behavior change
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-readobj/COFFDumper.cpptrunk/tools/llvm-readobj/COFFDumper.cpp
Revision 359294 by maskray:
caseFoldingDjbHash: simplify and make the US-ASCII fast path faster

The slow path (with at least one non US-ASCII) will be slower but that
doesn't matter.

Differential Revision: https://reviews.llvm.org/D61178
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/DJB.cpptrunk/lib/Support/DJB.cpp
Revision 359293 by rksimon:
[X86][SSE] Disable shouldFoldConstantShiftPairToMask for btver1/btver2 targets (PR40758)

As detailed on PR40758, Bobcat/Jaguar can perform vector immediate shifts on the same pipes as vector ANDs with the same latency - so it doesn't make sense to replace a shl+lshr with a shift+and pair as it requires an additional mask (with the extra constant pool, loading and register pressure costs).

Differential Revision: https://reviews.llvm.org/D61068
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86.tdtrunk/lib/Target/X86/X86.td
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86Subtarget.htrunk/lib/Target/X86/X86Subtarget.h
The file was modified/llvm/trunk/test/CodeGen/X86/sse2-vector-shifts.lltrunk/test/CodeGen/X86/sse2-vector-shifts.ll
Revision 359292 by rksimon:
[X86][AVX] Combine shuffles extracted from a common vector

A small step towards combining shuffles across vector sizes - this recognizes when a shuffle's operands are all extracted from the same larger source and tries to combine to an unary shuffle of that source instead. Fixes one of the test cases from PR34380.

Differential Revision: https://reviews.llvm.org/D60512
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-shuffles/partial_permute.lltrunk/test/CodeGen/X86/avx512-shuffles/partial_permute.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-512-v16.lltrunk/test/CodeGen/X86/vector-shuffle-512-v16.ll
Revision 359290 by svenvh:
[InferAddressSpaces] Add AS parameter to the pass factory

This enables the pass to be used in the absence of
TargetTransformInfo. When the argument isn't passed, the factory
defaults to UninitializedAddressSpace and the flat address space is
obtained from the TargetTransformInfo as before this change. Existing
users won't have to change.

Patch by Kevin Petit.

Differential Revision: https://reviews.llvm.org/D60602
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/Scalar.htrunk/include/llvm/Transforms/Scalar.h
The file was modified/llvm/trunk/lib/Transforms/Scalar/InferAddressSpaces.cpptrunk/lib/Transforms/Scalar/InferAddressSpaces.cpp
Revision 359287 by hans:
Fix alignment in AArch64InstructionSelector::emitConstantPoolEntry()

The code was using the alignment of a pointer to the value, not the
alignment of the constant itself.

Maybe we got away with it so far because the pointer alignment is
fairly high, but we did end up under-aligning <16 x i8> vectors,
which was caught in the Chromium build after lld stopped over-aligning
the .rodata.cst16 section in r356428. (See crbug.com/953815)

Differential revision: https://reviews.llvm.org/D61124
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpptrunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-shuffle-vector.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-shuffle-vector.mir
Revision 359282 by mggm:
[GlobalISel] Fix inserting copies in the right position for reg definitions

When constrainRegClass is called if the constraining happens on a use the COPY
needs to be inserted before the instruction that contains the MachineOperand,
but if we are constraining a definition it actually needs to be added
after the instruction. In addition, the COPY needs to have its operands
flipped (in the use case we are copying from the old unconstrained register
to the new constrained register, while in the definition case we are copying
from the new constrained register that the instruction defines to the old
unconstrained register).
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/Utils.htrunk/include/llvm/CodeGen/GlobalISel/Utils.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelector.cpptrunk/lib/CodeGen/GlobalISel/InstructionSelector.cpp
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/Utils.cpptrunk/lib/CodeGen/GlobalISel/Utils.cpp
Revision 359277 by maskray:
Fix typos: (re)?sor?uce -> (re)?source

Closes: https://github.com/llvm/llvm-project/pull/10

In-collaboration-with: Olivier Cochard-Labbé <olivier@FreeBSD.org>
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>

Differential Revision: https://reviews.llvm.org/D61021
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.htrunk/include/llvm/CodeGen/PseudoSourceValue.h
The file was modified/llvm/trunk/include/llvm/IR/CallSite.htrunk/include/llvm/IR/CallSite.h
The file was modified/llvm/trunk/include/llvm/Target/TargetSchedule.tdtrunk/include/llvm/Target/TargetSchedule.td
The file was modified/llvm/trunk/tools/llvm-rc/ResourceFileWriter.cpptrunk/tools/llvm-rc/ResourceFileWriter.cpp
Revision 359267 by dlrobertson:
[NFC] Add baseline tests for int isKnownNonZero

Add baseline tests for improvements of isKnownNonZero for integer types.

Differential Revision: https://reviews.llvm.org/D60932
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/InstCombine/known-non-zero.lltrunk/test/Transforms/InstCombine/known-non-zero.ll
The file was added/llvm/trunk/test/Transforms/InstSimplify/known-non-zero.lltrunk/test/Transforms/InstSimplify/known-non-zero.ll
Revision 359265 by maskray:
[llvm-objcopy] Accept --long-option but not -long-option

Summary:

llvm-{objcopy,strip} (and many other LLVM binary utilities) accept
cl::opt style -long-option as well as many short options (e.g. -p -S
-x). People who use them as replacement of GNU binutils often use the
grouped option syntax (POSIX Utility Conventions), e.g. -Sx => -S -x,
-Wd => -W -d, -sj.text => -s -j.text

There is ambiguity if a long option starts with the character used by a
short option. Drop the support for -long-option to resolve the ambiguity.

This divergence from other utilities is accepted (other utilities
continue supporting -long-option).
https://lists.llvm.org/pipermail/llvm-dev/2019-April/131786.html

Reviewers: alexshap, jakehehrlich, jhenderson, rupprecht, espindola

Reviewed By: jakehehrlich, jhenderson, rupprecht

Subscribers: grimar, emaste, arichardson, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60439
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/help-message.testtrunk/test/tools/llvm-objcopy/ELF/help-message.test
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/objcopy-version.testtrunk/test/tools/llvm-objcopy/ELF/objcopy-version.test
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/strip-all.testtrunk/test/tools/llvm-objcopy/ELF/strip-all.test
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/strip-version.testtrunk/test/tools/llvm-objcopy/ELF/strip-version.test
The file was modified/llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.tdtrunk/tools/llvm-objcopy/ObjcopyOpts.td
The file was modified/llvm/trunk/tools/llvm-objcopy/StripOpts.tdtrunk/tools/llvm-objcopy/StripOpts.td
Revision 359253 by Justin Bogner:
[GlobalOpt] Swap the expensive check for cold calls with the cheap TTI check

isValidCandidateForColdCC is much more expensive than
TTI.useColdCCForColdCall, which by default just returns false. Avoid
doing this work if we're not going to look at the answer anyway.

This change is NFC, but I see significant compile time improvements on
some code with pathologically many functions.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpptrunk/lib/Transforms/IPO/GlobalOpt.cpp
Revision 359252 by Lang Hames:
[ORC] Remove symbols from dependency lists when failing materialization.

When failing materialization of a symbol X, remove X from the dependants list
of any of X's dependencies. This ensures that when X's dependencies are
emitted (or fail themselves) they do not try to access the no-longer-existing
MaterializationInfo for X.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/Core.cpptrunk/lib/ExecutionEngine/Orc/Core.cpp
The file was modified/llvm/trunk/unittests/ExecutionEngine/Orc/CMakeLists.txttrunk/unittests/ExecutionEngine/Orc/CMakeLists.txt
The file was modified/llvm/trunk/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpptrunk/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
Revision 359248 by tra:
[CUDA] Implemented _[bi]mma* builtins.

These builtins provide access to the new integer and
sub-integer variants of MMA (matrix multiply-accumulate) instructions
provided by CUDA-10.x on sm_75 (AKA Turing) GPUs.

Also added a feature for PTX 6.4. While Clang/LLVM does not generate
any PTX instructions that need it, we still need to pass it through to
ptxas in order to be able to compile code that uses the new 'mma'
instruction as inline assembly (e.g used by NVIDIA's CUTLASS library
https://github.com/NVIDIA/cutlass/blob/master/cutlass/arch/mma.h#L101)

Differential Revision: https://reviews.llvm.org/D60279
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/BuiltinsNVPTX.defN/A
The file was modified/cfe/trunk/lib/Basic/Targets/NVPTX.cppN/A
The file was modified/cfe/trunk/lib/CodeGen/CGBuiltin.cppN/A
The file was modified/cfe/trunk/lib/Driver/ToolChains/Cuda.cppN/A
The file was added/cfe/trunk/test/CodeGen/builtins-nvptx-mma.cuN/A
The file was added/cfe/trunk/test/CodeGen/builtins-nvptx-mma.pyN/A
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTX.tdtrunk/lib/Target/NVPTX/NVPTX.td
Revision 359247 by tra:
PTX 6.3 extends `wmma` instruction to support s8/u8/s4/u4/b1 -> s32.

All of the new instructions are still handled mostly by tablegen. I've slightly
refactored the code to drive intrinsic/instruction generation from a master
list of supported variants, so all irregularities have to be implemented in one place only.

The test generation script wmma.py has been refactored in a similar way.

Differential Revision: https://reviews.llvm.org/D60015
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/IntrinsicsNVVM.tdtrunk/include/llvm/IR/IntrinsicsNVVM.td
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpptrunk/lib/Target/NVPTX/NVPTXISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXInstrInfo.tdtrunk/lib/Target/NVPTX/NVPTXInstrInfo.td
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXIntrinsics.tdtrunk/lib/Target/NVPTX/NVPTXIntrinsics.td
The file was modified/llvm/trunk/test/CodeGen/NVPTX/wmma.pytrunk/test/CodeGen/NVPTX/wmma.py
Revision 359246 by tra:
[NVPTX] generate correct MMA instruction mnemonics with PTX63+.

PTX 6.3 requires using ".aligned" in the MMA instruction names.
In order to generate correct name, now we pass current
PTX version to each instruction as an extra constant operand
and InstPrinter adjusts its output accordingly.

Differential Revision: https://reviews.llvm.org/D59393
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.cpptrunk/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.cpp
The file was modified/llvm/trunk/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.htrunk/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.h
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXInstrInfo.tdtrunk/lib/Target/NVPTX/NVPTXInstrInfo.td
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXIntrinsics.tdtrunk/lib/Target/NVPTX/NVPTXIntrinsics.td
The file was modified/llvm/trunk/test/CodeGen/NVPTX/wmma.pytrunk/test/CodeGen/NVPTX/wmma.py
Revision 359245 by tra:
[NVPTX] Refactor generation of MMA intrinsics and instructions. NFC.

Generalized constructions of 'fragments' of MMA operations to provide
common primitives for construction of the ops. This will make it easier
to add new variants of the instructions that operate on integer types.

Use nested foreach loops which makes it possible to better control
naming of the intrinsics.

This patch does not affect LLVM's output, so there are no test changes.

Differential Revision: https://reviews.llvm.org/D59389
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/IntrinsicsNVVM.tdtrunk/include/llvm/IR/IntrinsicsNVVM.td
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXIntrinsics.tdtrunk/lib/Target/NVPTX/NVPTXIntrinsics.td
Revision 359244 by sfertile:
[Object][XCOFF] Add intial support for section header table.

Adds a representation of the section header table to XCOFFObjectFile,
and implements enough to dump the section headers with llvm-obdump.

Differential Revision: https://reviews.llvm.org/D60784
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/include/llvm/BinaryFormat/XCOFF.htrunk/include/llvm/BinaryFormat/XCOFF.h
The file was modified/llvm/trunk/include/llvm/Object/XCOFFObjectFile.htrunk/include/llvm/Object/XCOFFObjectFile.h
The file was modified/llvm/trunk/lib/Object/XCOFFObjectFile.cpptrunk/lib/Object/XCOFFObjectFile.cpp
The file was added/llvm/trunk/test/tools/llvm-objdump/Inputs/xcoff-long-sec-names.otrunk/test/tools/llvm-objdump/Inputs/xcoff-long-sec-names.o
The file was added/llvm/trunk/test/tools/llvm-objdump/Inputs/xcoff-section-headers-truncate.otrunk/test/tools/llvm-objdump/Inputs/xcoff-section-headers-truncate.o
The file was added/llvm/trunk/test/tools/llvm-objdump/Inputs/xcoff-section-headers.otrunk/test/tools/llvm-objdump/Inputs/xcoff-section-headers.o
The file was added/llvm/trunk/test/tools/llvm-objdump/xcoff-section-headers.testtrunk/test/tools/llvm-objdump/xcoff-section-headers.test
Revision 359242 by kfischer:
[CMake][PowerPC] Recognize LLVM_NATIVE_TARGET="ppc64le" as PowerPC

Summary:
This value is derived from the host triple, which on the machine
I'm currently using is `ppc64le-linux-redhat`. This change makes
LLVM compile.

Reviewers: nemanjai
Differential Revision: https://reviews.llvm.org/D57118
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/cmake/config-ix.cmaketrunk/cmake/config-ix.cmake
Revision 359239 by rampitec:
[AMDGPU] gfx1010 - fix ubsan failure

Revert DecoderNamespace in one place for now. It will need more
changes to properly work.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP1Instructions.tdtrunk/lib/Target/AMDGPU/VOP1Instructions.td
Revision 359238 by spatel:
[x86] add tests for vector fdiv reciprocal estimate; NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/fdiv-combine-vec.lltrunk/test/CodeGen/X86/fdiv-combine-vec.ll
Revision 359236 by dblaikie:
Assigning to a local object in a return statement prevents copy elision. NFC.

I added a diagnostic along the lines of `-Wpessimizing-move` to detect `return x = y` suppressing copy elision, but I don't know if the diagnostic is really worth it. Anyway, here are the places where my diagnostic reported that copy elision would have been possible if not for the assignment.

P1155R1 in the post-San-Diego WG21 (C++ committee) mailing discusses whether WG21 should fix this pitfall by just changing the core language to permit copy elision in cases like these.

(Kona update: The bulk of P1155 is proceeding to CWG review, but specifically *not* the parts that explored the notion of permitting copy-elision in these specific cases.)

Reviewed By: dblaikie

Author: Arthur O'Dwyer

Differential Revision: https://reviews.llvm.org/D54885
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.htrunk/include/llvm/CodeGen/MachineInstrBundle.h
The file was modified/llvm/trunk/include/llvm/Support/BranchProbability.htrunk/include/llvm/Support/BranchProbability.h
The file was modified/llvm/trunk/lib/Support/Path.cpptrunk/lib/Support/Path.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86MCInstLower.cpptrunk/lib/Target/X86/X86MCInstLower.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpptrunk/lib/Transforms/Instrumentation/Instrumentation.cpp
Revision 359231 by paquette:
[GlobalISel][AArch64] Make G_EXTRACT_VECTOR_ELT legal for v8s16s

This case was missing before, so we couldn't legalize it.

Add it to AArch64LegalizerInfo.cpp and update select-extract-vector-elt.mir.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-extract-vector-elt.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-extract-vector-elt.mir
Revision 359226 by ahatanak:
[ObjC][ARC] Let ARC optimizer bail out if the number of pointer states
it keeps track of becomes too large

ARC optimizer does a top-down and a bottom-up traversal of the whole
function to pair up retain and release instructions and remove them.
This can be expensive if the number of instructions in the function and
pointer states it tracks are large since it has to look at each pointer
state and determine whether the instruction being visited can
potentially use the pointer.

This patch adds a command line option that sets a limit to the number of
pointers it tracks.

rdar://problem/49477063

Differential Revision: https://reviews.llvm.org/D61100
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpptrunk/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
The file was added/llvm/trunk/test/Transforms/ObjCARC/opt-max-ptr-states.lltrunk/test/Transforms/ObjCARC/opt-max-ptr-states.ll
Revision 359225 by rampitec:
[AMDGPU] gfx1010 VOP1 instructions

Differential Revision: https://reviews.llvm.org/D61099
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.tdtrunk/lib/Target/AMDGPU/SIInstrInfo.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP1Instructions.tdtrunk/lib/Target/AMDGPU/VOP1Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP2Instructions.tdtrunk/lib/Target/AMDGPU/VOP2Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP3Instructions.tdtrunk/lib/Target/AMDGPU/VOP3Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOPCInstructions.tdtrunk/lib/Target/AMDGPU/VOPCInstructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOPInstructions.tdtrunk/lib/Target/AMDGPU/VOPInstructions.td
Revision 359224 by rampitec:
[AMDGPU] gfx1010 utility functions

Differential Revision: https://reviews.llvm.org/D61094
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIDefines.htrunk/lib/Target/AMDGPU/SIDefines.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInsertWaitcnts.cpptrunk/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpptrunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.htrunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
Revision 359222 by paquette:
[GlobalISel][AArch64] Add generic legalization rule for extends

This adds a legalization rule for G_ZEXT, G_ANYEXT, and G_SEXT which allows
extends whenever the types will fit in registers (or the source is an s1).

Update tests. Add GISel checks throughout all of arm64-vabs.ll,
where we now select a good portion of the code. Add GISel checks to
arm64-subvector-extend.ll, which has a good number of vector extends in it.

Differential Revision: https://reviews.llvm.org/D60889
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-ext.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-ext.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-subvector-extend.lltrunk/test/CodeGen/AArch64/arm64-subvector-extend.ll
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vabs.lltrunk/test/CodeGen/AArch64/arm64-vabs.ll
Revision 359219 by ctopper:
[SelectionDAG][X86] Use stack load/store in PromoteIntRes_BITCAST when the input needs to be be split and the output type is a vector.

We had special case handling here, but it uses a scalar any_extend for the
promotion then bitcasts to the final type. This won't split up the input data
into multiple promoted elements like we need.

This patch falls back to doing the conversion through memory.

Fixes PR41594 which I believe was reflected in the bitcast-vector-bool.ll
changes. The changes to vector-half-conversions.ll are fixing a previously
unknown miscompile from this issue.

Differential Revision: https://reviews.llvm.org/D61114
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpptrunk/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/bitcast-vector-bool.lltrunk/test/CodeGen/X86/bitcast-vector-bool.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-half-conversions.lltrunk/test/CodeGen/X86/vector-half-conversions.ll
Revision 359205 by rlougher:
[Evaluator] Walk initial elements when handling load through bitcast

When evaluating a store through a bitcast, the evaluator tries to move the
bitcast from the pointer onto the stored value. If the cast is invalid, it
tries to "introspect" the type to get a valid cast by obtaining a pointer to
the initial element (if the type is nested, this may require walking several
initial elements).

In some situations it is possible to get a bitcast on a load (e.g. with
unions, where the bitcast may not be the same type as the store). However,
equivalent logic to the store to introspect the type is missing. This patch
add this logic.

Note, when developing the patch I was unhappy with adding similar logic
directly to the load case as it could get out of step. Instead, I have
abstracted the "introspection" into a helper function, with the specifics
being handled by a passed-in lambda function.

Differential Revision: https://reviews.llvm.org/D60793
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Utils/Evaluator.cpptrunk/lib/Transforms/Utils/Evaluator.cpp
The file was added/llvm/trunk/test/Transforms/GlobalOpt/evaluate-bitcast-2.lltrunk/test/Transforms/GlobalOpt/evaluate-bitcast-2.ll
The file was added/llvm/trunk/test/Transforms/GlobalOpt/evaluate-bitcast-3.lltrunk/test/Transforms/GlobalOpt/evaluate-bitcast-3.ll
Revision 359204 by paquette:
[GlobalISel][AArch64] Legalize G_FNEARBYINT

Add legalizer support for G_FNEARBYINT. It's the same as G_FCEIL etc.

Since the importer allows us to automatically select this after legalization,
also add tests for selection etc. Also update arm64-vfloatintrinsics.ll.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpptrunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-nearbyint.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-nearbyint.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/regbank-nearbyint.mirtrunk/test/CodeGen/AArch64/GlobalISel/regbank-nearbyint.mir
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-nearbyint.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-nearbyint.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.lltrunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.ll
Revision 359203 by paquette:
[GlobalISel] Add IRTranslator support for G_FNEARBYINT

Translate llvm.nearbyint into G_FNEARBYINT as a simple intrinsic. Update
arm64-irtranslator.ll.

Differential Revision: https://reviews.llvm.org/D60922
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpptrunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.lltrunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
Revision 359201 by paquette:
[GlobalISel] Add a G_FNEARBYINT opcode

For eventually selecting llvm.nearbyint. Equivalent to the SelectionDAG
nearbyint node.

Update legalizer-info-validation.mir.

Differential Revision: https://reviews.llvm.org/D60921
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/TargetOpcodes.deftrunk/include/llvm/Support/TargetOpcodes.def
The file was modified/llvm/trunk/include/llvm/Target/GenericOpcodes.tdtrunk/include/llvm/Target/GenericOpcodes.td
The file was modified/llvm/trunk/include/llvm/Target/GlobalISel/SelectionDAGCompat.tdtrunk/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
Revision 359198 by Lang Hames:
Revert "[JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows."

This reverts r359169, as it broke one of the windows bots.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.testtrunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.test
Revision 359196 by nico:
gn build: Document llvm_enable_dia_sdk variable better
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/DebugInfo/PDB/enable_dia.gnitrunk/utils/gn/secondary/llvm/lib/DebugInfo/PDB/enable_dia.gni
Revision 359195 by nico:
gn build: Make setting llvm_enable_dia_sdk=true work

If this is set, %INCLUDE% must contain ".../DIA SDK/include"
and %LIB% must contain ".../DIA SKD/lib/amd64" (assuming you're doing a
64-bit build).
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gntrunk/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gntrunk/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn
Revision 359191 by rksimon:
[InstCombine][X86] Tweak generic expansion of PACKSS/PACKUS to shuffle then truncate. NFCI.

This has no effect on constant folding but will be useful when we expand non-saturating PACKSS/PACKUS intrinsics.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
Revision 359190 by sammccall:
[Support] json::OStream::flush(), which passes through to the underlying stream
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/JSON.htrunk/include/llvm/Support/JSON.h
Revision 359189 by nico:
gn build: Merge r359179
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/Testing/Support/BUILD.gntrunk/utils/gn/secondary/llvm/lib/Testing/Support/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/Support/BUILD.gntrunk/utils/gn/secondary/llvm/unittests/Support/BUILD.gn
Revision 359188 by nico:
gn build: Merge r359174
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/Support/BUILD.gntrunk/utils/gn/secondary/llvm/unittests/Support/BUILD.gn
Revision 359187 by nico:
gn build: Merge r359142
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clang-tidy/llvm/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clang-tidy/llvm/BUILD.gn
Revision 359186 by sammccall:
[Support] Add JSON streaming output API, faster where the heavy value types aren't needed.

Summary:
There's still a little bit of constant factor that could be trimmed (e.g.
more overloads to avoid round-tripping primitives through json::Value).
But this solves the memory scaling problem, and greatly improves the performance
constant factor, and the API should leave room for optimization if needed.

Adapt TimeProfiler to use it, eliminating almost all the performance regression
from r358476.

Performance test on my machine:
perf stat -r 5 ~/llvmbuild-opt/bin/clang++ -w -S -ftime-trace -mllvm -time-trace-granularity=0 spirit.cpp

Handcrafted JSON (HEAD=r358532 with r358476 reverted): 2480ms
json::Value (HEAD): 2757ms (+11%)
After this patch: 2520 ms (+1.6%)

Reviewers: anton-afanasyev, lebedev.ri

Subscribers: kristina, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60804
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/JSON.htrunk/include/llvm/Support/JSON.h
The file was modified/llvm/trunk/lib/Support/JSON.cpptrunk/lib/Support/JSON.cpp
The file was modified/llvm/trunk/lib/Support/TimeProfiler.cpptrunk/lib/Support/TimeProfiler.cpp
The file was modified/llvm/trunk/unittests/Support/JSONTest.cpptrunk/unittests/Support/JSONTest.cpp
Revision 359185 by rksimon:
[InstCombine][X86] Add PACKSS/PACKUS tests for truncation where saturation won't occur
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/InstCombine/X86/x86-pack.lltrunk/test/Transforms/InstCombine/X86/x86-pack.ll
Revision 359183 by ibiryukov:
[Support] Try to unbreak windows buildbot

After r359179.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/Support/AnnotationsTest.cpptrunk/unittests/Support/AnnotationsTest.cpp
Revision 359182 by maskray:
Parallel: only allow the first TaskGroup to run tasks parallelly

Summary:
Concurrent (e.g. nested) llvm::parallel::for_each() may lead to dead
locks. See PR35788 (fixed by rLLD322041) and PR41508 (fixed by D60757).

When parallel_for_each() is about to return, in ~Latch() called by
~TaskGroup(), a thread (in the default executor) may block in
Latch::sync() waiting for Count to become zero. If all threads in the
default executor are blocked, it is a dead lock.

To fix this, force serial execution if the current TaskGroup is not the
first one. For a nested llvm::parallel::for_each(), this parallelizes
the outermost loop and serializes inner loops.

Differential Revision: https://reviews.llvm.org/D61115
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/Parallel.htrunk/include/llvm/Support/Parallel.h
The file was modified/llvm/trunk/lib/Support/Parallel.cpptrunk/lib/Support/Parallel.cpp
Revision 359181 by maskray:
[llvm-objdump] Prep for adding newlines before and after "Disassembly of section ...:"
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objdump/X86/adjust-vma.testtrunk/test/tools/llvm-objdump/X86/adjust-vma.test
The file was modified/llvm/trunk/test/tools/llvm-objdump/X86/demangle.strunk/test/tools/llvm-objdump/X86/demangle.s
The file was modified/llvm/trunk/test/tools/llvm-objdump/X86/disasm-zeroes-relocations.testtrunk/test/tools/llvm-objdump/X86/disasm-zeroes-relocations.test
The file was modified/llvm/trunk/test/tools/llvm-objdump/X86/print-symbol-addr.strunk/test/tools/llvm-objdump/X86/print-symbol-addr.s
Revision 359180 by fhahn:
[ConstantRange] [a, b) udiv a full range is [0, umax(b)).

Reviewers: nikic, spatel, efriedma

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D60536
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 359179 by ibiryukov:
[Testing] Move clangd::Annotations to llvm testing support

Summary:
Annotations allow writing nice-looking unit test code when one needs
access to locations from the source code, e.g. running code completion
at particular offsets in a file. See comments in Annotations.cpp for
more details on the API.

Also got rid of a duplicate annotations parsing code in clang's code
complete tests.

Reviewers: gribozavr, sammccall

Reviewed By: gribozavr

Subscribers: mgorny, hiraditya, ioeric, MaskRay, jkorous, arphaman, kadircet, jdoerfert, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D59814
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/unittests/Sema/CMakeLists.txtN/A
The file was modified/cfe/trunk/unittests/Sema/CodeCompleteTest.cppN/A
The file was modified/clang-tools-extra/trunk/unittests/clangd/Annotations.cppN/A
The file was modified/clang-tools-extra/trunk/unittests/clangd/Annotations.hN/A
The file was added/llvm/trunk/include/llvm/Testing/Support/Annotations.htrunk/include/llvm/Testing/Support/Annotations.h
The file was added/llvm/trunk/lib/Testing/Support/Annotations.cpptrunk/lib/Testing/Support/Annotations.cpp
The file was modified/llvm/trunk/lib/Testing/Support/CMakeLists.txttrunk/lib/Testing/Support/CMakeLists.txt
The file was added/llvm/trunk/unittests/Support/AnnotationsTest.cpptrunk/unittests/Support/AnnotationsTest.cpp
The file was modified/llvm/trunk/unittests/Support/CMakeLists.txttrunk/unittests/Support/CMakeLists.txt
Revision 359178 by grimar:
[yaml2obj] - Don't crash on invalid inputs.

yaml2obj might crash on invalid input when unable to parse the YAML.

Recently a crash with a very similar nature was fixed for an empty files.
This patch revisits the fix and does it in yaml::Input instead.
It seems to be more correct way to handle such situation.

With that crash for invalid inputs is also fixed now.

Differential revision: https://reviews.llvm.org/D61059
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ObjectYAML/ObjectYAML.cpptrunk/lib/ObjectYAML/ObjectYAML.cpp
The file was modified/llvm/trunk/lib/Support/YAMLTraits.cpptrunk/lib/Support/YAMLTraits.cpp
The file was added/llvm/trunk/test/tools/yaml2obj/empty-or-invalid-doc.yamltrunk/test/tools/yaml2obj/empty-or-invalid-doc.yaml
The file was removed/llvm/trunk/test/tools/yaml2obj/empty.yamltrunk/test/tools/yaml2obj/empty.yaml
The file was modified/llvm/trunk/tools/yaml2obj/yaml2obj.cpptrunk/tools/yaml2obj/yaml2obj.cpp
Revision 359177 by rksimon:
Fix include order. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
Revision 359176 by rksimon:
[X86][SSE] combineBitcastvxi1 - add support for bitcasting to non-scalar integers

Truncate the movmsk scalar integer result to the equivalent scalar integer width as before but then bitcast to the requested type.

We still have the issue identified in PR41594 but D61114 should handle this.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/bitcast-vector-bool.lltrunk/test/CodeGen/X86/bitcast-vector-bool.ll
Revision 359174 by ibiryukov:
[Support] Add a GTest matcher for Optional<T>

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61071
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Testing/Support/SupportHelpers.htrunk/include/llvm/Testing/Support/SupportHelpers.h
The file was modified/llvm/trunk/unittests/Support/CMakeLists.txttrunk/unittests/Support/CMakeLists.txt
The file was added/llvm/trunk/unittests/Support/MatchersTest.cpptrunk/unittests/Support/MatchersTest.cpp
Revision 359173 by lebedevri:
[NFC][LoopIdiomRecognize] Some basic baseline tests for bcmp loop idiom

Doubt this is the final test coverage, but this appears to have good
coverage already, so i figure i might as well precommit it.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/LoopIdiom/bcmp-basic.lltrunk/test/Transforms/LoopIdiom/bcmp-basic.ll
The file was added/llvm/trunk/test/Transforms/LoopIdiom/bcmp-debugify-remarks.lltrunk/test/Transforms/LoopIdiom/bcmp-debugify-remarks.ll
The file was added/llvm/trunk/test/Transforms/LoopIdiom/bcmp-negative-tests.lltrunk/test/Transforms/LoopIdiom/bcmp-negative-tests.ll
The file was added/llvm/trunk/test/Transforms/LoopIdiom/bcmp-widening.lltrunk/test/Transforms/LoopIdiom/bcmp-widening.ll
Revision 359171 by atanasyan:
[MIPS] Use custom bitcast lowering to avoid excessive instructions

On Mips32r2 bitcast can be expanded to two sw instructions and an ldc1
when using bitcast i64 to double or an sdc1 and two lw instructions when
using bitcast double to i64. By introducing custom lowering that uses
mtc1/mthc1 we can avoid excessive instructions.

Patch by Mirko Brkusanin.

Differential Revision: https://reviews.llvm.org/D61069
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/Mips/MipsISelLowering.cpptrunk/lib/Target/Mips/MipsISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpptrunk/lib/Target/Mips/MipsSEISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/Mips/MipsSEISelLowering.htrunk/lib/Target/Mips/MipsSEISelLowering.h
The file was modified/llvm/trunk/test/CodeGen/Mips/llvm-ir/bitcast.lltrunk/test/CodeGen/Mips/llvm-ir/bitcast.ll
Revision 359170 by ctopper:
[X86] Remove part of an if condition that should always be true.

The IndexReg will always be non-null at this point. Earlier in the function, if
IndexReg was null we set it to CurDAG->getRegister(0, VT) which made it
non-null.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
Revision 359169 by Lang Hames:
[JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows.

This should fix the MachO/x86-64 eh-frame regression test by ensuring that
the symbols __ZTIi and ___gxx_personality_v0 are defined on all platforms.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.testtrunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.test
Revision 359168 by Lang Hames:
[llvm-rtdyld] Add support for passing command line arguments to rtdyld-run code.

The --args option can now be used to pass arguments to code linked with
llvm-rtdyld. E.g.

$ llvm-rtdyld file1.o file2.o --args a b c

is equivalent to:

$ ld -o program file1.o file2.o
$ ./program a b c

This is the rtdyld counterpart to the jitlink change in r359115, and makes
benchmarking and comparison between the tools easier.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpptrunk/tools/llvm-rtdyld/llvm-rtdyld.cpp
Revision 359167 by asbirlea:
Enable LoopVectorization by default.

Summary:
When refactoring vectorization flags, vectorization was disabled by default in the new pass manager.
This patch re-enables is for both managers, and changes the assumptions opt makes, based on the new defaults.
Comments in opt.cpp should clarify the intended use of all flags to enable/disable vectorization.

Reviewers: chandlerc, jgorbe

Subscribers: jlebar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61091
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpptrunk/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modified/llvm/trunk/test/CodeGen/Hexagon/bug15515-shuffle.lltrunk/test/CodeGen/Hexagon/bug15515-shuffle.ll
The file was modified/llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.lltrunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll
The file was modified/llvm/trunk/test/Transforms/LoopVectorize/opt.lltrunk/test/Transforms/LoopVectorize/opt.ll
The file was modified/llvm/trunk/tools/opt/opt.cpptrunk/tools/opt/opt.cpp
Revision 359166 by maskray:
[llvm-objdump] errorToErrorCode+message -> toString

For test/Object/elf-invalid-phdr.test, the intended error message got lost due to errorToErrorCode().
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Object/elf-invalid-phdr.testtrunk/test/Object/elf-invalid-phdr.test
The file was modified/llvm/trunk/tools/llvm-objdump/ELFDump.cpptrunk/tools/llvm-objdump/ELFDump.cpp
Revision 359163 by reames:
Consolidate existing utilities for interpreting vector predicate maskes [NFC]
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/VectorUtils.htrunk/include/llvm/Analysis/VectorUtils.h
The file was modified/llvm/trunk/lib/Analysis/InstructionSimplify.cpptrunk/lib/Analysis/InstructionSimplify.cpp
The file was modified/llvm/trunk/lib/Analysis/VectorUtils.cpptrunk/lib/Analysis/VectorUtils.cpp
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
Revision 359161 by kbarton:
Fix unused variable warning in LoopFusion pass.

Do not wrap the contents of printFusionCandidates in the LLVM_DEBUG macro. This
fixes an unused variable warning generated when compiling without asserts but
with -DENABLE_LLVM_DUMP.

Differential Revision: https://reviews.llvm.org/D61035
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopFuse.cpptrunk/lib/Transforms/Scalar/LoopFuse.cpp
Revision 359160 by reames:
[InstCombine] Be consistent w/handling of masked intrinsics style wise [NFC]
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineInternal.htrunk/lib/Transforms/InstCombine/InstCombineInternal.h
Revision 359157 by davide:
[utils] Add a lldb data formatter for llvm::SmallString.

Result:

(lldb) p val
(llvm::SmallString<32>) $31 = "patatino"
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/lldbDataFormatters.pytrunk/utils/lldbDataFormatters.py
Revision 359154 by kerbowa:
Fix spelling error. NFC

Summary: Test commit.

Reviewers: msearles, jkorous

Reviewed By: jkorous

Subscribers: dexonsmith, arsenm, jvesely, nhaehnle, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61093
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.htrunk/lib/Target/AMDGPU/GCNSchedStrategy.h
Revision 359153 by nico:
llvm-cvtres: Make new dupe resource error a bit friendlier

For well-known type IDs, include the name of the type.

To not duplicate the ID->name map, make llvm-readobj call this new
function as well.  It has slightly different output, so this also
requires updating a few tests.

Differential Revision: https://reviews.llvm.org/D61086
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/test/COFF/manifestinput.testN/A
The file was modified/lld/trunk/test/COFF/resource.testN/A
The file was modified/llvm/trunk/include/llvm/Object/WindowsResource.htrunk/include/llvm/Object/WindowsResource.h
The file was modified/llvm/trunk/lib/Object/WindowsResource.cpptrunk/lib/Object/WindowsResource.cpp
The file was modified/llvm/trunk/test/tools/llvm-cvtres/combined.testtrunk/test/tools/llvm-cvtres/combined.test
The file was modified/llvm/trunk/test/tools/llvm-cvtres/duplicate.testtrunk/test/tools/llvm-cvtres/duplicate.test
The file was modified/llvm/trunk/test/tools/llvm-cvtres/object.testtrunk/test/tools/llvm-cvtres/object.test
The file was modified/llvm/trunk/test/tools/llvm-readobj/coff-resources.testtrunk/test/tools/llvm-readobj/coff-resources.test
The file was modified/llvm/trunk/tools/llvm-cvtres/llvm-cvtres.cpptrunk/tools/llvm-cvtres/llvm-cvtres.cpp
The file was modified/llvm/trunk/tools/llvm-readobj/COFFDumper.cpptrunk/tools/llvm-readobj/COFFDumper.cpp
Revision 359152 by jfb:
posix_spawn should retry upon EINTR

Summary:
We've seen cases of bots failing with:
  clang: error: unable to execute command: posix_spawn failed: Interrupted system call

Add a small retry loop to posix_spawn in case this happens. Don't retry too much in case there's some systemic problem going on, but retry a few times.
<rdar://problem/50181448>

Reviewers: Bigcheese, arphaman

Subscribers: jkorous, dexonsmith, kristina, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61096
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/Unix/Program.inctrunk/lib/Support/Unix/Program.inc
Revision 359151 by rnk:
Mark new jitlink test XFAIL for windows
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.testtrunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.test
Revision 359149 by akhuang:
Recommitting r358783 and r358786 "[MS] Emit S_HEAPALLOCSITE debug info" with fixes for buildbot error (undefined assembler label).

Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.

Reviewers: rnk

Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D61083
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineFunction.htrunk/include/llvm/CodeGen/MachineFunction.h
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineInstr.htrunk/include/llvm/CodeGen/MachineInstr.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpptrunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.htrunk/lib/CodeGen/AsmPrinter/CodeViewDebug.h
The file was modified/llvm/trunk/lib/CodeGen/MachineFunction.cpptrunk/lib/CodeGen/MachineFunction.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineInstr.cpptrunk/lib/CodeGen/MachineInstr.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpptrunk/lib/CodeGen/SelectionDAG/FastISel.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86FastISel.cpptrunk/lib/Target/X86/X86FastISel.cpp
The file was added/llvm/trunk/test/CodeGen/X86/label-heapallocsite.lltrunk/test/CodeGen/X86/label-heapallocsite.ll
Revision 359147 by spatel:
[DAGCombiner] scale repeated FP divisor by splat factor

If we have a vector FP division with a splatted divisor, use the existing transform
that converts 'x/y' into 'x * (1.0/y)' to allow more conversions. This can then
potentially be converted into a scalar FP division by existing combines (rL358984)
as seen in the tests here.

That can be a potentially big perf difference if scalar fdiv has better timing
(including avoiding possible frequency throttling for vector ops).

Differential Revision: https://reviews.llvm.org/D61028
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/fdiv-combine-vec.lltrunk/test/CodeGen/X86/fdiv-combine-vec.ll
Revision 359146 by joerg:
[PowerPC] Allow using initial-exec TLS with PIC

Using initial-exec TLS variables is a reasonable performance
optimisation for system libraries. Use the correct PIC mechanism to get
hold of the GOT to avoid text relocations.

Differential Revision: https://reviews.llvm.org/D61026
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpptrunk/lib/Target/PowerPC/PPCISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.htrunk/lib/Target/PowerPC/PPCISelLowering.h
The file was modified/llvm/trunk/test/CodeGen/PowerPC/tls.lltrunk/test/CodeGen/PowerPC/tls.ll
Revision 359144 by sfertile:
Add period at end of comment.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpptrunk/lib/Target/PowerPC/PPCISelLowering.cpp
Revision 359143 by ctopper:
[X86] Attempt to fix use-after-poison from r359121.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
Revision 359139 by rampitec:
[AMDGPU] gfx1010 SOP instructions

Differential Revision: https://reviews.llvm.org/D61080
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SOPInstructions.tdtrunk/lib/Target/AMDGPU/SOPInstructions.td
The file was modified/llvm/trunk/test/MC/AMDGPU/out-of-range-registers.strunk/test/MC/AMDGPU/out-of-range-registers.s
The file was modified/llvm/trunk/test/MC/AMDGPU/sop1.strunk/test/MC/AMDGPU/sop1.s
The file was modified/llvm/trunk/test/MC/AMDGPU/sop2.strunk/test/MC/AMDGPU/sop2.s
The file was modified/llvm/trunk/test/MC/AMDGPU/sopc.strunk/test/MC/AMDGPU/sopc.s
The file was modified/llvm/trunk/test/MC/AMDGPU/sopk-err.strunk/test/MC/AMDGPU/sopk-err.s
The file was modified/llvm/trunk/test/MC/AMDGPU/sopk.strunk/test/MC/AMDGPU/sopk.s
The file was modified/llvm/trunk/test/MC/AMDGPU/sopp.strunk/test/MC/AMDGPU/sopp.s
Revision 359136 by abataev:
[SLP] Fix crash after r358519, by V. Porpodas.

Summary: The code did not check if operand was undef before casting it to Instruction.

Reviewers: RKSimon, ABataev, dtemirbulatov

Reviewed By: ABataev

Subscribers: uabelho

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61024
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpptrunk/lib/Transforms/Vectorize/SLPVectorizer.cpp
The file was added/llvm/trunk/test/Transforms/SLPVectorizer/X86/crash_reordering_undefs.lltrunk/test/Transforms/SLPVectorizer/X86/crash_reordering_undefs.ll
Revision 359135 by rnk:
Try once more to ensure constant initializaton of ManagedStatics

First, use the old style of linker initialization for MSVC 2019 in
addition to 2017. MSVC 2019 emits a dynamic initializer for
ManagedStatic when compiled in debug mode, and according to zturner,
also sometimes in release mode. I wasn't able to reproduce that, but it
seems best to stick with the old code that works.

When clang is using the MSVC STL, we have to give ManagedStatic a
constexpr constructor that fully zero initializes all fields, otherwise
it emits a dynamic initializer. The MSVC STL implementation of
std::atomic has a non-trivial (but constexpr) default constructor that
zero initializes the atomic value. Because one of the fields has a
non-trivial constructor, ManagedStatic ends up with a non-trivial ctor.
The ctor is not constexpr, so clang ends up emitting a dynamic
initializer, even though it simply does zero initialization. To make it
constexpr, we must initialize all fields of the ManagedStatic.

However, while the constructor that takes a pointer is marked constexpr,
clang says it does not evaluate to a constant because it contains a cast
from a pointer to an integer. I filed this as:
https://developercommunity.visualstudio.com/content/problem/545566/stdatomic-value-constructor-is-not-actually-conste.html

Once we do that, we can add back the
LLVM_REQUIRE_CONSTANT_INITIALIZATION marker, and so far as I'm aware it
compiles successfully on all supported targets.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/ManagedStatic.htrunk/include/llvm/Support/ManagedStatic.h
The file was modified/llvm/trunk/lib/Support/CommandLine.cpptrunk/lib/Support/CommandLine.cpp
Revision 359131 by davidxl:
Add optional arg to profile count getters to filter
synthetic profile count.

Differential Revision: http://reviews.llvm.org/D61025
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/BlockFrequencyInfo.htrunk/include/llvm/Analysis/BlockFrequencyInfo.h
The file was modified/llvm/trunk/include/llvm/Analysis/BlockFrequencyInfoImpl.htrunk/include/llvm/Analysis/BlockFrequencyInfoImpl.h
The file was modified/llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.htrunk/include/llvm/Analysis/ProfileSummaryInfo.h
The file was modified/llvm/trunk/include/llvm/IR/Function.htrunk/include/llvm/IR/Function.h
The file was modified/llvm/trunk/lib/Analysis/BlockFrequencyInfo.cpptrunk/lib/Analysis/BlockFrequencyInfo.cpp
The file was modified/llvm/trunk/lib/Analysis/BlockFrequencyInfoImpl.cpptrunk/lib/Analysis/BlockFrequencyInfoImpl.cpp
The file was modified/llvm/trunk/lib/Analysis/ProfileSummaryInfo.cpptrunk/lib/Analysis/ProfileSummaryInfo.cpp
The file was modified/llvm/trunk/lib/IR/Function.cpptrunk/lib/IR/Function.cpp
The file was modified/llvm/trunk/unittests/IR/MetadataTest.cpptrunk/unittests/IR/MetadataTest.cpp
Revision 359129 by ctopper:
[X86] Prevent folding a load into an AND if that AND is really a ZEXT_INREG that should use movzx.

This can save a 32-bit immediate move.

We would shrink the load and fold it if it was non-volatile, but that's trickier to check for.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/2008-09-29-VolatileBug.lltrunk/test/CodeGen/X86/2008-09-29-VolatileBug.ll
The file was modified/llvm/trunk/test/CodeGen/X86/fold-and-shift.lltrunk/test/CodeGen/X86/fold-and-shift.ll
Revision 359128 by nico:
llvm-cvtres: Remove a default argument. No behavior change.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-cvtres/llvm-cvtres.cpptrunk/tools/llvm-cvtres/llvm-cvtres.cpp
Revision 359127 by Adrian Prantl:
Revert using fcopyfile(3) to implement sys::fs::copy_file(Twine, int) on macOS

It turns out that I mesread the man page and fcopyfile(3) does not
actually support COPYFILE_CLONE for files.

<rdar://problem/50148757>
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/Path.cpptrunk/lib/Support/Path.cpp
The file was modified/llvm/trunk/lib/Support/Unix/Path.inctrunk/lib/Support/Unix/Path.inc
Revision 359122 by dblaikie:
DebugInfo: Emit only declarations (not whole definitions) of non-unit user defined types into type units

While this doesn't come up in reasonable cases currently (the only user
defined types not in type units are ones without linkage - which makes
for near-ODR violations, because it'd be a type with linkage referencing
a type without linkage - such a type can't be validly defined in more
than one TU, so arguably it shouldn't be in a type unit to begin with -
but it's a convenient way to demonstrate an issue that will become more
revalent with homed modular debug info type definitions - which also
don't need to be in type units but more legitimately so).

Precursor to the Clang change to de-type-unit (by omitting the
'identifier') types homed due to strong linkage vtables. (making that
change without this one would lead to major type duplication in type
units)
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpptrunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.htrunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpptrunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.htrunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpptrunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.htrunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
The file was added/llvm/trunk/test/DebugInfo/X86/tu-to-non-tu.lltrunk/test/DebugInfo/X86/tu-to-non-tu.ll
Revision 359121 by ctopper:
[X86] Remove dead nodes left after ReplaceAllUsesWith calls during address matching

ReplaceAllUsesWith doesn't remove the node that was replaced. So its left around in the graph messing up use counts on other nodes.

One thing to note, is that this isn't valid if the node being deleted is the root node of an LEA match that gets rejected. In that case the node needs to stay alive because the isel table walking code would still have a reference to it that its going to try to match next. I don't think that's the case here though because the nodes being deleted here should be "and", "srl", and "zero_extend" none of which can be the root node of an LEA match.

Differential Revision: https://reviews.llvm.org/D61048
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/fold-and-shift.lltrunk/test/CodeGen/X86/fold-and-shift.ll
The file was modified/llvm/trunk/test/CodeGen/X86/pr32329.lltrunk/test/CodeGen/X86/pr32329.ll
Revision 359117 by rampitec:
[AMDGPU] gfx1010 sgpr register changes

Differential Revision: https://reviews.llvm.org/D61045
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpptrunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegAsmNames.inc.cpptrunk/lib/Target/AMDGPU/AMDGPURegAsmNames.inc.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpptrunk/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.htrunk/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpptrunk/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIDefines.htrunk/lib/Target/AMDGPU/SIDefines.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpptrunk/lib/Target/AMDGPU/SIRegisterInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.tdtrunk/lib/Target/AMDGPU/SIRegisterInfo.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpptrunk/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp
The file was modified/llvm/trunk/test/MC/AMDGPU/sopp-err.strunk/test/MC/AMDGPU/sopp-err.s
Revision 359116 by rksimon:
[X86][SSE] Add tests for bitcasting vXi1 bool vectors to non-simple types.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/bitcast-vector-bool.lltrunk/test/CodeGen/X86/bitcast-vector-bool.ll
Revision 359115 by Lang Hames:
[JITLink] Add support for passing arguments to jit-linked code.

The --args option can now be used to pass arguments to code linked with
llvm-jitlink. E.g.

$ llvm-jitlink file1.o file2.o --args a b c

is equivalent to:

$ ld -o program file1.o file2.o
$ ./program a b c
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.cpptrunk/tools/llvm-jitlink/llvm-jitlink.cpp
Revision 359114 by codafi:
[LLVM-C] Deprecate the LLVMValueRef-returning metadata creation functions

Summary: There is still some value in using these functions while the remaining LLVMValueRef-based accessors are still around, but LLVMMDNodeInContext in particular has some wonky semantics that make it worth replacing outright.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60524
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm-c/Core.htrunk/include/llvm-c/Core.h
The file was modified/llvm/trunk/lib/IR/Core.cpptrunk/lib/IR/Core.cpp
Revision 359113 by rampitec:
[AMDGPU] Add gfx1010 target definitions

Differential Revision: https://reviews.llvm.org/D61041
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/BinaryFormat/ELF.htrunk/include/llvm/BinaryFormat/ELF.h
The file was modified/llvm/trunk/include/llvm/Support/AMDHSAKernelDescriptor.htrunk/include/llvm/Support/AMDHSAKernelDescriptor.h
The file was modified/llvm/trunk/include/llvm/Support/TargetParser.htrunk/include/llvm/Support/TargetParser.h
The file was modified/llvm/trunk/lib/ObjectYAML/ELFYAML.cpptrunk/lib/ObjectYAML/ELFYAML.cpp
The file was modified/llvm/trunk/lib/Support/TargetParser.cpptrunk/lib/Support/TargetParser.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPU.tdtrunk/lib/Target/AMDGPU/AMDGPU.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpptrunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.htrunk/lib/Target/AMDGPU/AMDGPUSubtarget.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/GCNProcessors.tdtrunk/lib/Target/AMDGPU/GCNProcessors.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpptrunk/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIDefines.htrunk/lib/Target/AMDGPU/SIDefines.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpptrunk/lib/Target/AMDGPU/SIInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.tdtrunk/lib/Target/AMDGPU/SIInstrInfo.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.tdtrunk/lib/Target/AMDGPU/SIRegisterInfo.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/SISchedule.tdtrunk/lib/Target/AMDGPU/SISchedule.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpptrunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.htrunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDKernelCodeTInfo.htrunk/lib/Target/AMDGPU/Utils/AMDKernelCodeTInfo.h
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/elf-header-flags-mach.lltrunk/test/CodeGen/AMDGPU/elf-header-flags-mach.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/hsa-note-no-func.lltrunk/test/CodeGen/AMDGPU/hsa-note-no-func.ll
The file was modified/llvm/trunk/tools/llvm-readobj/ELFDumper.cpptrunk/tools/llvm-readobj/ELFDumper.cpp
Revision 359111 by rksimon:
[InstCombine][X86] Use generic expansion of PACKSS/PACKUS for constant folding. NFCI.

This patch rewrites the existing PACKSS/PACKUS constant folding code to expand as a generic expansion.

This is a first NFCI step toward expanding PACKSS/PACKUS intrinsics which are acting as non-saturating truncations (although technically the expansion could be used in all cases - but we'll probably want to be conservative).
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
Revision 359110 by jfb:
Revert "[llvm-objdump] errorToErrorCode+message -> toString"

Revert r359100

It breaks llvm/test/Object/elf-invalid-phdr.test
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-objdump/ELFDump.cpptrunk/tools/llvm-objdump/ELFDump.cpp
Revision 359109 by nico:
llvm-undname: Fix assert-on->4GiB-string-literal, found by oss-fuzz
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/ms-string-literals.testtrunk/test/Demangle/ms-string-literals.test
Revision 359105 by Lang Hames:
[JITLink] Refer to FDE's CIE (not the most recent CIE) when parsing eh-frame.

Frame Descriptor Entries (FDEs) have a pointer back to a Common Information
Entry (CIE) that describes how the rest FDE should be parsed. JITLink had been
assuming that FDEs always referred to the most recent CIE encountered, but the
spec allows them to point back to any previously encountered CIE. This patch
fixes JITLink to look up the correct CIE for the FDE.

The testcase is a MachO binary with an FDE that refers to a CIE that is not the
one immediately proceeding it (the layout can be viewed wit
'dwarfdump --eh-frame <testcase>'. This test case had to be a binary as llvm-mc
now sorts FDEs (as of r356216) to ensure FDEs *do* point to the most recent CIE.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.htrunk/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/X86/Inputstrunk/test/ExecutionEngine/JITLink/X86/Inputs
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/X86/Inputs/MachO_x86-64_ehframe.otrunk/test/ExecutionEngine/JITLink/X86/Inputs/MachO_x86-64_ehframe.o
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.testtrunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_ehframe.test
The file was modified/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.strunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s
The file was modified/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.cpptrunk/tools/llvm-jitlink/llvm-jitlink.cpp
Revision 359102 by maskray:
[llvm-objdump] Delete redundant check
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpptrunk/tools/llvm-objdump/llvm-objdump.cpp
Revision 359101 by grimar:
[obj2yamp] - Simplify and cleanup the code in ELFDumper<ELFT>::dumpGroup a bit. NFC.

This makes the variables naming to match LLVM style,
simplifies the code used to extract the group members,
simplifies the loop and reorders the code around a bit.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/obj2yaml/elf2yaml.cpptrunk/tools/obj2yaml/elf2yaml.cpp
Revision 359100 by maskray:
[llvm-objdump] errorToErrorCode+message -> toString
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-objdump/ELFDump.cpptrunk/tools/llvm-objdump/ELFDump.cpp
Revision 359096 by dpreobra:
[AMDGPU][MC] Parser cleanup and refactoring

Reviewers: artem.tamazov, arsenm

Differential Revision: https://reviews.llvm.org/D60767
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
Revision 359095 by spatel:
[x86] make sure horizontal op and broadcast types match to simplify (PR41414)

If the types don't match, we can't just remove the shuffle.
There may be some other opportunity for optimization here,
but this should prevent the crashing seen in:
https://bugs.llvm.org/show_bug.cgi?id=41414
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/haddsub-3.lltrunk/test/CodeGen/X86/haddsub-3.ll
Revision 359093 by whitequark:
[LLVM-C] Use dyn_cast instead of unwrap in LLVMGetDebugLoc functions

Summary:
The `unwrap<Type>` calls can assert with:
```
Assertion failed: (isa<X>(Val) && "cast<Ty>() argument of incompatible type!"), function cast
```
so replace them with `dyn_cast`.

Reviewers: whitequark, abdulras, hiraditya, compnerd

Reviewed By: whitequark

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60473
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/IR/Core.cpptrunk/lib/IR/Core.cpp
Revision 359091 by maskray:
[yaml2obj] Replace num_zeros with write_zeros
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2coff.cpptrunk/tools/yaml2obj/yaml2coff.cpp
Revision 359090 by grimar:
[yaml2elf] - Replace a loop with write_zeros(). NFC.

And apply clang-format to the method changed.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 359088 by rksimon:
[X86] Add shouldFoldConstantShiftPairToMask override placeholder. NFCI.

Prep work toward fixing PR40758
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.htrunk/lib/Target/X86/X86ISelLowering.h
Revision 359083 by nico:
Let llvm-cvtres (and lld-link) report duplicate resources

If two .res files contain the same resource, cvtres.exe (and hence
link.exe) reject the input with this message:

    CVTRES : fatal error CVT1100: duplicate resource.  type:STRING, name:101, language:0x0409
    LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

llvm-cvtres (and lld-link) used to silently pick one of the duplicate
resources instead. This patch makes them report an error as well.
We slightly improve on cvtres by printing the name of two .res files
containing duplicate entries as well.

Differential Revision: https://reviews.llvm.org/D61049
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Object/WindowsResource.htrunk/include/llvm/Object/WindowsResource.h
The file was modified/llvm/trunk/lib/Object/WindowsResource.cpptrunk/lib/Object/WindowsResource.cpp
The file was added/llvm/trunk/test/tools/llvm-cvtres/Inputs/id.rctrunk/test/tools/llvm-cvtres/Inputs/id.rc
The file was added/llvm/trunk/test/tools/llvm-cvtres/Inputs/id.restrunk/test/tools/llvm-cvtres/Inputs/id.res
The file was added/llvm/trunk/test/tools/llvm-cvtres/Inputs/name.rctrunk/test/tools/llvm-cvtres/Inputs/name.rc
The file was added/llvm/trunk/test/tools/llvm-cvtres/Inputs/name.restrunk/test/tools/llvm-cvtres/Inputs/name.res
The file was added/llvm/trunk/test/tools/llvm-cvtres/duplicate.testtrunk/test/tools/llvm-cvtres/duplicate.test
Revision 359082 by rksimon:
[X86][SSE] Add masked bit test cases for PR26697
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/masked_store.lltrunk/test/CodeGen/X86/masked_store.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-pcmp.lltrunk/test/CodeGen/X86/vector-pcmp.ll
Revision 359072 by bjope:
Add "const" in GetUnderlyingObjects. NFC

Summary:
Both the input Value pointer and the returned Value
pointers in GetUnderlyingObjects are now declared as
const.

It turned out that all current (in-tree) uses of
GetUnderlyingObjects were trivial to update, being
satisfied with have those Value pointers declared
as const. Actually, in the past several of the users
had to use const_cast, just because of ValueTracking
not providing a version of GetUnderlyingObjects with
"const" Value pointers. With this patch we get rid
of those const casts.

Reviewers: hfinkel, materi, jkorous

Reviewed By: jkorous

Subscribers: dexonsmith, jkorous, jholewinski, sdardis, eraman, hiraditya, jrtc27, atanasyan, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61038
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/ValueTracking.htrunk/include/llvm/Analysis/ValueTracking.h
The file was modified/llvm/trunk/lib/Analysis/GlobalsModRef.cpptrunk/lib/Analysis/GlobalsModRef.cpp
The file was modified/llvm/trunk/lib/Analysis/InstructionSimplify.cpptrunk/lib/Analysis/InstructionSimplify.cpp
The file was modified/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpptrunk/lib/Analysis/LoopAccessAnalysis.cpp
The file was modified/llvm/trunk/lib/Analysis/ValueTracking.cpptrunk/lib/Analysis/ValueTracking.cpp
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpptrunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachinePipeliner.cpptrunk/lib/CodeGen/MachinePipeliner.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpptrunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
The file was modified/llvm/trunk/lib/Target/Mips/MipsDelaySlotFiller.cpptrunk/lib/Target/Mips/MipsDelaySlotFiller.cpp
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpptrunk/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpptrunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpptrunk/lib/Transforms/Scalar/DeadStoreElimination.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpptrunk/lib/Transforms/Utils/InlineFunction.cpp
Revision 359071 by ctopper:
[Mips][CodeGen] Remove MachineFunction::setSubtarget. Change Mips to just copy the subtarget from the MachineFunction instead of recalculating it.

Summary:
The MachineFunction should have been created with the correct subtarget. As
long as there is no way to change it, MipsTargetMachine can just capture it
directly from the MachineFunction without calling getSubtargetImpl again.

While there, const correct the Subtarget pointer to avoid a const_cast.

I believe the Mips16Subtarget and NoMips16Subtarget members are never used, but
I'll leave there removal for a separate patch.

Reviewers: echristo, atanasyan

Reviewed By: atanasyan

Subscribers: sdardis, arichardson, hiraditya, jrtc27, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60936
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineFunction.htrunk/include/llvm/CodeGen/MachineFunction.h
The file was modified/llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpptrunk/lib/Target/Mips/MipsTargetMachine.cpp
The file was modified/llvm/trunk/lib/Target/Mips/MipsTargetMachine.htrunk/lib/Target/Mips/MipsTargetMachine.h
Revision 359068 by maskray:
[CommandLine] Provide parser<unsigned long> instantiation to allow cl::opt<uint64_t> on LP64 platforms

Summary:
And migrate opt<unsigned long long> to opt<uint64_t>

Fixes PR19665

Differential Revision: https://reviews.llvm.org/D60933
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/CommandLine.htrunk/include/llvm/Support/CommandLine.h
The file was modified/llvm/trunk/lib/Support/CommandLine.cpptrunk/lib/Support/CommandLine.cpp
The file was modified/llvm/trunk/lib/Support/RandomNumberGenerator.cpptrunk/lib/Support/RandomNumberGenerator.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpptrunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/HWAddressSanitizer.cpptrunk/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpptrunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
The file was modified/llvm/trunk/tools/llvm-cfi-verify/lib/GraphBuilder.cpptrunk/tools/llvm-cfi-verify/lib/GraphBuilder.cpp
The file was modified/llvm/trunk/tools/llvm-cfi-verify/lib/GraphBuilder.htrunk/tools/llvm-cfi-verify/lib/GraphBuilder.h
The file was modified/llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpptrunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
The file was modified/llvm/trunk/tools/llvm-lto/llvm-lto.cpptrunk/tools/llvm-lto/llvm-lto.cpp
The file was modified/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpptrunk/tools/llvm-objdump/llvm-objdump.cpp
The file was modified/llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpptrunk/tools/llvm-rtdyld/llvm-rtdyld.cpp
The file was modified/llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpptrunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
Revision 359064 by nico:
llvm-cvtres: Accept /? as help flag, like cvtres.exe
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-cvtres/Opts.tdtrunk/tools/llvm-cvtres/Opts.td
Revision 359058 by nico:
gn build: Merge r359050 more
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/CodeGen/AsmPrinter/BUILD.gntrunk/utils/gn/secondary/llvm/lib/CodeGen/AsmPrinter/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/IR/BUILD.gntrunk/utils/gn/secondary/llvm/lib/IR/BUILD.gn
Revision 359056 by nico:
gn build: Merge r359050
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/Remarks/BUILD.gntrunk/utils/gn/secondary/llvm/lib/Remarks/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/Remarks/BUILD.gntrunk/utils/gn/secondary/llvm/unittests/Remarks/BUILD.gn
Revision 359055 by asbirlea:
Revert [AliasAnalysis] AAResults preserves AAManager.

Triggers use-after-free.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/AliasAnalysis.htrunk/include/llvm/Analysis/AliasAnalysis.h
The file was modified/llvm/trunk/lib/Analysis/AliasAnalysis.cpptrunk/lib/Analysis/AliasAnalysis.cpp
The file was modified/llvm/trunk/test/Analysis/MemoryDependenceAnalysis/invalidation.lltrunk/test/Analysis/MemoryDependenceAnalysis/invalidation.ll
The file was modified/llvm/trunk/test/Other/new-pass-manager.lltrunk/test/Other/new-pass-manager.ll
The file was modified/llvm/trunk/unittests/Transforms/Scalar/LoopPassManagerTest.cpptrunk/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
Revision 359053 by thegameg:
[Remarks] Fix documentation indentation

Fix the documentation bot:

http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/30450/steps/docs-llvm-html/logs/stdio
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CodeGenerator.rsttrunk/docs/CodeGenerator.rst
Revision 359050 by thegameg:
[Remarks] Add string deduplication using a string table

* Add support for uniquing strings in the remark streamer and emitting the string table in the remarks section.

* Add parsing support for the string table in the RemarkParser.

From this remark:

```
--- !Missed
Pass:     inline
Name:     NoDefinition
DebugLoc: { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c',
            Line: 7, Column: 3 }
Function: printArgsNoRet
Args:
  - Callee:   printf
  - String:   ' will not be inlined into '
  - Caller:   printArgsNoRet
    DebugLoc: { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c',
                Line: 6, Column: 0 }
  - String:   ' because its definition is unavailable'
...
```

to:

```
--- !Missed
Pass: 0
Name: 1
DebugLoc: { File: 3, Line: 7, Column: 3 }
Function: 2
Args:
  - Callee:   4
  - String:   5
  - Caller:   2
    DebugLoc: { File: 3, Line: 6, Column: 0 }
  - String:   6
...
```

And the string table in the .remarks/__remarks section containing:

```
inline\0NoDefinition\0printArgsNoRet\0
test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c\0printf\0
will not be inlined into \0 because its definition is unavailable\0
```

This is mostly supposed to be used for testing purposes, but it gives us
a 2x reduction in the remark size, and is an incremental change for the
updates to the remarks file format.

Differential Revision: https://reviews.llvm.org/D60227
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CodeGenerator.rsttrunk/docs/CodeGenerator.rst
The file was modified/llvm/trunk/include/llvm/IR/RemarkStreamer.htrunk/include/llvm/IR/RemarkStreamer.h
The file was modified/llvm/trunk/include/llvm/Remarks/RemarkParser.htrunk/include/llvm/Remarks/RemarkParser.h
The file was added/llvm/trunk/include/llvm/Remarks/RemarkStringTable.htrunk/include/llvm/Remarks/RemarkStringTable.h
The file was modified/llvm/trunk/include/llvm/Support/YAMLTraits.htrunk/include/llvm/Support/YAMLTraits.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpptrunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/LLVMBuild.txttrunk/lib/CodeGen/AsmPrinter/LLVMBuild.txt
The file was modified/llvm/trunk/lib/IR/DiagnosticInfo.cpptrunk/lib/IR/DiagnosticInfo.cpp
The file was modified/llvm/trunk/lib/IR/LLVMBuild.txttrunk/lib/IR/LLVMBuild.txt
The file was modified/llvm/trunk/lib/IR/RemarkStreamer.cpptrunk/lib/IR/RemarkStreamer.cpp
The file was modified/llvm/trunk/lib/Remarks/CMakeLists.txttrunk/lib/Remarks/CMakeLists.txt
The file was modified/llvm/trunk/lib/Remarks/RemarkParser.cpptrunk/lib/Remarks/RemarkParser.cpp
The file was added/llvm/trunk/lib/Remarks/RemarkStringTable.cpptrunk/lib/Remarks/RemarkStringTable.cpp
The file was modified/llvm/trunk/lib/Remarks/YAMLRemarkParser.cpptrunk/lib/Remarks/YAMLRemarkParser.cpp
The file was modified/llvm/trunk/lib/Remarks/YAMLRemarkParser.htrunk/lib/Remarks/YAMLRemarkParser.h
The file was modified/llvm/trunk/test/CodeGen/X86/remarks-section.lltrunk/test/CodeGen/X86/remarks-section.ll
The file was modified/llvm/trunk/unittests/Remarks/CMakeLists.txttrunk/unittests/Remarks/CMakeLists.txt
The file was added/llvm/trunk/unittests/Remarks/RemarksStrTabParsingTest.cpptrunk/unittests/Remarks/RemarksStrTabParsingTest.cpp
The file was modified/llvm/trunk/unittests/Remarks/YAMLRemarksParsingTest.cpptrunk/unittests/Remarks/YAMLRemarksParsingTest.cpp
Revision 359047 by cuviper:
[Lint] Permit aliasing noalias readonly arguments

Summary:
If two arguments are both readonly, then they have no memory dependency
that would violate noalias, even if they do actually overlap.

Reviewers: hfinkel, efriedma

Reviewed By: efriedma

Subscribers: efriedma, hiraditya, llvm-commits, tstellar

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60239
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/Lint.cpptrunk/lib/Analysis/Lint.cpp
The file was added/llvm/trunk/test/Analysis/Lint/noalias-readonly.lltrunk/test/Analysis/Lint/noalias-readonly.ll
Revision 359046 by paquette:
[AArch64][GlobalISel] Select G_INTRINSIC_ROUND

Add selection support for G_INTRINSIC_ROUND, add a selection test, and add
check lines to arm64-vfloatintrinsics.ll and f16-instructions.ll.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpptrunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-intrinsic-round.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-intrinsic-round.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.lltrunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.ll
The file was modified/llvm/trunk/test/CodeGen/AArch64/f16-instructions.lltrunk/test/CodeGen/AArch64/f16-instructions.ll
Revision 359044 by paquette:
[AArch64][GlobalISel] Mark G_INTRINSIC_ROUND as a pre-isel floating point opcode

Add G_INTRINSIC_ROUND to isPreISelGenericFloatingPointOpcode to ensure that its
input and output are assigned the correct register bank.

Add a regbankselect test to verify that we get what we expect here.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpptrunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/regbank-intrinsic-round.mirtrunk/test/CodeGen/AArch64/GlobalISel/regbank-intrinsic-round.mir
Revision 359043 by dmikulin:
The error message for mismatched value sites is very cryptic.
Make it more readable for an average user.

Differential Revision: https://reviews.llvm.org/D60896
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/profile/InstrProfData.incN/A
The file was modified/compiler-rt/trunk/lib/profile/InstrProfiling.hN/A
The file was modified/llvm/trunk/include/llvm/ProfileData/InstrProf.htrunk/include/llvm/ProfileData/InstrProf.h
The file was modified/llvm/trunk/include/llvm/ProfileData/InstrProfData.inctrunk/include/llvm/ProfileData/InstrProfData.inc
The file was modified/llvm/trunk/lib/ProfileData/InstrProfWriter.cpptrunk/lib/ProfileData/InstrProfWriter.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpptrunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
The file was added/llvm/trunk/test/Transforms/PGOProfile/Inputs/diag_no_value_sites.proftexttrunk/test/Transforms/PGOProfile/Inputs/diag_no_value_sites.proftext
The file was added/llvm/trunk/test/Transforms/PGOProfile/diag_no_value_sites.lltrunk/test/Transforms/PGOProfile/diag_no_value_sites.ll
Revision 359042 by xiaobai:
[CMake] Use add_dependencies in add_llvm_install_targets

Summary:
The CMake documentation says that the `DEPENDS` field of
add_custom_target is for files and output of custom commands. Adding a
dependency on a target should be done with `add_dependency`.

Differential Revision: https://reviews.llvm.org/D60879
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/cmake/modules/AddLLVM.cmaketrunk/cmake/modules/AddLLVM.cmake
Revision 359041 by thegameg:
[CGP] Look through bitcasts when duplicating returns for tail calls

The simple case of:

```
int *callee();
void *caller(void *a) {
  if (a == NULL)
    return callee();
  return a;
}
```

would generate a regular call instead of a tail call because we don't
look through the bitcast of the call to `callee` when duplicating the
return blocks.

Differential Revision: https://reviews.llvm.org/D60837
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/CodeGenPrepare.cpptrunk/lib/CodeGen/CodeGenPrepare.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/tailcall-cgp-dup.lltrunk/test/CodeGen/X86/tailcall-cgp-dup.ll
Revision 359040 by thegameg:
[X86] Add codegen prepare test exercising a bitcast + tail call

In preparation of https://reviews.llvm.org/D60837, add this test where
we don't perform a tail call because we don't look through a bitcast.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/tailcall-cgp-dup.lltrunk/test/CodeGen/X86/tailcall-cgp-dup.ll
Revision 359038 by aheejin:
[WebAssembly] Emit br_table for most switch instructions

Summary:
Always convert switches to br_tables unless there is only one case,
which is equivalent to a simple branch. This reduces code size for wasm,
and we defer possible jump table optimizations to the VM.
Addresses PR41502.

Reviewers: kripken, sunfish

Subscribers: dschuff, sbc100, jgravelle-google, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60966
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpptrunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/cfg-stackify.lltrunk/test/CodeGen/WebAssembly/cfg-stackify.ll
Revision 359036 by aheejin:
[WebAssembly] Make LBB markers not affected by test order

Summary:
This way we can change the order of tests or delete some of them without
affecting tests for other functions.

Reviewers: tlively

Subscribers: sunfish, dschuff, sbc100, jgravelle-google, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60929
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/cfg-stackify.lltrunk/test/CodeGen/WebAssembly/cfg-stackify.ll
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/phi.lltrunk/test/CodeGen/WebAssembly/phi.ll
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/reg-stackify.lltrunk/test/CodeGen/WebAssembly/reg-stackify.ll
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/switch.lltrunk/test/CodeGen/WebAssembly/switch.ll
Revision 359034 by akhuang:
Revert "[MS] Emit S_HEAPALLOCSITE debug info" because of ToTWin64(db)
buildbot failure.

This reverts commit d07d6d617713bececf57f3547434dd52f0f13f9e and
c774f687b6880484a126ed3e3d737e74c926f0ae.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGDebugInfo.cppN/A
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineFunction.htrunk/include/llvm/CodeGen/MachineFunction.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpptrunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.htrunk/lib/CodeGen/AsmPrinter/CodeViewDebug.h
The file was modified/llvm/trunk/lib/CodeGen/MachineFunction.cpptrunk/lib/CodeGen/MachineFunction.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpptrunk/lib/CodeGen/SelectionDAG/FastISel.cpp
The file was removed/llvm/trunk/test/CodeGen/X86/label-heapallocsite.lltrunk/test/CodeGen/X86/label-heapallocsite.ll
Revision 359033 by paquette:
[AArch64][GlobalISel] Legalize G_INTRINSIC_ROUND

Add it to the same rule as G_FCEIL etc. Add a legalizer test, and add a missing
switch case to AArch64LegalizerInfo.cpp.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-intrinsic-round.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-intrinsic-round.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
Revision 359032 by asbirlea:
[MemorySSA] LCSSA preserves MemorySSA.

Summary:
Enabling MemorySSA in the old pass manager leads to MemorySSA being run
twice due to the fact that LCSSA and LoopSimplify do not preserve
MemorySSA. This is the first step to address that: target LCSSA.

LCSSA does not make any changes that invalidate MemorySSA, so it
preserves it by design. It must preserve AA as well, for this to hold.

After this patch, MemorySSA is still run twice in the old pass manager.
Step two follows: target LoopSimplify.

Subscribers: mehdi_amini, jlebar, Prazek, llvm-commits, george.burgess.iv, chandlerc

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60832
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.htrunk/include/llvm/Analysis/LoopAnalysisManager.h
The file was modified/llvm/trunk/include/llvm/Analysis/MemorySSA.htrunk/include/llvm/Analysis/MemorySSA.h
The file was modified/llvm/trunk/lib/Analysis/LoopAnalysisManager.cpptrunk/lib/Analysis/LoopAnalysisManager.cpp
The file was modified/llvm/trunk/lib/Analysis/MemorySSA.cpptrunk/lib/Analysis/MemorySSA.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/LCSSA.cpptrunk/lib/Transforms/Utils/LCSSA.cpp
Revision 359031 by ctopper:
[X86] Autogenerate complete checks. NFC

Prep for D60993
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/lsr-static-addr.lltrunk/test/CodeGen/X86/lsr-static-addr.ll
Revision 359030 by paquette:
[AArch64][GlobalISel] Actually select G_INTRINSIC_TRUNC

Apparently FileCheck wasn't actually matching the fallback check lines in
arm64-vfloatintrinsics.ll properly. So, there were selection fallbacks for
G_INTRINSIC_TRUNC there.

Actually hook it up into AArch64InstructionSelector.cpp and write a proper
selection test.

I guess I'll figure out the FileCheck magic to make the fallback checks work
properly in arm64-vfloatintrinsics.ll.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpptrunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-intrinsic-trunc.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-intrinsic-trunc.mir
Revision 359027 by ahatanak:
[ObjC][ARC] Check the basic block size before calling
DominatorTree::dominate.

ARC contract pass has an optimization that replaces the uses of the
argument of an ObjC runtime function call with the call result.

For example:

; Before optimization
%1 = tail call i8* @foo1()
%2 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %1)
store i8* %1, i8** @g0, align 8

; After optimization
%1 = tail call i8* @foo1()
%2 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %1)
store i8* %2, i8** @g0, align 8 // %1 is replaced with %2

Before replacing the argument use, DominatorTree::dominate is called to
determine whether the user instruction is dominated by the ObjC runtime
function call instruction. The call to DominatorTree::dominate can be
expensive if the two instructions belong to the same basic block and the
size of the basic block is large. This patch checks the basic block size
and just bails out if the size exceeds the limit set by command line
option "arc-contract-max-bb-size".

rdar://problem/49477063

Differential Revision: https://reviews.llvm.org/D60900
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/ObjCARC/ObjCARCContract.cpptrunk/lib/Transforms/ObjCARC/ObjCARCContract.cpp
The file was added/llvm/trunk/test/Transforms/ObjCARC/contract-max-bb-size.lltrunk/test/Transforms/ObjCARC/contract-max-bb-size.ll
Revision 359026 by dblaikie:
Reapply: "DebugInfo: Emit only one kind of accelerated access/name table""

Originally committed in r358931
Reverted in r358997

Seems this change made Apple accelerator tables miss names (because
names started respecting the CU NameTableKind GNU & assuming that
shouldn't produce accelerated names too), which is never correct (apple
accelerator tables don't have separators or CU lists - if present, they
must describe all names in all CUs).

Original Description:
Currently to opt in to debug_names in DWARFv5, the IR must contain
'nameTableKind: Default' which also enables debug_pubnames.

Instead, only allow one of {debug_names, apple_names, debug_pubnames,
debug_gnu_pubnames}.

nameTableKind: Default gives debug_names in DWARFv5 and greater,
debug_pubnames in v4 and earlier - and apple_names when tuning for lldb
on MachO.
nameTableKind: GNU always gives gnu_pubnames
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AccelTable.cpptrunk/lib/CodeGen/AsmPrinter/AccelTable.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpptrunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpptrunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modified/llvm/trunk/test/DebugInfo/X86/accel-tables.lltrunk/test/DebugInfo/X86/accel-tables.ll
The file was added/llvm/trunk/test/DebugInfo/X86/gnu-names.lltrunk/test/DebugInfo/X86/gnu-names.ll
Revision 359025 by tejohnson:
[ThinLTO] Pass down opt level to LTO backend and handle -O0 LTO in new PM

Summary:
The opt level was not being passed down to the ThinLTO backend when
invoked via clang (for distributed ThinLTO).

This exposed an issue where the new PM was asserting if the Thin or
regular LTO backend pipelines were invoked with -O0 (not a new issue,
could be provoked by invoking in-process *LTO backends via linker using
new PM and -O0). Fix this similar to the old PM where -O0 only does the
necessary lowering of type metadata (WPD and LowerTypeTest passes) and
then quits, rather than asserting.

Reviewers: xur

Subscribers: mehdi_amini, inglorion, eraman, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits, pcc

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D61022
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/BackendUtil.cppN/A
The file was modified/cfe/trunk/test/CodeGen/thinlto-debug-pm.cN/A
The file was modified/cfe/trunk/test/CodeGen/thinlto-distributed-cfi-devirt.llN/A
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/test/tools/gold/X86/opt-level.lltrunk/test/tools/gold/X86/opt-level.ll
Revision 359024 by nico:
llvm-cvtres: Split addChild(ID) into two functions

Before, there was an IsData parameter. Now, there are two different
functions for data nodes and ID nodes. No behavior change, needed for a
follow-up change to make two data nodes (but not two ID nodes) with the
same ID an error.

For consistency, rename another addChild() overload to addNameChild().
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Object/WindowsResource.htrunk/include/llvm/Object/WindowsResource.h
The file was modified/llvm/trunk/lib/Object/WindowsResource.cpptrunk/lib/Object/WindowsResource.cpp
Revision 359022 by paquette:
[AArch64][GlobalISel] Teach regbankselect about G_INTRINSIC_TRUNC

Add it to isPreISelGenericFloatingPointOpcode, and add a regbankselect test.

Update arm64-vfloatintrinsics.ll now that we can select it.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpptrunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/regbank-intrinsic-trunc.mirtrunk/test/CodeGen/AArch64/GlobalISel/regbank-intrinsic-trunc.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.lltrunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.ll
Revision 359021 by paquette:
[AArch64][GlobalISel] Legalize G_INTRINSIC_TRUNC

Same patch as G_FCEIL etc.

Add the missing switch case in widenScalar, add G_INTRINSIC_TRUNC to the correct
rule in AArch64LegalizerInfo.cpp, and add a test.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-intrinsic-trunc.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-intrinsic-trunc.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
Revision 359019 by nikic:
[ConstantRange] Add urem support

Add urem support to ConstantRange, so we can handle in in LVI. This
is an approximate implementation that tries to capture the most useful
conditions: If the LHS is always strictly smaller than the RHS, then
the urem is a no-op and the result is the same as the LHS range.
Otherwise the lower bound is zero and the upper bound is
min(LHSMax, RHSMax - 1).

Differential Revision: https://reviews.llvm.org/D60952
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 359018 by nikic:
[ConstantRangeTest] Move helper methods; NFC

Move Test(Unsigned|Signed)BinOpExhaustive() towards the top of the
file, so they're easier to reuse.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 359017 by rampitec:
[AMDGPU] Fixed addReg() in SIOptimizeExecMaskingPreRA.cpp

The second argument is flags, not subreg.

Differential Revision: https://reviews.llvm.org/D61031
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpptrunk/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/optimize-negated-cond-exec-masking.mirtrunk/test/CodeGen/AMDGPU/optimize-negated-cond-exec-masking.mir
Revision 359015 by paquette:
[AArch64][GlobalISel] Legalize G_FMA for more vector types

Same as G_FCEIL, G_FABS, etc. Just move it into that rule.

Add a legalizer test for G_FMA, which we didn't have before and update
arm64-vfloatintrinsics.ll.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-fma.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-fma.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.lltrunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.ll
Revision 359014 by asbirlea:
[AliasAnalysis] AAResults preserves AAManager.

Summary:
AAResults should not invalidate AAManager.
Update tests.

Reviewers: chandlerc

Subscribers: mehdi_amini, jlebar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60914
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/AliasAnalysis.htrunk/include/llvm/Analysis/AliasAnalysis.h
The file was modified/llvm/trunk/lib/Analysis/AliasAnalysis.cpptrunk/lib/Analysis/AliasAnalysis.cpp
The file was modified/llvm/trunk/test/Analysis/MemoryDependenceAnalysis/invalidation.lltrunk/test/Analysis/MemoryDependenceAnalysis/invalidation.ll
The file was modified/llvm/trunk/test/Other/new-pass-manager.lltrunk/test/Other/new-pass-manager.ll
The file was modified/llvm/trunk/unittests/Transforms/Scalar/LoopPassManagerTest.cpptrunk/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
Revision 359013 by paquette:
[AArch64][GlobalISel] Add G_FMA to isPreISelGenericFloatingPointOpcode

Noticed an unnecessary fallback in arm64-vmul caused by this.

Also add a regbankselect test for G_FMA.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpptrunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/regbank-fma.mirtrunk/test/CodeGen/AArch64/GlobalISel/regbank-fma.mir
Revision 359012 by jdenny:
[APSInt][OpenMP] Fix isNegative, etc. for unsigned types

Without this patch, APSInt inherits APInt::isNegative, which merely
checks the sign bit without regard to whether the type is actually
signed.  isNonNegative and isStrictlyPositive call isNegative and so
are also affected.

This patch adjusts APSInt to override isNegative, isNonNegative, and
isStrictlyPositive with implementations that consider whether the type
is signed.

A large set of Clang OpenMP tests are affected.  Without this patch,
these tests assume that `true` is not a valid argument for clauses
like `collapse`.  Indeed, `true` fails APInt::isStrictlyPositive but
not APSInt::isStrictlyPositive.  This patch adjusts those tests to
assume `true` should be accepted.

This patch also adds tests revealing various other similar fixes due
to APSInt::isNegative calls in Clang's ExprConstant.cpp and
SemaExpr.cpp: `++` and `--` overflow in `constexpr`, evaluated object
size based on `alloc_size`, `<<` and `>>` shift count validation, and
OpenMP array section validation.

Reviewed By: lebedev.ri, ABataev, hfinkel

Differential Revision: https://reviews.llvm.org/D59712
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/CodeGen/alloc-size.cN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_parallel_for_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/distribute_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/for_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/for_ordered_clause.cppN/A
The file was modified/cfe/trunk/test/OpenMP/for_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/for_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/for_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/parallel_for_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/parallel_for_ordered_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/parallel_for_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/parallel_for_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/parallel_for_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_ordered_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_simd_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_simd_ordered_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_for_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_parallel_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_simd_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/target_teams_map_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/taskloop_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/taskloop_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/taskloop_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/taskloop_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_simd_collapse_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_simd_safelen_messages.cppN/A
The file was modified/cfe/trunk/test/OpenMP/teams_distribute_simd_simdlen_messages.cppN/A
The file was modified/cfe/trunk/test/Sema/shift.cN/A
The file was added/cfe/trunk/test/SemaCXX/constexpr-unsigned-high-bit.cppN/A
The file was modified/llvm/trunk/include/llvm/ADT/APSInt.htrunk/include/llvm/ADT/APSInt.h
The file was modified/llvm/trunk/unittests/ADT/APSIntTest.cpptrunk/unittests/ADT/APSIntTest.cpp
Revision 359010 by Adrian Prantl:
[dsymutil] Put Swift interface files into a per-arch subdirectory.

This was meant to be part of the original commit r358921, but somehow
got lost.

<rdar://problem/49751748>
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/dsymutil/X86/swift-interface.testtrunk/test/tools/dsymutil/X86/swift-interface.test
The file was modified/llvm/trunk/tools/dsymutil/DwarfLinker.cpptrunk/tools/dsymutil/DwarfLinker.cpp
Revision 359008 by spatel:
[x86] fix test checks for fdiv combine; NFC

Must have picked up some transient code changes when originally generating this.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/fdiv-combine-vec.lltrunk/test/CodeGen/X86/fdiv-combine-vec.ll
Revision 359007 by nico:
llvm-undname: Support demangling the spaceship operator

Also add a test for demanling the co_await operator.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Demangle/MicrosoftDemangleNodes.htrunk/include/llvm/Demangle/MicrosoftDemangleNodes.h
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangleNodes.cpptrunk/lib/Demangle/MicrosoftDemangleNodes.cpp
The file was added/llvm/trunk/test/Demangle/ms-cxx20.testtrunk/test/Demangle/ms-cxx20.test
Revision 359006 by spatel:
[x86] add tests for vector fdiv with splat divisor; NFC
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/fdiv-combine-vec.lltrunk/test/CodeGen/X86/fdiv-combine-vec.ll
Revision 359003 by Adrian Prantl:
[dsymutil] Fix use-after-free when sys::path::append grows the buffer.

<rdar://problem/50117620>
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cpptrunk/tools/dsymutil/dsymutil.cpp
Revision 359002 by Adrian Prantl:
Revert "[dsymutil] Fix use-after-free when sys::path::append grows the buffer."
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cpptrunk/tools/dsymutil/dsymutil.cpp
Revision 359001 by Adrian Prantl:
[dsymutil] Fix use-after-free when sys::path::append grows the buffer.

<rdar://problem/50117620>
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cpptrunk/tools/dsymutil/dsymutil.cpp
Revision 359000 by reames:
[InstCombine] Convert a masked.load of a dereferenceable address to an unconditional load

If we have a masked.load from a location we know to be dereferenceable, we can simply issue a speculative unconditional load against that address. The key advantage is that it produces IR which is well understood by the optimizer. The select (cnd, load, passthrough) form produced should be pattern matchable back to hardware predication if profitable.

Differential Revision: https://reviews.llvm.org/D59703
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
The file was modified/llvm/trunk/test/Transforms/InstCombine/masked_intrinsics.lltrunk/test/Transforms/InstCombine/masked_intrinsics.ll
Revision 358999 by spatel:
[x86] use psubus for more vsetcc lowering (PR39859)

Circling back to a leftover bit from PR39859:
https://bugs.llvm.org/show_bug.cgi?id=39859#c1

...we have this counter-intuitive (based on the test diffs) opportunity to use 'psubus'.
This appears to be the better perf option for both Haswell and Jaguar based on llvm-mca.
We already do this transform for the SETULT predicate, so this makes the code more
symmetrical too. If we have pminub/pminuw, we prefer those, so this should not affect
anything but pre-SSE4.1 subtargets.

  $ cat before.s
movdqa -16(%rip), %xmm2    ## xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768]
pxor %xmm0, %xmm2
pcmpgtw -32(%rip), %xmm2 ## xmm2 = [255,255,255,255,255,255,255,255]
pand %xmm2, %xmm0
pandn %xmm1, %xmm2
por %xmm2, %xmm0

  $ cat after.s
movdqa -16(%rip), %xmm2    ## xmm2 = [256,256,256,256,256,256,256,256]
psubusw %xmm0, %xmm2
pxor %xmm3, %xmm3
pcmpeqw %xmm2, %xmm3
pand %xmm3, %xmm0
pandn %xmm1, %xmm3
por %xmm3, %xmm0

  $ llvm-mca before.s -mcpu=haswell
  Iterations:        100
  Instructions:      600
  Total Cycles:      909
  Total uOps:        700

  Dispatch Width:    4
  uOps Per Cycle:    0.77
  IPC:               0.66
  Block RThroughput: 1.8

  $ llvm-mca after.s -mcpu=haswell
  Iterations:        100
  Instructions:      700
  Total Cycles:      409
  Total uOps:        700

  Dispatch Width:    4
  uOps Per Cycle:    1.71
  IPC:               1.71
  Block RThroughput: 1.8

Differential Revision: https://reviews.llvm.org/D60838
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vec_setcc-2.lltrunk/test/CodeGen/X86/vec_setcc-2.ll
Revision 358998 by joerg:
[SPARC] Use the correct register set for the "r" asm constraint.

64bit mode must use 64bit registers, otherwise assumptions about the top
half of the registers are made. Problem found by Takeshi Nakayama in
NetBSD.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpptrunk/lib/Target/Sparc/SparcISelLowering.cpp
The file was added/llvm/trunk/test/CodeGen/SPARC/reg64.lltrunk/test/CodeGen/SPARC/reg64.ll
Revision 358997 by dblaikie:
Revert "DebugInfo: Emit only one kind of accelerated access/name table"

Regresses some apple_names situations - still investigating.

This reverts commit r358931.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AccelTable.cpptrunk/lib/CodeGen/AsmPrinter/AccelTable.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpptrunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpptrunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modified/llvm/trunk/test/DebugInfo/X86/accel-tables.lltrunk/test/DebugInfo/X86/accel-tables.ll
The file was removed/llvm/trunk/test/DebugInfo/X86/gnu-names.lltrunk/test/DebugInfo/X86/gnu-names.ll
Revision 358996 by maskray:
Use llvm::stable_sort

While touching the code, simplify if feasible.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ProfileData/GCOV.htrunk/include/llvm/ProfileData/GCOV.h
The file was modified/llvm/trunk/include/llvm/ProfileData/SampleProf.htrunk/include/llvm/ProfileData/SampleProf.h
The file was modified/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpptrunk/lib/Analysis/LoopAccessAnalysis.cpp
The file was modified/llvm/trunk/lib/Analysis/ScalarEvolution.cpptrunk/lib/Analysis/ScalarEvolution.cpp
The file was modified/llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpptrunk/lib/Analysis/ScalarEvolutionExpander.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AccelTable.cpptrunk/lib/CodeGen/AsmPrinter/AccelTable.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpptrunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpptrunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modified/llvm/trunk/lib/CodeGen/GlobalMerge.cpptrunk/lib/CodeGen/GlobalMerge.cpp
The file was modified/llvm/trunk/lib/CodeGen/IfConversion.cpptrunk/lib/CodeGen/IfConversion.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpptrunk/lib/CodeGen/MachineBlockPlacement.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineOutliner.cpptrunk/lib/CodeGen/MachineOutliner.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachinePipeliner.cpptrunk/lib/CodeGen/MachinePipeliner.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineSink.cpptrunk/lib/CodeGen/MachineSink.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpptrunk/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
The file was modified/llvm/trunk/lib/CodeGen/StackColoring.cpptrunk/lib/CodeGen/StackColoring.cpp
The file was modified/llvm/trunk/lib/CodeGen/StackSlotColoring.cpptrunk/lib/CodeGen/StackSlotColoring.cpp
The file was modified/llvm/trunk/lib/DebugInfo/PDB/Native/GSIStreamBuilder.cpptrunk/lib/DebugInfo/PDB/Native/GSIStreamBuilder.cpp
The file was modified/llvm/trunk/lib/IR/MDBuilder.cpptrunk/lib/IR/MDBuilder.cpp
The file was modified/llvm/trunk/lib/IR/Metadata.cpptrunk/lib/IR/Metadata.cpp
The file was modified/llvm/trunk/lib/MC/MCDwarf.cpptrunk/lib/MC/MCDwarf.cpp
The file was modified/llvm/trunk/lib/MC/WasmObjectWriter.cpptrunk/lib/MC/WasmObjectWriter.cpp
The file was modified/llvm/trunk/lib/ProfileData/Coverage/CoverageMappingWriter.cpptrunk/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
The file was modified/llvm/trunk/lib/ProfileData/GCOV.cpptrunk/lib/ProfileData/GCOV.cpp
The file was modified/llvm/trunk/lib/ProfileData/SampleProfWriter.cpptrunk/lib/ProfileData/SampleProfWriter.cpp
The file was modified/llvm/trunk/lib/Support/Statistic.cpptrunk/lib/Support/Statistic.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86FrameLowering.cpptrunk/lib/Target/X86/X86FrameLowering.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpptrunk/lib/Transforms/IPO/LowerTypeTests.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/MergeFunctions.cpptrunk/lib/Transforms/IPO/MergeFunctions.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/CFGMST.htrunk/lib/Transforms/Instrumentation/CFGMST.h
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/ControlHeightReduction.cpptrunk/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/MaximumSpanningTree.htrunk/lib/Transforms/Instrumentation/MaximumSpanningTree.h
The file was modified/llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpptrunk/lib/Transforms/Scalar/ConstantHoisting.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpptrunk/lib/Transforms/Scalar/GVNHoist.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/GVNSink.cpptrunk/lib/Transforms/Scalar/GVNSink.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopSink.cpptrunk/lib/Transforms/Scalar/LoopSink.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/Reassociate.cpptrunk/lib/Transforms/Scalar/Reassociate.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/SimpleLoopUnswitch.cpptrunk/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/ASanStackFrameLayout.cpptrunk/lib/Transforms/Utils/ASanStackFrameLayout.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpptrunk/lib/Transforms/Utils/PredicateInfo.cpp
The file was modified/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpptrunk/lib/Transforms/Vectorize/SLPVectorizer.cpp
The file was modified/llvm/trunk/lib/XRay/Trace.cpptrunk/lib/XRay/Trace.cpp
The file was modified/llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpptrunk/utils/TableGen/AsmMatcherEmitter.cpp
The file was modified/llvm/trunk/utils/TableGen/CodeGenRegisters.cpptrunk/utils/TableGen/CodeGenRegisters.cpp
The file was modified/llvm/trunk/utils/TableGen/GlobalISelEmitter.cpptrunk/utils/TableGen/GlobalISelEmitter.cpp
The file was modified/llvm/trunk/utils/TableGen/RISCVCompressInstEmitter.cpptrunk/utils/TableGen/RISCVCompressInstEmitter.cpp
Revision 358994 by lewis-revill:
[RISCV] Support assembling %tls_{ie,gd}_pcrel_hi modifiers

This patch adds support for parsing and assembling the %tls_ie_pcrel_hi
and %tls_gd_pcrel_hi modifiers.

Differential Revision: https://reviews.llvm.org/D55342
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpptrunk/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpptrunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.htrunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVELFObjectWriter.cpptrunk/lib/Target/RISCV/MCTargetDesc/RISCVELFObjectWriter.cpp
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVFixupKinds.htrunk/lib/Target/RISCV/MCTargetDesc/RISCVFixupKinds.h
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpptrunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCExpr.cpptrunk/lib/Target/RISCV/MCTargetDesc/RISCVMCExpr.cpp
The file was modified/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCExpr.htrunk/lib/Target/RISCV/MCTargetDesc/RISCVMCExpr.h
The file was modified/llvm/trunk/test/MC/RISCV/relocations.strunk/test/MC/RISCV/relocations.s
The file was modified/llvm/trunk/test/MC/RISCV/rv32i-invalid.strunk/test/MC/RISCV/rv32i-invalid.s
Revision 358993 by nico:
gn build: Merge r358944
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/lib/StaticAnalyzer/Checkers/BUILD.gntrunk/utils/gn/secondary/clang/lib/StaticAnalyzer/Checkers/BUILD.gn
Revision 358992 by scott.linder:
[AMDGPU] Fix hidden argument metadata duplication for V3

Essentially complete a proper rebase of the V3 metadata change over
https://reviews.llvm.org/D49096.

Minimize the diff between the V2 and V3 variants of the relevant lit
tests, and clean up some trailing whitespace.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpptrunk/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp
The file was removed/llvm/trunk/test/CodeGen/AMDGPU/hsa-metadata-enqueu-kernel-v3.lltrunk/test/CodeGen/AMDGPU/hsa-metadata-enqueu-kernel-v3.ll
The file was added/llvm/trunk/test/CodeGen/AMDGPU/hsa-metadata-enqueue-kernel-v3.lltrunk/test/CodeGen/AMDGPU/hsa-metadata-enqueue-kernel-v3.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full-v3.lltrunk/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full-v3.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.lltrunk/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/hsa-metadata-hidden-args-v3.lltrunk/test/CodeGen/AMDGPU/hsa-metadata-hidden-args-v3.ll
Revision 358991 by nico:
gn build: Merge r358949
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/lib/Driver/BUILD.gntrunk/utils/gn/secondary/clang/lib/Driver/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang/lib/Headers/BUILD.gntrunk/utils/gn/secondary/clang/lib/Headers/BUILD.gn
Revision 358989 by rksimon:
[X86] Pull out collectConcatOps helper. NFCI.

Create collectConcatOps helper that returns all the subvector ops for CONCAT_VECTORS or a INSERT_SUBVECTOR series.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
Revision 358987 by Tim Northover:
ARM: disallow add/sub to sp unless Rn is also sp.

The manual says that Thumb2 add/sub instructions are only allowed to modify sp
if the first source is also sp. This is slightly different from the usual rGPR
restriction since it's context-sensitive, so implement it in C++.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpptrunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpptrunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
The file was added/llvm/trunk/test/MC/ARM/invalid-addsub.strunk/test/MC/ARM/invalid-addsub.s
The file was modified/llvm/trunk/test/MC/Disassembler/ARM/invalid-thumbv7.txttrunk/test/MC/Disassembler/ARM/invalid-thumbv7.txt
Revision 358986 by lebedevri:
[Docs] ReleaseNotes: fixup markup in memcmp()->bcmp() entry
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/ReleaseNotes.rsttrunk/docs/ReleaseNotes.rst
Revision 358984 by spatel:
[DAGCombiner] generalize binop-of-splats scalarization

If we only match build vectors, we can miss some patterns
that use shuffles as seen in the affected tests.

Note that the underlying calls within getSplatSourceVector()
have the potential for compile-time explosion because of
exponential recursion looking through binop opcodes, but
currently the list of supported opcodes is very limited.
Both of those problems should be addressed in follow-up
patches.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/scalarize-fp.lltrunk/test/CodeGen/X86/scalarize-fp.ll
Revision 358983 by nha:
AMDGPU: Fix LCSSA phi lowering in SILowerI1Copies

Summary:
When an LCSSA phi survives through instruction selection, the pass
ends up removing that phi entirely because it is dominated by the
logic that does the lanemask merging.

This then used to trigger an assertion when processing a dependent
phi instruction.

Change-Id: Id4949719f8298062fe476a25718acccc109113b6

Reviewers: llvm-commits

Subscribers: kzhuravl, jvesely, wdng, yaxunl, t-tye, tpr, dstuttard, rtaylor, arsenm

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60999
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SILowerI1Copies.cpptrunk/lib/Target/AMDGPU/SILowerI1Copies.cpp
The file was added/llvm/trunk/test/CodeGen/AMDGPU/si-lower-i1-copies.mirtrunk/test/CodeGen/AMDGPU/si-lower-i1-copies.mir
Revision 358982 by fedor.sergeev:
[CallSite removal] move InlineCost to CallBase usage

Converting InlineCost interface and its internals into CallBase usage.
Inliners themselves are still not converted.

Reviewed By: reames
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60636
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/InlineCost.htrunk/include/llvm/Analysis/InlineCost.h
The file was modified/llvm/trunk/lib/Analysis/InlineCost.cpptrunk/lib/Analysis/InlineCost.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUInline.cpptrunk/lib/Target/AMDGPU/AMDGPUInline.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/InlineSimple.cpptrunk/lib/Transforms/IPO/InlineSimple.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/Inliner.cpptrunk/lib/Transforms/IPO/Inliner.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PartialInlining.cpptrunk/lib/Transforms/IPO/PartialInlining.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/SampleProfile.cpptrunk/lib/Transforms/IPO/SampleProfile.cpp
Revision 358978 by aaronballman:
Removing the explicit specifier from some default constructors; NFC.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/JSON.htrunk/include/llvm/Support/JSON.h
Revision 358977 by dmgreen:
[ARM] Update check for CBZ in Ifcvt

The check for creating CBZ in constant island pass recently obtained the
ability to search backwards to find a Cmp instruction. The code in IfCvt should
mirror this to allow more conversions to the smaller form. The common code has
been pulled out into a separate function to be shared between the two places.

Differential Revision: https://reviews.llvm.org/D60090
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpptrunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.htrunk/lib/Target/ARM/ARMBaseInstrInfo.h
The file was modified/llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpptrunk/lib/Target/ARM/ARMConstantIslandPass.cpp
The file was added/llvm/trunk/test/CodeGen/Thumb2/ifcvt-cbz.mirtrunk/test/CodeGen/Thumb2/ifcvt-cbz.mir
Revision 358974 by dmgreen:
[ARM] Don't replicate instructions in Ifcvt at minsize

Ifcvt can replicate instructions as it converts them to be predicated. This
stops that from happening on thumb2 targets at minsize where an extra IT
instruction is likely needed.

Differential Revision: https://reviews.llvm.org/D60089
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpptrunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
The file was added/llvm/trunk/test/CodeGen/Thumb2/ifcvt-minsize.lltrunk/test/CodeGen/Thumb2/ifcvt-minsize.ll
Revision 358970 by rksimon:
Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp
Revision 358969 by rksimon:
Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpptrunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
Revision 358965 by bjope:
[DAGCombiner] Combine OR as ADD when no common bits are set

Summary:
The DAGCombiner is rewriting (canonicalizing) an ISD::ADD
with no common bits set in the operands as an ISD::OR node.

This could sometimes result in "missing out" on some
combines that normally are performed for ADD. To be more
specific this could happen if we already have rewritten an
ADD into OR, and later (after legalizations or combines)
we expose patterns that could have been optimized if we
had seen the OR as an ADD (e.g. reassociations based on ADD).

To make the DAG combiner less sensitive to if ADD or OR is
used for these "no common bits set" ADD/OR operations we
now apply most of the ADD combines also to an OR operation,
when value tracking indicates that the operands have no
common bits set.

Reviewers: spatel, RKSimon, craig.topper, kparzysz

Reviewed By: spatel

Subscribers: arsenm, rampitec, lebedev.ri, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59758
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/calling-conventions.lltrunk/test/CodeGen/AMDGPU/calling-conventions.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/cvt_f32_ubyte.lltrunk/test/CodeGen/AMDGPU/cvt_f32_ubyte.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/sminmax.v2i16.lltrunk/test/CodeGen/AMDGPU/sminmax.v2i16.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/widen-smrd-loads.lltrunk/test/CodeGen/AMDGPU/widen-smrd-loads.ll
The file was modified/llvm/trunk/test/CodeGen/Hexagon/subi-asl.lltrunk/test/CodeGen/Hexagon/subi-asl.ll
The file was modified/llvm/trunk/test/CodeGen/X86/scheduler-backtracking.lltrunk/test/CodeGen/X86/scheduler-backtracking.ll
The file was modified/llvm/trunk/test/CodeGen/X86/signbit-shift.lltrunk/test/CodeGen/X86/signbit-shift.ll
The file was modified/llvm/trunk/test/CodeGen/X86/split-store.lltrunk/test/CodeGen/X86/split-store.ll
Revision 358963 by javed.absar:
[AArch64] Add support for MTE intrinsics

This patch provides intrinsics support for Memory Tagging Extension (MTE),
which was introduced with the Armv8.5-a architecture.
The intrinsics are described in detail in the latest
ACLE Q1 2019 documentation: https://developer.arm.com/docs/101028/latest
Reviewed by: David Spickett
Differential Revision: https://reviews.llvm.org/D60486
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/IntrinsicsAArch64.tdtrunk/include/llvm/IR/IntrinsicsAArch64.td
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpptrunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstrFormats.tdtrunk/lib/Target/AArch64/AArch64InstrFormats.td
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpptrunk/lib/Target/AArch64/AArch64InstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.tdtrunk/lib/Target/AArch64/AArch64InstrInfo.td
The file was added/llvm/trunk/test/CodeGen/AArch64/arm64-mte.lltrunk/test/CodeGen/AArch64/arm64-mte.ll
Revision 358962 by dnsampaio:
[ARM][FIX] Add missing f16.lane.vldN/vstN lowering

Summary:
Add missing D and Q lane VLDSTLane lowering
for fp16 elements.

Reviewers: efriedma, kosarev, SjoerdMeijer, ostannard

Reviewed By: efriedma

Subscribers: javed.absar, kristof.beyls, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60874
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpptrunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
The file was modified/llvm/trunk/test/CodeGen/ARM/armv8.2a-fp16-vector-intrinsics.lltrunk/test/CodeGen/ARM/armv8.2a-fp16-vector-intrinsics.ll
Revision 358960 by grimar:
[llvm-mc] - Properly set the the address align field of the compressed sections.

About the compressed sections spec says:
(https://docs.oracle.com/cd/E37838_01/html/E36783/section_compression.html)
sh_addralign fields of the section header for a compressed section
reflect the requirements of the compressed section.

Currently, llvm-mc always puts uncompressed section alignment to sh_addralign.
It is not correct. zlib styled section contains an Elfxx_Chdr header,
so we should either use 4 or 8 values depending on the target
(Uncompressed section alignment is stored in ch_addralign field of the compression header).

GNU assembler version 2.31.1 also has this issue,
but in 2.32.51 it was already fixed. This is how it was found
during debugging of the https://bugs.llvm.org/show_bug.cgi?id=40482
actually.

Differential revision: https://reviews.llvm.org/D60965
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/MC/ELFObjectWriter.cpptrunk/lib/MC/ELFObjectWriter.cpp
The file was modified/llvm/trunk/test/MC/ELF/compression.strunk/test/MC/ELF/compression.s
Revision 358958 by dmgreen:
[LSR] Limit the recursion for setup cost

In some circumstances we can end up with setup costs that are very complex to
compute, even though the scevs are not very complex to create. This can also
lead to setupcosts that are calculated to be exactly -1, which LSR treats as an
invalid cost. This patch puts a limit on the recursion depth for setup cost to
prevent them taking too long.

Thanks to @reames for the report and test case.

Differential Revision: https://reviews.llvm.org/D60944
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpptrunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
The file was modified/llvm/trunk/test/CodeGen/Hexagon/swp-carried-1.lltrunk/test/CodeGen/Hexagon/swp-carried-1.ll
The file was added/llvm/trunk/test/Transforms/LoopStrengthReduce/gnarly-setupcost.lltrunk/test/Transforms/LoopStrengthReduce/gnarly-setupcost.ll
The file was modified/llvm/trunk/test/Transforms/LoopStrengthReduce/two-combinations-bug.lltrunk/test/Transforms/LoopStrengthReduce/two-combinations-bug.ll
Revision 358948 by sbc:
[WebAssembly] Bail out of fastisel earlier when computing PIC addresses

This change partially reverts https://reviews.llvm.org/D54647 in favor
of bailing out during computeAddress instead.

This catches the condition earlier and handles more cases.

Differential Revision: https://reviews.llvm.org/D60986
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyFastISel.cpptrunk/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
Revision 358942 by chaofan:
add Qiu Chaofan (qiucf@cn.ibm.com) to the CREDITS.txt
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/CREDITS.TXTtrunk/CREDITS.TXT
Revision 358940 by chandlerc:
Revert "Use const DebugLoc&"

This reverts r358910 (git commit 2b744665308fc8d30a3baecb4947f2bd81aa7d30)

While this patch *seems* trivial and safe and correct, it is not. The
copies are actually load bearing copies. You can observe this with MSan
or other ways of checking for use-after-destroy, but otherwise this may
result in ... difficult to debug inexplicable behavior.

I suspect the issue is that the debug location is used after the
original reference to it is removed. The metadata backing it gets
destroyed as its last references goes away, and then we reference it
later through these const references.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/BranchRelaxation.cpptrunk/lib/CodeGen/BranchRelaxation.cpp
Revision 358935 by phosek:
[CMake] Replace the sanitizer support in runtimes build with multilib

This is a more generic solution; while the sanitizer support can be used
only for sanitizer instrumented builds, the multilib support can be used
to build other variants such as noexcept which is what we would like to use
in Fuchsia.

The name CMake target name uses the target name, same as for the regular
runtimes build and the name of the multilib, concatenated with '+'. The
libraries are installed in a subdirectory named after the multilib.

Differential Revision: https://reviews.llvm.org/D60926
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/cmake/caches/Fuchsia-stage2.cmakeN/A
The file was modified/llvm/trunk/runtimes/CMakeLists.txttrunk/runtimes/CMakeLists.txt
Revision 358933 by Adrian Prantl:
Fully qualify llvm::Optional, some compilers complain otherwise.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cpptrunk/tools/dsymutil/dsymutil.cpp
Revision 358931 by dblaikie:
DebugInfo: Emit only one kind of accelerated access/name table

Currently to opt in to debug_names in DWARFv5, the IR must contain
'nameTableKind: Default' which also enables debug_pubnames.

Instead, only allow one of {debug_names, apple_names, debug_pubnames,
debug_gnu_pubnames}.

nameTableKind: Default gives debug_names in DWARFv5 and greater,
debug_pubnames in v4 and earlier - and apple_names when tuning for lldb
on MachO.
nameTableKind: GNU always gives gnu_pubnames
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/AccelTable.cpptrunk/lib/CodeGen/AsmPrinter/AccelTable.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpptrunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpptrunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
The file was modified/llvm/trunk/test/DebugInfo/X86/accel-tables.lltrunk/test/DebugInfo/X86/accel-tables.ll
The file was added/llvm/trunk/test/DebugInfo/X86/gnu-names.lltrunk/test/DebugInfo/X86/gnu-names.ll
Revision 358930 by spatel:
[SelectionDAG] move splat util functions up from x86 lowering

This was supposed to be NFC, but the change in SDLoc
definitions causes instruction scheduling changes.

There's nothing x86-specific in this code, and it can
likely be used from DAGCombiner's simplifyVBinOp().
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/SelectionDAG.htrunk/include/llvm/CodeGen/SelectionDAG.h
The file was modified/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.htrunk/include/llvm/CodeGen/SelectionDAGNodes.h
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpptrunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vector-rotate-256.lltrunk/test/CodeGen/X86/vector-rotate-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-rotate-512.lltrunk/test/CodeGen/X86/vector-rotate-512.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shift-ashr-256.lltrunk/test/CodeGen/X86/vector-shift-ashr-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shift-lshr-256.lltrunk/test/CodeGen/X86/vector-shift-lshr-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shift-shl-256.lltrunk/test/CodeGen/X86/vector-shift-shl-256.ll
Revision 358927 by Adrian Prantl:
Try to work around compile errors with older versions of GCC.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cpptrunk/tools/dsymutil/dsymutil.cpp
Revision 358926 by dyung:
Relax test to check for a valid number instead of a specific number.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
Revision 358922 by hliao:
[AMDGPU] Fix an issue in `op_sel_hi` skipping.

Summary:
- Only apply packed literal `op_sel_hi` skipping on operands requiring
  packed literals. Even an instruction is `packed`, it may have operand
  requiring non-packed literal, such as `v_dot2_f32_f16`.

Reviewers: rampitec, arsenm, kzhuravl

Subscribers: jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60978
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIFoldOperands.cpptrunk/lib/Target/AMDGPU/SIFoldOperands.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.fdot2.lltrunk/test/CodeGen/AMDGPU/llvm.amdgcn.fdot2.ll
Revision 358921 by Adrian Prantl:
[dsymutil] Collect parseable Swift interfaces in the .dSYM bundle.

When a Swift module built with debug info imports a library without
debug info from a textual interface, the textual interface is
necessary to reconstruct types defined in the library's interface. By
recording the Swift interface files in DWARF dsymutil can collect them
and LLDB can find them.

This patch teaches dsymutil to look for DW_TAG_imported_modules and
records all references to parseable Swift ingterfrace files and copies
them to

  a.out.dSYM/Contents/Resources/<Arch>/<ModuleName>.swiftinterface

<rdar://problem/49751748>
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFFormValue.htrunk/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
The file was added/llvm/trunk/test/tools/dsymutil/Inputs/swift-interface.lltrunk/test/tools/dsymutil/Inputs/swift-interface.ll
The file was added/llvm/trunk/test/tools/dsymutil/X86/swift-interface.testtrunk/test/tools/dsymutil/X86/swift-interface.test
The file was modified/llvm/trunk/tools/dsymutil/CompileUnit.cpptrunk/tools/dsymutil/CompileUnit.cpp
The file was modified/llvm/trunk/tools/dsymutil/CompileUnit.htrunk/tools/dsymutil/CompileUnit.h
The file was modified/llvm/trunk/tools/dsymutil/DwarfLinker.cpptrunk/tools/dsymutil/DwarfLinker.cpp
The file was modified/llvm/trunk/tools/dsymutil/DwarfLinker.htrunk/tools/dsymutil/DwarfLinker.h
The file was modified/llvm/trunk/tools/dsymutil/LinkUtils.htrunk/tools/dsymutil/LinkUtils.h
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cpptrunk/tools/dsymutil/dsymutil.cpp
Revision 358919 by reames:
[InstCombine] Eliminate stores to constant memory

If we have a store to a piece of memory which is known constant, then we know the store must be storing back the same value. As a result, the store (or memset, or memmove) must either be down a dead path, or a noop. In either case, it is valid to simply remove the store.

The motivating case for this involves a memmove to a buffer which is constant down a path which is dynamically dead.

Note that I'm choosing to implement the less aggressive of two possible semantics here. We could simply say that the store *is undefined*, and prune the path. Consensus in the review was that the more aggressive form might be a good follow on change at a later date.

Differential Revision: https://reviews.llvm.org/D60659
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpptrunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
The file was modified/llvm/trunk/test/Transforms/InstCombine/memcpy.lltrunk/test/Transforms/InstCombine/memcpy.ll
The file was modified/llvm/trunk/test/Transforms/InstCombine/memmove.lltrunk/test/Transforms/InstCombine/memmove.ll
The file was modified/llvm/trunk/test/Transforms/InstCombine/memset.lltrunk/test/Transforms/InstCombine/memset.ll
The file was modified/llvm/trunk/test/Transforms/InstCombine/store.lltrunk/test/Transforms/InstCombine/store.ll
Revision 358914 by inglorion:
[Support] unflake TempFileCollisions test

Summary:
This test was added to verify that createUniqueEntity() does
not enter an infinite loop when all possible names are taken. However,
it also checked that all possible names are generated, which is flaky
(because the names are generated randomly). This change increases the
number of attempts we make to make flakes exceedingly
unlikely (3.88e-62).

Reviewers: fedor.sergeev, rsmith

Reviewed By: fedor.sergeev

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D56336
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/Support/Path.cpptrunk/unittests/Support/Path.cpp
Revision 358913 by reames:
[InstSimplify] Move masked.gather w/no active lanes handling to InstSimplify from InstCombine

In the process, use the existing masked.load combine which is slightly stronger, and handles a mix of zero and undef elements in the mask.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/InstructionSimplify.cpptrunk/lib/Analysis/InstructionSimplify.cpp
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpptrunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
Revision 358912 by nico:
gn build: Merge r358869
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink/BUILD.gntrunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink/BUILD.gntrunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink/BUILD.gn
Revision 358910 by arsenm:
Use const DebugLoc&
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/BranchRelaxation.cpptrunk/lib/CodeGen/BranchRelaxation.cpp
Revision 358909 by arsenm:
AMDGPU: Skip debug instructions in assert

These are inserted after branch relaxation, and for some reason it's
decided to put them in the long branch expansion block. It's probably
not great to rely on the source block address, so this should probably
be switched to being PC relative instead of relying on the block
address
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpptrunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
The file was added/llvm/trunk/test/CodeGen/AMDGPU/branch-relaxation-debug-info.lltrunk/test/CodeGen/AMDGPU/branch-relaxation-debug-info.ll
Revision 358907 by reames:
[Tests] Revise a test as requested by reviewer in D59703
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/InstCombine/masked_intrinsics.lltrunk/test/Transforms/InstCombine/masked_intrinsics.ll
Revision 358906 by reames:
[Tests] Add a negative test for masked.gather part of D59703
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/InstCombine/masked_intrinsics.lltrunk/test/Transforms/InstCombine/masked_intrinsics.ll
Revision 358903 by Justin Bogner:
[IPSCCP] Add missing `AssumptionCacheTracker` dependency

Back in August, r340525 introduced a dependency on the assumption
cache tracker in the ipsccp pass, but that commit missed a call to
INITIALIZE_PASS_DEPENDENCY, which leaves the assumption cache
improperly registered if SCCP is the only thing that pulls it in.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/SCCP.cpptrunk/lib/Transforms/IPO/SCCP.cpp
Revision 358901 by reames:
[LPM/BPI] Preserve BPI through trivial loop pass pipeline (e.g. LCSSA, LoopSimplify)

Currently, we do not expose BPI to loop passes at all. In the old pass manager, we appear to have been ignoring the fact that LCSSA and/or LoopSimplify didn't preserve BPI, and making it available to the following loop passes anyways.  In the new one, it's invalidated before running any loop pass if either LCSSA or LoopSimplify actually make changes. If they don't make changes, then BPI is valid and available.  So, we go ahead and teach LCSSA and LoopSimplify how to preserve BPI for consistency between old and new pass managers.

This patch avoids an invalidation between the two requires in the following trivial pass pipeline:
opt -passes="requires<branch-prob>,loop(no-op-loop),requires<branch-prob>"
(when the input file is one which requires either LCSSA or LoopSimplify to canonicalize the loops)

Differential Revision: https://reviews.llvm.org/D60790
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Utils/LCSSA.cpptrunk/lib/Transforms/Utils/LCSSA.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpptrunk/lib/Transforms/Utils/LoopSimplify.cpp
The file was modified/llvm/trunk/test/Other/opt-O2-pipeline.lltrunk/test/Other/opt-O2-pipeline.ll
The file was modified/llvm/trunk/test/Other/opt-O3-pipeline.lltrunk/test/Other/opt-O3-pipeline.ll
The file was modified/llvm/trunk/test/Other/opt-Os-pipeline.lltrunk/test/Other/opt-Os-pipeline.ll
Revision 358900 by wmi:
[PGO/SamplePGO][NFC] Move the function updateProfWeight from Instruction
to CallInst.

The issue was raised here: https://reviews.llvm.org/D60903#1472783

The function Instruction::updateProfWeight is only used for CallInst in
profile update. From the current interface, it is very easy to think that
the function can also be used for branch instruction. However, Branch
instruction does't need the scaling the function provides for
branch_weights and VP (value profile), in addition, scaling may introduce
inaccuracy for branch probablity.

The patch moves the function updateProfWeight from Instruction class to
CallInst to remove the confusion. The patch also changes the scaling of
branch_weights from a loop to a block because we know that ProfileData
for branch_weights of CallInst will only have two operands at most.

Differential Revision: https://reviews.llvm.org/D60911
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/Instruction.htrunk/include/llvm/IR/Instruction.h
The file was modified/llvm/trunk/include/llvm/IR/Instructions.htrunk/include/llvm/IR/Instructions.h
The file was modified/llvm/trunk/lib/IR/Instruction.cpptrunk/lib/IR/Instruction.cpp
The file was modified/llvm/trunk/lib/IR/Instructions.cpptrunk/lib/IR/Instructions.cpp
Revision 358897 by maskray:
Use llvm::stable_sort. NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpptrunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
The file was modified/llvm/trunk/tools/llvm-cov/SourceCoverageView.cpptrunk/tools/llvm-cov/SourceCoverageView.cpp
The file was modified/llvm/trunk/tools/llvm-objcopy/ELF/Object.cpptrunk/tools/llvm-objcopy/ELF/Object.cpp
The file was modified/llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpptrunk/tools/llvm-pdbutil/DumpOutputStyle.cpp
The file was modified/llvm/trunk/tools/llvm-readobj/COFFDumper.cpptrunk/tools/llvm-readobj/COFFDumper.cpp
The file was modified/llvm/trunk/tools/llvm-readobj/ELFDumper.cpptrunk/tools/llvm-readobj/ELFDumper.cpp
The file was modified/llvm/trunk/tools/llvm-readobj/MachODumper.cpptrunk/tools/llvm-readobj/MachODumper.cpp
Revision 358895 by aaronballman:
Remove spurious semicolons; NFC.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/JSON.htrunk/include/llvm/Support/JSON.h
Revision 358894 by arsenm:
AMDGPU/GlobalISel: Fix non-power-of-2 G_EXTRACT sources
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpptrunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mirtrunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir
Revision 358893 by maskray:
STLExtras: add stable_sort wrappers
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ADT/STLExtras.htrunk/include/llvm/ADT/STLExtras.h
Revision 358892 by arsenm:
GlobalISel: Legalize scalar G_EXTRACT sources
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mirtrunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir
Revision 358891 by nico:
llvm-undname: Fix an assert-on-invalid, found by oss-fuzz
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/invalid-manglings.testtrunk/test/Demangle/invalid-manglings.test
Revision 358890 by arsenm:
AMDGPU: Fix not checking for copy when looking at copy src

Effectively reverts r356956. The check for isFullCopy was excessive,
but there still needs to be a check that this is a copy.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpptrunk/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp
Revision 358888 by dpreobra:
[AMDGPU][MC] Corrected parsing of SP3 'neg' modifier

See bug 41156: https://bugs.llvm.org/show_bug.cgi?id=41156

Reviewers: artem.tamazov, arsenm

Differential Revision: https://reviews.llvm.org/D60624
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpptrunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
The file was modified/llvm/trunk/test/MC/AMDGPU/expressions.strunk/test/MC/AMDGPU/expressions.s
The file was modified/llvm/trunk/test/MC/AMDGPU/vop3-modifiers-err.strunk/test/MC/AMDGPU/vop3-modifiers-err.s
Revision 358887 by rksimon:
[TargetLowering][AMDGPU][X86] Improve SimplifyDemandedBits bitcast handling

This patch adds support for BigBitWidth -> SmallBitWidth bitcasts, splitting the DemandedBits/Elts accordingly.

The AMDGPU backend needed an extra  (srl (and x, c1 << c2), c2) -> (and (srl(x, c2), c1) combine to encourage BFE creation, I investigated putting this in DAGCombine but it caused a lot of noise on other targets - some improvements, some regressions.

The X86 changes are all definite wins.

Differential Revision: https://reviews.llvm.org/D60462
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpptrunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpptrunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/store-weird-sizes.lltrunk/test/CodeGen/AMDGPU/store-weird-sizes.ll
The file was modified/llvm/trunk/test/CodeGen/X86/bitcast-setcc-256.lltrunk/test/CodeGen/X86/bitcast-setcc-256.ll
The file was modified/llvm/trunk/test/CodeGen/X86/bitcast-setcc-512.lltrunk/test/CodeGen/X86/bitcast-setcc-512.ll
The file was modified/llvm/trunk/test/CodeGen/X86/dagcombine-cse.lltrunk/test/CodeGen/X86/dagcombine-cse.ll
The file was modified/llvm/trunk/test/CodeGen/X86/masked_store.lltrunk/test/CodeGen/X86/masked_store.ll
The file was modified/llvm/trunk/test/CodeGen/X86/movmsk-cmp.lltrunk/test/CodeGen/X86/movmsk-cmp.ll
Revision 358886 by spatel:
[DAGCombiner] make variable name less ambiguous; NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 358884 by spatel:
[DAGCombiner] prepare shuffle-of-splat to handle more patterns; NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpptrunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 358883 by codafi:
[LLVM-C] Add accessors to the default floating-point metadata node

Summary: Add a getter and setter pair for floating-point accuracy metadata.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60527
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm-c/Core.htrunk/include/llvm-c/Core.h
The file was modified/llvm/trunk/lib/IR/Core.cpptrunk/lib/IR/Core.cpp
Revision 358880 by skatkov:
[NewPM] Add Option handling for SimpleLoopUnswitch

This patch enables passing options to SimpleLoopUnswitch via the passes pipeline.

Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe
Reviewed By: fedor.sergeev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60676
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/lib/Passes/PassRegistry.deftrunk/lib/Passes/PassRegistry.def
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/delete-dead-blocks.lltrunk/test/Transforms/SimpleLoopUnswitch/delete-dead-blocks.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.lltrunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.lltrunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.lltrunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.lltrunk/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.lltrunk/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/guards.lltrunk/test/Transforms/SimpleLoopUnswitch/guards.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.lltrunk/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.lltrunk/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
The file was modified/llvm/trunk/test/Transforms/SimpleLoopUnswitch/update-scev.lltrunk/test/Transforms/SimpleLoopUnswitch/update-scev.ll
Revision 358879 by rksimon:
[AMDGPU] Regenerate uitofp i8 to float conversion tests.

Prep work for D60462
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/cvt_f32_ubyte.lltrunk/test/CodeGen/AMDGPU/cvt_f32_ubyte.ll
Revision 358878 by skatkov:
[NewPM] Add dummy Test for LoopVectorize option parsing.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/LoopVectorize/loop-vect-option.lltrunk/test/Transforms/LoopVectorize/loop-vect-option.ll
Revision 358876 by nikic:
Revert "[ConstantRange] Rename make{Guaranteed -> Exact}NoWrapRegion() NFC"

This reverts commit 7bf4d7c07f2fac862ef34c82ad0fef6513452445.

After thinking about this more, this isn't right, the range is not exact
in the same sense as makeExactICmpRegion(). This needs a separate
function.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/Analysis/LazyValueInfo.cpptrunk/lib/Analysis/LazyValueInfo.cpp
The file was modified/llvm/trunk/lib/Analysis/ScalarEvolution.cpptrunk/lib/Analysis/ScalarEvolution.cpp
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpptrunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 358875 by nikic:
[ConstantRange] Rename make{Guaranteed -> Exact}NoWrapRegion() NFC

Following D60632 makeGuaranteedNoWrapRegion() always returns an
exact nowrap region. Rename the function accordingly. This is in
line with the naming of makeExactICmpRegion().
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/Analysis/LazyValueInfo.cpptrunk/lib/Analysis/LazyValueInfo.cpp
The file was modified/llvm/trunk/lib/Analysis/ScalarEvolution.cpptrunk/lib/Analysis/ScalarEvolution.cpp
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpptrunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 358872 by ctopper:
[X86] Reject 512-bit types in getRegForInlineAsmConstraint when AVX512 is not enabled. Same for 256 bit and AVX.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
Revision 358869 by Lang Hames:
[JITLink] Remove a lot of reduntant 'JITLink_' prefixes. NFC.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/EHFrameSupport.htrunk/include/llvm/ExecutionEngine/JITLink/EHFrameSupport.h
The file was removed/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink_EHFrameSupport.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink_EHFrameSupport.h
The file was removed/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO.h
The file was removed/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO_x86_64.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO_x86_64.h
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/MachO.htrunk/include/llvm/ExecutionEngine/JITLink/MachO.h
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/MachO_x86_64.htrunk/include/llvm/ExecutionEngine/JITLink/MachO_x86_64.h
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/CMakeLists.txttrunk/lib/ExecutionEngine/JITLink/CMakeLists.txt
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.htrunk/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink.cpptrunk/lib/ExecutionEngine/JITLink/JITLink.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpptrunk/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
The file was removed/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpp
The file was removed/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupportImpl.htrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupportImpl.h
The file was removed/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO.cpp
The file was removed/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/MachO.cpptrunk/lib/ExecutionEngine/JITLink/MachO.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpptrunk/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
The file was modified/llvm/trunk/unittests/ExecutionEngine/JITLink/CMakeLists.txttrunk/unittests/ExecutionEngine/JITLink/CMakeLists.txt
The file was removed/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTest_MachO_x86_64_Tests.cpptrunk/unittests/ExecutionEngine/JITLink/JITLinkTest_MachO_x86_64_Tests.cpp
The file was added/llvm/trunk/unittests/ExecutionEngine/JITLink/MachO_x86_64_Tests.cpptrunk/unittests/ExecutionEngine/JITLink/MachO_x86_64_Tests.cpp
Revision 358867 by maskray:
[cmake] Add llvm-jit to LLVM_TEST_DEPENDS

Otherwise llvm-jit would say "utils/lit/lit/llvm/subst.py:127: note: Did not find llvm-jitlink in ..."
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CMakeLists.txttrunk/test/CMakeLists.txt
Revision 358865 by Lang Hames:
[JITLink] Fix section start address calculation in eh-frame recorder.

Section atoms are not sorted, so we need to scan the whole section to find the
start address.

No test case: Found by inspection, and any reproduction would depend on pointer
ordering.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpp
Revision 358864 by nico:
Attemp get llvm-jitlink building on Windows

By removing an include of dlfcn.h that looks unused.

And clang-format a too-long line while here.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.cpptrunk/tools/llvm-jitlink/llvm-jitlink.cpp
Revision 358863 by Lang Hames:
[JITLink] Add an option to dump relocated section content.

The -dump-relocated-section-content option will dump the contents of each
section after relocations are applied, and before any checks are run or
code executed.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.cpptrunk/tools/llvm-jitlink/llvm-jitlink.cpp
Revision 358862 by nico:
gn build: Re-run `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format`
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clangd/tool/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clangd/tool/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang/tools/libclang/BUILD.gntrunk/utils/gn/secondary/clang/tools/libclang/BUILD.gn
Revision 358861 by nico:
gn build: Merge r358749

Since the symlinks list for llvm-symbolizer is now never empty,
the :symlinks target no longer needs an explicit dep on :llvm-symbolizer
-- there will be at least one dep on a symlink, and each symlink depends
on :llvm-symbolizer already.

Since llvm-symbolizer:symlinks now produces symlinks that check-llvm
uses, make llvm/test depend on the symlink target.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/test/BUILD.gntrunk/utils/gn/secondary/llvm/test/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/tools/llvm-objdump/BUILD.gntrunk/utils/gn/secondary/llvm/tools/llvm-objdump/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/tools/llvm-symbolizer/BUILD.gntrunk/utils/gn/secondary/llvm/tools/llvm-symbolizer/BUILD.gn
Revision 358860 by nico:
gn build: Merge r358818 (JITLink)
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLinktrunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink
The file was added/llvm/trunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink/BUILD.gntrunk/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gntrunk/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/test/BUILD.gntrunk/utils/gn/secondary/llvm/test/BUILD.gn
The file was added/llvm/trunk/utils/gn/secondary/llvm/tools/llvm-jitlinktrunk/utils/gn/secondary/llvm/tools/llvm-jitlink
The file was added/llvm/trunk/utils/gn/secondary/llvm/tools/llvm-jitlink/BUILD.gntrunk/utils/gn/secondary/llvm/tools/llvm-jitlink/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/BUILD.gntrunk/utils/gn/secondary/llvm/unittests/BUILD.gn
The file was added/llvm/trunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLinktrunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink
The file was added/llvm/trunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink/BUILD.gntrunk/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink/BUILD.gn
Revision 358859 by dhinton:
[cmake] Fix bug in r358779 - [CMake] Pass monorepo build settings in cross compile

Escape semicolons in the targets list so that cmake doesn't expand
them to spaces.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/cmake/modules/CrossCompile.cmaketrunk/cmake/modules/CrossCompile.cmake
Revision 358857 by nico:
llvm-undname: Fix hex escapes in wchar_t, char16_t, char32_t strings

llvm-undname used to put '\x' in front of every pair of nibbles, but
u"\xD7\xFF" produces a string with 6 bytes: \xD7 \0 \xFF \0 (and \0\0). Correct
for a single character (plus terminating \0) is u\xD7FF instead.
Now, wchar_t, char16_t, and char32_t strings roundtrip from source to
clang-cl (and cl.exe) and then llvm-undname.

(...at least as long as it's not a string like L"\xD7FF" L"foo" which
gets demangled as L"\xD7FFfoo", where the compiler then considers the
"f" as part of the hex escape. That seems ok.)

Also add a comment saying that the "almost-valid" char32_t string I
added in my last commit is actually produced by compilers.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/ms-string-literals.testtrunk/test/Demangle/ms-string-literals.test
Revision 358856 by nico:
llvm-undname: Fix stack overflow on almost-valid

If a unsigned with all 4 bytes non-0 was passed to outputHex(), there
were two off-by-ones in it:

- Both MaxPos and Pos left space for the final \0, which left the buffer
  one byte to small. Set MaxPos to 16 instead of 15 to fix.

- The `assert(Pos >= 0);` was after a `Pos--`, move it up one line.

Since valid Unicode codepoints are <= 0x10ffff, this could never really
happen in practice.

Found by oss-fuzz.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/ms-string-literals.testtrunk/test/Demangle/ms-string-literals.test
Revision 358855 by nikic:
[ConstantRange] Add saturating add/sub methods

Add support for uadd_sat and friends to ConstantRange, so we can
handle uadd.sat and friends in LVI. The implementation is forwarding
to the corresponding APInt methods with appropriate bounds.

One thing worth pointing out here is that the handling of wrapping
ranges is not maximally accurate. A simple example is that adding 0
to a wrapped range will return a full range, rather than the original
wrapped range. The tests also only check that the non-wrapping
envelope is correct and minimal.

Differential Revision: https://reviews.llvm.org/D60946
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
The file was modified/llvm/trunk/unittests/IR/ConstantRangeTest.cpptrunk/unittests/IR/ConstantRangeTest.cpp
Revision 358854 by nikic:
[ConstantRange] Add getNonEmpty() constructor

ConstantRanges have an annoying special case: If upper and lower are
the same, it can be either an empty or a full set. When constructing
constant ranges nearly always a full set is intended, but this still
requires an explicit check in many places.

This revision adds a getNonEmpty() constructor that disambiguates this
case: If upper and lower are the same, a full set is created.

Differential Revision: https://reviews.llvm.org/D60947
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/ConstantRange.htrunk/include/llvm/IR/ConstantRange.h
The file was modified/llvm/trunk/lib/Analysis/ScalarEvolution.cpptrunk/lib/Analysis/ScalarEvolution.cpp
The file was modified/llvm/trunk/lib/Analysis/ValueTracking.cpptrunk/lib/Analysis/ValueTracking.cpp
The file was modified/llvm/trunk/lib/IR/ConstantRange.cpptrunk/lib/IR/ConstantRange.cpp
Revision 358853 by spatel:
[AArch64] add tests with multiple binop+splat vals; NFC

See D60890 for context.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AArch64/mul_by_elt.lltrunk/test/CodeGen/AArch64/mul_by_elt.ll
Revision 358852 by nico:
llvm-undname: Fix stack overflow on invalid found by oss-fuzz
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/invalid-manglings.testtrunk/test/Demangle/invalid-manglings.test
Revision 358851 by nico:
gn build: Fix build after r358837
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn
Revision 358845 by dmgreen:
[ARM] Rewrite isLegalT2AddressImmediate

This does two main things, firstly adding some at least basic addressing modes
for i64 types, and secondly treats floats and doubles sensibly when there is no
fpu. The floating point change can help codesize in some cases, especially with
D60294.

Most backends seems to not consider the exact VT in isLegalAddressingMode,
instead switching on type size. That is now what this does when the target does
not have an fpu (as the float data will be loaded using LDR's). i64's currently
use the address range of an LDRD (even though they may be legalised and loaded
with an LDR). This is at least better than marking them all as illegal
addressing modes.

I have not attempted to do much with vectors yet. That will need changing once
MVE is added.

Differential Revision: https://reviews.llvm.org/D60677
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpptrunk/lib/Target/ARM/ARMISelLowering.cpp
The file was modified/llvm/trunk/test/Analysis/CostModel/ARM/gep.lltrunk/test/Analysis/CostModel/ARM/gep.ll
Revision 358844 by ctopper:
[X86] Add the rounding control operand to the printing for some scalar FMA instructions.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.tdtrunk/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-fma-intrinsics.lltrunk/test/CodeGen/X86/avx512-fma-intrinsics.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-intrinsics-fast-isel.lltrunk/test/CodeGen/X86/avx512-intrinsics-fast-isel.ll
Revision 358843 by maskray:
[CachePruning] Simplify comparator
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/CachePruning.cpptrunk/lib/Support/CachePruning.cpp
Revision 358842 by maskray:
[JITLink] Add dependency on MCParser to unit test after rL358818

This is required by -DBUILD_SHARED_LIBS=on builds for createMCAsmParser.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/ExecutionEngine/JITLink/CMakeLists.txttrunk/unittests/ExecutionEngine/JITLink/CMakeLists.txt
Revision 358841 by ctopper:
[X86] Don't form masked vfpclass instruction from and+vfpclass unless the fpclass only has a single use.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.tdtrunk/lib/Target/X86/X86InstrAVX512.td
Revision 358840 by Lang Hames:
[JITLink] Remove an overly strict error check in JITLink's eh-frame parser.

The error check required FDEs to refer to the most recent CIE, but the eh-frame
spec allows them to refer to any previously seen CIE. This patch removes the
offending check.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupportImpl.htrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupportImpl.h
Revision 358839 by Lang Hames:
[BinaryFormat] Fix bitfield-ordering of MachO::relocation_info on big-endian.

Hopefully this will fix the JITLink regression test failures on big-endian
testers (e.g.
http://lab.llvm.org:8011/builders/clang-s390x-linux-lnt/builds/12702)
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/BinaryFormat/MachO.htrunk/include/llvm/BinaryFormat/MachO.h
Revision 358838 by Lang Hames:
[JITLink] Factor basic common GOT and stub creation code into its own class.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/BasicGOTAndStubsBuilder.htrunk/lib/ExecutionEngine/JITLink/BasicGOTAndStubsBuilder.h
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
Revision 358837 by phosek:
[gn] Move Features.inc to clangd, create a config for it

ClangdLSPServer and clangd unittests now include Features.inc so we
need to append the target_gen_dir that contains it to their
include_dirs. To do so, we use a public config that's applied to
any target that depends on the features one.

Differential Revision: https://reviews.llvm.org/D60919
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clangd/tool/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clangd/tool/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/unittests/clangd/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/unittests/clangd/BUILD.gn
Revision 358836 by Lang Hames:
[JITLink] Add dependencies on MCDissassembler and Target to unit test.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/ExecutionEngine/JITLink/CMakeLists.txttrunk/unittests/ExecutionEngine/JITLink/CMakeLists.txt
Revision 358835 by nico:
llvm-undname: Improve string literal demangling with embedded \0 chars

- Don't assert when a string looks like a u32 string to the heuristic
  but doesn't have a length that's 0 mod 4.  Instead, classify those
  as u16 with embedded \0 chars. Found by oss-fuzz.
- Print embedded nul bytes as \0 instead of \x00.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/ms-string-literals.testtrunk/test/Demangle/ms-string-literals.test
Revision 358834 by nico:
ftime-trace: Trace the name of the currently active pass as well.

Differential Revision: https://reviews.llvm.org/D60782
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/IR/LegacyPassManager.cpptrunk/lib/IR/LegacyPassManager.cpp
Revision 358833 by Lang Hames:
[JITLink] Add yet more detail to MachO/x86-64 unsupported relocation errors.

Knowing the address/symbolnum field values makes it easier to identify the
unsupported relocation, and provides enough information for the full bit
pattern of the relocation to be reconstructed.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
Revision 358832 by Lang Hames:
[JITLink][ORC] Add JITLink to the list of dependencies for ORC.

The new ObjectLinkingLayer in ORC depends on JITLink.

This should fix the build error at
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/9621
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/LLVMBuild.txttrunk/lib/ExecutionEngine/Orc/LLVMBuild.txt
Revision 358831 by Lang Hames:
[JITLink] Fix a bad formatv format string.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
Revision 358830 by Lang Hames:
[JITLink] Disable MachO/x86-64 regression test if the X86 target is not built.
Change TypePath in RepositoryPath in Workspace
The file was removed/llvm/trunk/test/ExecutionEngine/JITLink/MachO_x86-64_relocations.strunk/test/ExecutionEngine/JITLink/MachO_x86-64_relocations.s
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/X86trunk/test/ExecutionEngine/JITLink/X86
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.strunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/X86/lit.local.cfgtrunk/test/ExecutionEngine/JITLink/X86/lit.local.cfg
Revision 358829 by Amara Emerson:
Revert r358800. Breaks Obsequi from the test suite.

The last attempt fixed gcc and consumer-typeset, but Obsequi seems to fail with
a different issue.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.htrunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-fallback.lltrunk/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll
The file was removed/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-non-pow2-load-store.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-non-pow2-load-store.mir
Revision 358828 by Lang Hames:
[JITLink] Add llvm-jitlink to the list of available tools in lit.

Should fix the 'llvm-jitlink command not found' errors that are appearing on
some builders.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/lit.cfg.pytrunk/test/lit.cfg.py
Revision 358827 by Lang Hames:
[JITLink] Add BinaryFormat to JITLink's dependencies.

Hopefully this will fix the missing dependence on llvm::identify_magic that is
showing up on some PPC bots. E.g.

http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/9617
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/LLVMBuild.txttrunk/lib/ExecutionEngine/JITLink/LLVMBuild.txt
The file was modified/llvm/trunk/tools/llvm-jitlink/CMakeLists.txttrunk/tools/llvm-jitlink/CMakeLists.txt
The file was modified/llvm/trunk/tools/llvm-jitlink/LLVMBuild.txttrunk/tools/llvm-jitlink/LLVMBuild.txt
Revision 358826 by Lang Hames:
[JITLink] Add more detail to MachO/x86-64 "unsupported relocation" errors.

The extra information here will be helpful in diagnosing errors, like the
ones currently occuring on the PPC big-endian bots. :)
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
Revision 358825 by Lang Hames:
[JITLink] Add check to JITLink unit test to bail out for unsupported targets.

This should prevent spurious JITLink unit test failures for builds that do not
support the target(s) required by the tests.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.cpptrunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.cpp
The file was modified/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.htrunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.h
The file was modified/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTest_MachO_x86_64_Tests.cpptrunk/unittests/ExecutionEngine/JITLink/JITLinkTest_MachO_x86_64_Tests.cpp
Revision 358824 by Lang Hames:
[JITLink] Silence some MSVC implicit cast warnings.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
Revision 358823 by Lang Hames:
[JITLink] Add llvm-jitlink subdirectory to tools/LLVMBuild.txt
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/LLVMBuild.txttrunk/tools/LLVMBuild.txt
Revision 358822 by Lang Hames:
[JITLink] Use memset instead of bzero.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink.cpptrunk/lib/ExecutionEngine/JITLink/JITLink.cpp
Revision 358821 by Lang Hames:
[JITLink] Silence a narrowing conversion warning.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink.h
Revision 358820 by Lang Hames:
[JITLink] Update BuildingAJIT tutorials to account for API changes in r358818.

DynamicLibrarySearchGenerator::GetForCurrentProcess now takes a char (the global
prefix) rather than a DataLayout reference.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/examples/Kaleidoscope/BuildingAJIT/Chapter1/KaleidoscopeJIT.htrunk/examples/Kaleidoscope/BuildingAJIT/Chapter1/KaleidoscopeJIT.h
The file was modified/llvm/trunk/examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.htrunk/examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h
Revision 358819 by Lang Hames:
[JITLink] Fix a missing header and bad prototype.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpp
Revision 358818 by Lang Hames:
Initial implementation of JITLink - A replacement for RuntimeDyld.

Summary:

JITLink is a jit-linker that performs the same high-level task as RuntimeDyld:
it parses relocatable object files and makes their contents runnable in a target
process.

JITLink aims to improve on RuntimeDyld in several ways:

(1) A clear design intended to maximize code-sharing while minimizing coupling.

RuntimeDyld has been developed in an ad-hoc fashion for a number of years and
this had led to intermingling of code for multiple architectures (e.g. in
RuntimeDyldELF::processRelocationRef) in a way that makes the code more
difficult to read, reason about, extend. JITLink is designed to isolate
format and architecture specific code, while still sharing generic code.

(2) Support for native code models.

RuntimeDyld required the use of large code models (where calls to external
functions are made indirectly via registers) for many of platforms due to its
restrictive model for stub generation (one "stub" per symbol). JITLink allows
arbitrary mutation of the atom graph, allowing both GOT and PLT atoms to be
added naturally.

(3) Native support for asynchronous linking.

JITLink uses asynchronous calls for symbol resolution and finalization: these
callbacks are passed a continuation function that they must call to complete the
linker's work. This allows for cleaner interoperation with the new concurrent
ORC JIT APIs, while still being easily implementable in synchronous style if
asynchrony is not needed.

To maximise sharing, the design has a hierarchy of common code:

(1) Generic atom-graph data structure and algorithms (e.g. dead stripping and
|  memory allocation) that are intended to be shared by all architectures.
|
+ -- (2) Shared per-format code that utilizes (1), e.g. Generic MachO to
       |  atom-graph parsing.
       |
       + -- (3) Architecture specific code that uses (1) and (2). E.g.
                JITLinkerMachO_x86_64, which adds x86-64 specific relocation
                support to (2) to build and patch up the atom graph.

To support asynchronous symbol resolution and finalization, the callbacks for
these operations take continuations as arguments:

  using JITLinkAsyncLookupContinuation =
      std::function<void(Expected<AsyncLookupResult> LR)>;

  using JITLinkAsyncLookupFunction =
      std::function<void(const DenseSet<StringRef> &Symbols,
                         JITLinkAsyncLookupContinuation LookupContinuation)>;

  using FinalizeContinuation = std::function<void(Error)>;

  virtual void finalizeAsync(FinalizeContinuation OnFinalize);

In addition to its headline features, JITLink also makes other improvements:

  - Dead stripping support: symbols that are not used (e.g. redundant ODR
    definitions) are discarded, and take up no memory in the target process
    (In contrast, RuntimeDyld supported pointer equality for weak definitions,
    but the redundant definitions stayed resident in memory).

  - Improved exception handling support. JITLink provides a much more extensive
    eh-frame parser than RuntimeDyld, and is able to correctly fix up many
    eh-frame sections that RuntimeDyld currently (silently) fails on.

  - More extensive validation and error handling throughout.

This initial patch supports linking MachO/x86-64 only. Work on support for
other architectures and formats will happen in-tree.

Differential Revision: https://reviews.llvm.org/D58704
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLinktrunk/include/llvm/ExecutionEngine/JITLink
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink.h
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink_EHFrameSupport.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink_EHFrameSupport.h
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO.h
The file was added/llvm/trunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO_x86_64.htrunk/include/llvm/ExecutionEngine/JITLink/JITLink_MachO_x86_64.h
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/JITSymbol.htrunk/include/llvm/ExecutionEngine/JITSymbol.h
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/Orc/Core.htrunk/include/llvm/ExecutionEngine/Orc/Core.h
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/Orc/ExecutionUtils.htrunk/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
The file was added/llvm/trunk/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.htrunk/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h
The file was modified/llvm/trunk/include/llvm/Support/Memory.htrunk/include/llvm/Support/Memory.h
The file was modified/llvm/trunk/lib/ExecutionEngine/CMakeLists.txttrunk/lib/ExecutionEngine/CMakeLists.txt
The file was added/llvm/trunk/lib/ExecutionEngine/JITLinktrunk/lib/ExecutionEngine/JITLink
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/CMakeLists.txttrunk/lib/ExecutionEngine/JITLink/CMakeLists.txt
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink.cpptrunk/lib/ExecutionEngine/JITLink/JITLink.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpptrunk/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLinkGeneric.htrunk/lib/ExecutionEngine/JITLink/JITLinkGeneric.h
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupport.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupportImpl.htrunk/lib/ExecutionEngine/JITLink/JITLink_EHFrameSupportImpl.h
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpptrunk/lib/ExecutionEngine/JITLink/JITLink_MachO_x86_64.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/LLVMBuild.txttrunk/lib/ExecutionEngine/JITLink/LLVMBuild.txt
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpptrunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.htrunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.h
The file was modified/llvm/trunk/lib/ExecutionEngine/LLVMBuild.txttrunk/lib/ExecutionEngine/LLVMBuild.txt
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/CMakeLists.txttrunk/lib/ExecutionEngine/Orc/CMakeLists.txt
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/Core.cpptrunk/lib/ExecutionEngine/Orc/Core.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/Orc/ExecutionUtils.cpptrunk/lib/ExecutionEngine/Orc/ExecutionUtils.cpp
The file was added/llvm/trunk/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpptrunk/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp
The file was modified/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpptrunk/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
The file was modified/llvm/trunk/lib/Support/Memory.cpptrunk/lib/Support/Memory.cpp
The file was added/llvm/trunk/test/ExecutionEngine/JITLinktrunk/test/ExecutionEngine/JITLink
The file was added/llvm/trunk/test/ExecutionEngine/JITLink/MachO_x86-64_relocations.strunk/test/ExecutionEngine/JITLink/MachO_x86-64_relocations.s
The file was modified/llvm/trunk/tools/lli/lli.cpptrunk/tools/lli/lli.cpp
The file was added/llvm/trunk/tools/llvm-jitlinktrunk/tools/llvm-jitlink
The file was added/llvm/trunk/tools/llvm-jitlink/CMakeLists.txttrunk/tools/llvm-jitlink/CMakeLists.txt
The file was added/llvm/trunk/tools/llvm-jitlink/LLVMBuild.txttrunk/tools/llvm-jitlink/LLVMBuild.txt
The file was added/llvm/trunk/tools/llvm-jitlink/llvm-jitlink-macho.cpptrunk/tools/llvm-jitlink/llvm-jitlink-macho.cpp
The file was added/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.cpptrunk/tools/llvm-jitlink/llvm-jitlink.cpp
The file was added/llvm/trunk/tools/llvm-jitlink/llvm-jitlink.htrunk/tools/llvm-jitlink/llvm-jitlink.h
The file was modified/llvm/trunk/unittests/ExecutionEngine/CMakeLists.txttrunk/unittests/ExecutionEngine/CMakeLists.txt
The file was added/llvm/trunk/unittests/ExecutionEngine/JITLinktrunk/unittests/ExecutionEngine/JITLink
The file was added/llvm/trunk/unittests/ExecutionEngine/JITLink/CMakeLists.txttrunk/unittests/ExecutionEngine/JITLink/CMakeLists.txt
The file was added/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.cpptrunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.cpp
The file was added/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.htrunk/unittests/ExecutionEngine/JITLink/JITLinkTestCommon.h
The file was added/llvm/trunk/unittests/ExecutionEngine/JITLink/JITLinkTest_MachO_x86_64_Tests.cpptrunk/unittests/ExecutionEngine/JITLink/JITLinkTest_MachO_x86_64_Tests.cpp
Revision 358817 by ctopper:
[X86] Disable argument copy elision for arguments passed via pointers

Summary:
If you pass two 1024 bit vectors in IR with AVX2 on Windows 64. Both vectors will be split in four 256 bit pieces. The four pieces of the first argument will be passed indirectly using 4 gprs. The second argument will get passed via pointers in memory.

The PartOffsets stored for the second argument are all in terms of its original 1024 bit size. So the PartOffsets for each piece are 32 bytes apart. So if we consider it for copy elision we'll only load an 8 byte pointer, but we'll move the address 32 bytes. The stack object size we create for the first part is probably wrong too.

This issue was encountered by ISPC. I'm working on getting a reduce test case, but wanted to go ahead and get feedback on the fix.

Reviewers: rnk

Reviewed By: rnk

Subscribers: dbabokin, llvm-commits, hiraditya

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60801
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/arg-copy-elide-win64.lltrunk/test/CodeGen/X86/arg-copy-elide-win64.ll
Revision 358816 by luqmana:
[CorrelatedValuePropagation] Mark subs that we know not to wrap with nuw/nsw.

Summary:
Teach CorrelatedValuePropagation to also handle sub instructions in addition to add. Relatively simple since makeGuaranteedNoWrapRegion already understood sub instructions. Only subtle change is which range is passed as "Other" to that function, since sub isn't commutative.

Note that CorrelatedValuePropagation::processAddSub is still hidden behind a default-off flag as IndVarSimplify hasn't yet been fixed to strip the added nsw/nuw flags and causes a miscompile. (PR31181)

Reviewers: sanjoy, apilipenko, nikic

Reviewed By: nikic

Subscribers: hiraditya, jfb, jdoerfert, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60036
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpptrunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
The file was modified/llvm/trunk/test/Transforms/CorrelatedValuePropagation/add.lltrunk/test/Transforms/CorrelatedValuePropagation/add.ll
The file was modified/llvm/trunk/test/Transforms/CorrelatedValuePropagation/sub.lltrunk/test/Transforms/CorrelatedValuePropagation/sub.ll
Revision 358815 by maskray:
[ExecutionDomainFix] Optimize a binary search insertion
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/ExecutionDomainFix.cpptrunk/lib/CodeGen/ExecutionDomainFix.cpp
Revision 358814 by maskray:
[llvm-symbolizer] Fix section index at the end of a section

This is very minor issue. The returned section index is only used by
DWARFDebugLine as an llvm::upper_bound input and the use case shouldn't
cause any behavioral change.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpptrunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
Revision 358813 by nikic:
[IndVarSimplify] Generate full checks for some LFTR tests; NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr-extend-const.lltrunk/test/Transforms/IndVarSimplify/lftr-extend-const.ll
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr-promote.lltrunk/test/Transforms/IndVarSimplify/lftr-promote.ll
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr-reuse.lltrunk/test/Transforms/IndVarSimplify/lftr-reuse.ll
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr-udiv-tripcount.lltrunk/test/Transforms/IndVarSimplify/lftr-udiv-tripcount.ll
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr-zext.lltrunk/test/Transforms/IndVarSimplify/lftr-zext.ll
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr_disabled.lltrunk/test/Transforms/IndVarSimplify/lftr_disabled.ll
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/lftr_simple.lltrunk/test/Transforms/IndVarSimplify/lftr_simple.ll
Revision 358812 by nikic:
[IndVarSimplify] Add tests for PR31181; NFC
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/IndVarSimplify/pr31181.lltrunk/test/Transforms/IndVarSimplify/pr31181.ll
Revision 358811 by sammccall:
[ADT] Avoid warning in bsearch testcase
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/ADT/STLExtrasTest.cpptrunk/unittests/ADT/STLExtrasTest.cpp
Revision 358809 by maskray:
[llvm-objdump] Fix End in disassemblyObject after rL358806
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpptrunk/tools/llvm-objdump/llvm-objdump.cpp
Revision 358808 by nikic:
[CVP] Add tests for sub nowrap inference; NFC

These are baseline tests for D60036.

Patch by Luqman Aden.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/CorrelatedValuePropagation/sub.lltrunk/test/Transforms/CorrelatedValuePropagation/sub.ll
Revision 358807 by nikic:
[X86] Fix stack probing on x32 (PR41477)

Fix for https://bugs.llvm.org/show_bug.cgi?id=41477. On the x32 ABI
with stack probing a dynamic alloca will result in a WIN_ALLOCA_32
with a 32-bit size. The current implementation tries to copy it into
RAX, resulting in a physreg copy error. Fix this by copying to EAX
instead. Also fix incorrect opcodes or registers used in subs.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86FrameLowering.cpptrunk/lib/Target/X86/X86FrameLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86WinAllocaExpander.cpptrunk/lib/Target/X86/X86WinAllocaExpander.cpp
The file was added/llvm/trunk/test/CodeGen/X86/probe-stack-x32.lltrunk/test/CodeGen/X86/probe-stack-x32.ll
Revision 358806 by maskray:
[llvm-objdump] Don't disassemble symbols before SectionAddr

This was caught by UBSAN

tools/llvm-objdump/X86/macho-disassembly-g-dsym.test
tools/llvm-objdump/X86/hex-displacement.test
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpptrunk/tools/llvm-objdump/llvm-objdump.cpp
Revision 358805 by ctopper:
[X86] Don't turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the original AND can represented by MOVZX.

The MOVZX doesn't require an immediate to be encoded at all. Though it does use
a 2 byte opcode so its the same size as a 1 byte immediate. But it has a
separate source and dest register so can help avoid copies.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/narrow-shl-cst.lltrunk/test/CodeGen/X86/narrow-shl-cst.ll
Revision 358804 by ctopper:
[X86] Turn (and (anyextend (shl X, C1), C2)) into (shl (and (anyextend X), (C1 >> C2), C2) if the AND could match a movzx.

There's one slight regression in here because we don't check that the immediate
already allowed movzx before the shift. I'll fix that next.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/narrow-shl-cst.lltrunk/test/CodeGen/X86/narrow-shl-cst.ll
Revision 358803 by maskray:
[llvm-objdump] Simplify --{start,stop}-address
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpptrunk/tools/llvm-objdump/llvm-objdump.cpp
Revision 358801 by sbc:
[WebAssembly] Object: Improve error messages on invalid section

Also add a test.

Differential Revision: https://reviews.llvm.org/D60836
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Object/WasmObjectFile.cpptrunk/lib/Object/WasmObjectFile.cpp
The file was modified/llvm/trunk/test/Object/wasm-invalid-file.yamltrunk/test/Object/wasm-invalid-file.yaml
Revision 358800 by Amara Emerson:
Revert "Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores""

We were shifting the wrong component of a split load when trying to combine them
back into a single value.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.htrunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-fallback.lltrunk/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-non-pow2-load-store.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-non-pow2-load-store.mir
Revision 358799 by paquette:
[GlobalISel][AArch64] Legalize + select G_FRINT

Exactly the same as G_FCEIL, G_FABS, etc.

Add tests for the fp16/nofp16 behaviour, update arm64-vfloatintrinsics, etc.

Differential Revision: https://reviews.llvm.org/D60895
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpptrunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-frint.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-frint.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-frint-nofp16.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-frint-nofp16.mir
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-frint.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-frint.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.lltrunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.ll
Revision 358793 by sbc:
[WebAssembly] FastISel: Don't fallback to SelectionDAG after BuildMI in selectCall

My understanding is that once BuildMI has been called we can't fallback
to SelectionDAG.

This change moves the fallback for when getRegForValue() fails for
that target of an indirect call.  This was failing in -fPIC mode when
the callee is GlobalValue.

Add a test case that tickles this.

Differential Revision: https://reviews.llvm.org/D60908
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyFastISel.cpptrunk/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/call-pic.lltrunk/test/CodeGen/WebAssembly/call-pic.ll
Revision 358791 by Vedant Kumar:
[GVN+LICM] Use line 0 locations for better crash attribution

This is a follow-up to r291037+r291258, which used null debug locations
to prevent jumpy line tables.

Using line 0 locations achieves the same effect, but works better for
crash attribution because it preserves the right inline scope.

Differential Revision: https://reviews.llvm.org/D60913
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/GVN.cpptrunk/lib/Transforms/Scalar/GVN.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/LICM.cpptrunk/lib/Transforms/Scalar/LICM.cpp
The file was modified/llvm/trunk/test/DebugInfo/Generic/licm-hoist-debug-loc.lltrunk/test/DebugInfo/Generic/licm-hoist-debug-loc.ll
The file was modified/llvm/trunk/test/Transforms/GVN/PRE/phi-translate.lltrunk/test/Transforms/GVN/PRE/phi-translate.ll
Revision 358790 by Vitaly Buka:
Update GN files to build with r358103
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clangd/tool/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clangd/tool/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/unittests/clangd/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/unittests/clangd/BUILD.gn
Revision 358789 by echristo:
Remove the EnableEarlyCSEMemSSA set of options from the legacy
and new pass managers. They were default to true and not being
used.

Differential Revision: https://reviews.llvm.org/D60747
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpptrunk/lib/Transforms/IPO/PassManagerBuilder.cpp
Revision 358788 by efriedma:
[AArch64] Fix checks for AArch64MCExpr::VK_SABS flag.

VK_SABS is part of the SymLoc bitfield in the variant kind which should
be compared for equality, not by checking the VK_SABS bit.

As far as I know, the existing code happened to produce the correct
results in all cases, so this is just a cleanup.

Patch by Stephen Crane.

Differential Revision: https://reviews.llvm.org/D60596
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpptrunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
Revision 358787 by paquette:
[GlobalISel] Add IRTranslator support for G_FRINT

Add it as a simple intrinsic, update arm64-irtranslator.ll.

Differential Revision: https://reviews.llvm.org/D60893
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpptrunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.lltrunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
Revision 358786 by akhuang:
Attempt to fix buildbot failure in commit 1bb57bac959ac163fd7d8a76d734ca3e0ecee6ab.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/MachineFunction.cpptrunk/lib/CodeGen/MachineFunction.cpp
Revision 358785 by paquette:
[GlobalISel] Add a G_FRINT opcode

Equivalent to SelectionDAG's frint node.

Differential Revision: https://reviews.llvm.org/D60891
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/TargetOpcodes.deftrunk/include/llvm/Support/TargetOpcodes.def
The file was modified/llvm/trunk/include/llvm/Target/GenericOpcodes.tdtrunk/include/llvm/Target/GenericOpcodes.td
The file was modified/llvm/trunk/include/llvm/Target/GlobalISel/SelectionDAGCompat.tdtrunk/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
Revision 358784 by ctopper:
[X86] Add test case for D60801. NFC
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/arg-copy-elide-win64.lltrunk/test/CodeGen/X86/arg-copy-elide-win64.ll
Revision 358783 by akhuang:
[MS] Emit S_HEAPALLOCSITE debug info

Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.

Reviewers: hans, rnk

Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D60800
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGDebugInfo.cppN/A
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineFunction.htrunk/include/llvm/CodeGen/MachineFunction.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpptrunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.htrunk/lib/CodeGen/AsmPrinter/CodeViewDebug.h
The file was modified/llvm/trunk/lib/CodeGen/MachineFunction.cpptrunk/lib/CodeGen/MachineFunction.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpptrunk/lib/CodeGen/SelectionDAG/FastISel.cpp
The file was added/llvm/trunk/test/CodeGen/X86/label-heapallocsite.lltrunk/test/CodeGen/X86/label-heapallocsite.ll
Revision 358779 by cbieneman:
[CMake] Pass monorepo build settings in cross compile

This allows the cross compiled build targets to configure the LLVM tools and sub-projects that are part of the main build.

This is needed for generating native non llvm *-tablegen tools when cross compiling clang in the monorepo build environment.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/cmake/modules/CrossCompile.cmaketrunk/cmake/modules/CrossCompile.cmake
Revision 358774 by phosek:
[gn] Support dots in CMake paths in the sync script

Some file paths use dots to pick up sources from parent directories.

Differential Revision: https://reviews.llvm.org/D60734
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txtN/A
The file was modified/llvm/trunk/utils/gn/build/sync_source_lists_from_cmake.pytrunk/utils/gn/build/sync_source_lists_from_cmake.py
The file was modified/llvm/trunk/utils/gn/secondary/clang/tools/libclang/BUILD.gntrunk/utils/gn/secondary/clang/tools/libclang/BUILD.gn
Revision 358772 by asbirlea:
[LICM & MemorySSA] Make limit flags pass tuning options.

Summary:
Make the flags in LICM + MemorySSA tuning options in the old and new
pass managers.

Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60490
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Passes/PassBuilder.htrunk/include/llvm/Passes/PassBuilder.h
The file was modified/llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.htrunk/include/llvm/Transforms/IPO/PassManagerBuilder.h
The file was modified/llvm/trunk/include/llvm/Transforms/Scalar.htrunk/include/llvm/Transforms/Scalar.h
The file was modified/llvm/trunk/include/llvm/Transforms/Scalar/LICM.htrunk/include/llvm/Transforms/Scalar/LICM.h
The file was modified/llvm/trunk/include/llvm/Transforms/Utils/LoopUtils.htrunk/include/llvm/Transforms/Utils/LoopUtils.h
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpptrunk/lib/Transforms/IPO/PassManagerBuilder.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/LICM.cpptrunk/lib/Transforms/Scalar/LICM.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopSink.cpptrunk/lib/Transforms/Scalar/LoopSink.cpp
Revision 358771 by Amara Emerson:
Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores"

This introduces some runtime failures which I'll need to investigate further.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.htrunk/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-fallback.lltrunk/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll
The file was removed/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-non-pow2-load-store.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-non-pow2-load-store.mir
Revision 358764 by paquette:
[GlobalISel][AArch64] Legalize vector G_FPOW

This instruction is legalized in the same way as G_FSIN, G_FCOS, G_FLOG10, etc.

Update legalize-pow.mir and arm64-vfloatintrinsics.ll to reflect the change.

Differential Revision: https://reviews.llvm.org/D60218
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-pow.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-pow.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.lltrunk/test/CodeGen/AArch64/arm64-vfloatintrinsics.ll
Revision 358763 by asbirlea:
[NewPassManager] Adding pass tuning options: loop vectorize.

Summary:
Trying to add the plumbing necessary to add tuning options to the new pass manager.
Testing with the flags for loop vectorize.

Reviewers: chandlerc

Subscribers: sanjoy, mehdi_amini, jlebar, steven_wu, dexonsmith, dang, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59723
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Passes/PassBuilder.htrunk/include/llvm/Passes/PassBuilder.h
The file was modified/llvm/trunk/include/llvm/Transforms/Vectorize.htrunk/include/llvm/Transforms/Vectorize.h
The file was modified/llvm/trunk/include/llvm/Transforms/Vectorize/LoopVectorize.htrunk/include/llvm/Transforms/Vectorize/LoopVectorize.h
The file was modified/llvm/trunk/lib/LTO/LTOBackend.cpptrunk/lib/LTO/LTOBackend.cpp
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpptrunk/lib/Transforms/IPO/PassManagerBuilder.cpp
The file was modified/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpptrunk/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modified/llvm/trunk/tools/opt/NewPMDriver.cpptrunk/tools/opt/NewPMDriver.cpp
The file was modified/llvm/trunk/unittests/IR/PassBuilderCallbacksTest.cpptrunk/unittests/IR/PassBuilderCallbacksTest.cpp
Revision 358762 by maskray:
[dsymutil] DwarfLinker: delete unused parameter
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/DwarfLinker.cpptrunk/tools/dsymutil/DwarfLinker.cpp
Revision 358761 by spatel:
[SelectionDAG] soften splat mask assert/unreachable (PR41535)

These are general queries, so they should not die when given
a degenerate input like an all undef mask. Callers should be
able to deal with an op that will eventually be simplified away.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.htrunk/include/llvm/CodeGen/SelectionDAGNodes.h
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpptrunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/shuffle-mask-legal.lltrunk/test/CodeGen/AArch64/shuffle-mask-legal.ll
Revision 358760 by nico:
llvm-undname: Attempt to fix leak-on-invalid found by oss-fuzz
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
Revision 358755 by nico:
gn build: Merge r358722
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/unittests/StaticAnalyzer/BUILD.gntrunk/utils/gn/secondary/clang/unittests/StaticAnalyzer/BUILD.gn
Revision 358754 by nico:
gn build: Merge r358691
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/lib/Tooling/Refactoring/BUILD.gntrunk/utils/gn/secondary/clang/lib/Tooling/Refactoring/BUILD.gn
The file was modified/llvm/trunk/utils/gn/secondary/clang/unittests/Tooling/BUILD.gntrunk/utils/gn/secondary/clang/unittests/Tooling/BUILD.gn
Revision 358753 by fhahn:
[LTO] Add plumbing to save stats during LTO on Darwin.

Gold and ld on Linux already support saving stats, but the
infrastructure is missing on Darwin. Unfortunately it seems like the
configuration from lib/LTO/LTO.cpp is not used.

This patch adds a new LTOStatsFile option and adds plumbing in Clang to
use it on Darwin, similar to the way remarks are handled.

Currnetly the handling of LTO flags seems quite spread out, with a bunch
of duplication. But I am not sure if there is an easy way to improve
that?

Reviewers: anemet, tejohnson, thegameg, steven_wu

Reviewed By: steven_wu

Differential Revision: https://reviews.llvm.org/D60516
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/ToolChains/Darwin.cppN/A
The file was modified/llvm/trunk/include/llvm/LTO/LTO.htrunk/include/llvm/LTO/LTO.h
The file was modified/llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.htrunk/include/llvm/LTO/legacy/LTOCodeGenerator.h
The file was modified/llvm/trunk/lib/LTO/LTO.cpptrunk/lib/LTO/LTO.cpp
The file was modified/llvm/trunk/lib/LTO/LTOCodeGenerator.cpptrunk/lib/LTO/LTOCodeGenerator.cpp
Revision 358751 by maskray:
Change \r\n -> \n for llvm-symbolizer/help.test after rL358749
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-symbolizer/help.testtrunk/test/tools/llvm-symbolizer/help.test
Revision 358749 by ikudrin:
[llvm-symbolizer] Add llvm-addr2line

This adds an alias for llvm-symbolizer with different defaults so that
it can be used as a drop-in replacement for GNU's addr2line.

If a substring "addr2line" is found in the tool's name:
  * it defaults "-i", "-f" and "-C" to OFF;
  * it uses "--output-style=GNU" by default.

Differential Revision: https://reviews.llvm.org/D60067
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CommandGuide/index.rsttrunk/docs/CommandGuide/index.rst
The file was added/llvm/trunk/docs/CommandGuide/llvm-addr2line.mdtrunk/docs/CommandGuide/llvm-addr2line.md
The file was modified/llvm/trunk/docs/CommandGuide/llvm-symbolizer.rsttrunk/docs/CommandGuide/llvm-symbolizer.rst
The file was modified/llvm/trunk/test/CMakeLists.txttrunk/test/CMakeLists.txt
The file was modified/llvm/trunk/test/tools/llvm-symbolizer/demangle.strunk/test/tools/llvm-symbolizer/demangle.s
The file was added/llvm/trunk/test/tools/llvm-symbolizer/help.testtrunk/test/tools/llvm-symbolizer/help.test
The file was modified/llvm/trunk/test/tools/llvm-symbolizer/output-style-column.testtrunk/test/tools/llvm-symbolizer/output-style-column.test
The file was modified/llvm/trunk/test/tools/llvm-symbolizer/output-style-empty-line.testtrunk/test/tools/llvm-symbolizer/output-style-empty-line.test
The file was modified/llvm/trunk/test/tools/llvm-symbolizer/output-style-inlined.testtrunk/test/tools/llvm-symbolizer/output-style-inlined.test
The file was modified/llvm/trunk/test/tools/llvm-symbolizer/sym.testtrunk/test/tools/llvm-symbolizer/sym.test
The file was modified/llvm/trunk/tools/llvm-symbolizer/CMakeLists.txttrunk/tools/llvm-symbolizer/CMakeLists.txt
The file was modified/llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpptrunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
Revision 358748 by ikudrin:
[llvm-symbolizer] Unhide and document the "-output-style" option

With the latest changes, the option gets useful for users of
llvm-symbolizer, not only for the upcoming llvm-addr2line.

Differential Revision: https://reviews.llvm.org/D60816
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CommandGuide/llvm-symbolizer.rsttrunk/docs/CommandGuide/llvm-symbolizer.rst
The file was modified/llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpptrunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
Revision 358747 by ikudrin:
[llvm-symbolizer] Make the output with -output-style=GNU closer to addr2line's

This patch addresses two differences in the output of llvm-symbolizer
and GNU's addr2line:

* llvm-symbolizer prints an empty line after the report for an address.

* With "-f -i=0", llvm-symbolizer replaces the name of an inlined
  function with the name from the symbol table, i. e., the top caller
  function in the inlining chain. addr2line preserves the name of the
  inlined function.

Differential Revision: https://reviews.llvm.org/D60770
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/tools/llvm-symbolizer/output-style-column.testtrunk/test/tools/llvm-symbolizer/output-style-column.test
The file was added/llvm/trunk/test/tools/llvm-symbolizer/output-style-empty-line.testtrunk/test/tools/llvm-symbolizer/output-style-empty-line.test
The file was added/llvm/trunk/test/tools/llvm-symbolizer/output-style-inlined.testtrunk/test/tools/llvm-symbolizer/output-style-inlined.test
The file was removed/llvm/trunk/test/tools/llvm-symbolizer/output-style.testtrunk/test/tools/llvm-symbolizer/output-style.test
The file was modified/llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpptrunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
Revision 358746 by rksimon:
[AMDGPU] Regenerate extractelt->truncate test.

Prep work for D60462
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/extractelt-to-trunc.lltrunk/test/CodeGen/AMDGPU/extractelt-to-trunc.ll
Revision 358744 by bjope:
[CodeGen] Add "const" to MachineInstr::mayAlias

Summary:
The basic idea here is to make it possible to use
MachineInstr::mayAlias also when the MachineInstr
is const (or the "Other" MachineInstr is const).

The addition of const in MachineInstr::mayAlias
then rippled down to the need for adding const
in several other places, such as
TargetTransformInfo::getMemOperandWithOffset.

Reviewers: hfinkel

Reviewed By: hfinkel

Subscribers: hfinkel, MatzeB, arsenm, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60856
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineInstr.htrunk/include/llvm/CodeGen/MachineInstr.h
The file was modified/llvm/trunk/include/llvm/CodeGen/TargetInstrInfo.htrunk/include/llvm/CodeGen/TargetInstrInfo.h
The file was modified/llvm/trunk/lib/CodeGen/ImplicitNullChecks.cpptrunk/lib/CodeGen/ImplicitNullChecks.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineInstr.cpptrunk/lib/CodeGen/MachineInstr.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachinePipeliner.cpptrunk/lib/CodeGen/MachinePipeliner.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineScheduler.cpptrunk/lib/CodeGen/MachineScheduler.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineSink.cpptrunk/lib/CodeGen/MachineSink.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpptrunk/lib/Target/AArch64/AArch64InstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.htrunk/lib/Target/AArch64/AArch64InstrInfo.h
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64StorePairSuppress.cpptrunk/lib/Target/AArch64/AArch64StorePairSuppress.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpptrunk/lib/Target/AMDGPU/SIInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.htrunk/lib/Target/AMDGPU/SIInstrInfo.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpptrunk/lib/Target/AMDGPU/SIMachineScheduler.cpp
The file was modified/llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpptrunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.htrunk/lib/Target/Hexagon/HexagonInstrInfo.h
The file was modified/llvm/trunk/lib/Target/Lanai/LanaiInstrInfo.cpptrunk/lib/Target/Lanai/LanaiInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/Lanai/LanaiInstrInfo.htrunk/lib/Target/Lanai/LanaiInstrInfo.h
The file was modified/llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.cpptrunk/lib/Target/SystemZ/SystemZInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.htrunk/lib/Target/SystemZ/SystemZInstrInfo.h
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.cpptrunk/lib/Target/X86/X86InstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.htrunk/lib/Target/X86/X86InstrInfo.h
Revision 358743 by jamesm:
[PATCH] [MachineScheduler] Check pending instructions when an instruction is scheduled

Pending instructions that may have been blocked from being available by the HazardRecognizer may no longer may not be blocked any more when an instruction is scheduled; pending instructions should be re-checked in this case.

This is primarily aimed at VLIW targets with large parallelism and esoteric constraints.

No testcase as no in-tree targets have this behavior.

Differential revision: https://reviews.llvm.org/D60861
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/MachineScheduler.cpptrunk/lib/CodeGen/MachineScheduler.cpp
Revision 358742 by maskray:
[MergeFunc] Delete unused FunctionNode::release()
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/MergeFunctions.cpptrunk/lib/Transforms/IPO/MergeFunctions.cpp
Revision 358741 by maskray:
[MergeFunc] removeUsers: call remove() only on direct users

removeUsers uses a work list to collect indirect users and call remove()
on those functions. However it has a bug (`if (!Visited.insert(UU).second)`).

Actually, we don't have to collect indirect users.
After the merge of F and G, G's callers will be considered (added to
Deferred). If G's callers can be merged, G's callers' callers will be
considered.

Update the test unnamed-addr-reprocessing.ll to make it clear we can
still merge indirect callers.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/MergeFunctions.cpptrunk/lib/Transforms/IPO/MergeFunctions.cpp
The file was modified/llvm/trunk/test/Transforms/MergeFunc/unnamed-addr-reprocessing.lltrunk/test/Transforms/MergeFunc/unnamed-addr-reprocessing.ll
Revision 358740 by Piotr Sobczak:
[AMDGPU] Ignore non-SUnits edges

Summary:
Ignore edges to non-SUnits (e.g. ExitSU) when checking
for low latency instructions.

When calling the function isLowLatencyInstruction(),
an ExitSU could be on the list of successors, not necessarily
a regular SU. In other places in the code there is a check
"Succ->NodeNum >= DAGSize" to prevent further processing of
ExitSU as "Succ->getInstr()" is NULL in such a case.
Also, 8 out of 9 cases of "SUnit *Succ = SuccDep.getSUnit())"
has the guard, so it is clearly an omission here.

Change-Id: Ica86f0327c7b2e6bcb56958e804ea6c71084663b

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: MatzeB, arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, javed.absar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60864
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIMachineScheduler.cpptrunk/lib/Target/AMDGPU/SIMachineScheduler.cpp
Revision 358739 by chandlerc:
[CallSite removal]  Move the legacy PM, call graph, and some inliner
code to `CallBase`.

This patch focuses on the legacy PM, call graph, and some of inliner and legacy
passes interacting with those APIs from `CallSite` to the new `CallBase` class.
No interesting changes.

Differential Revision: https://reviews.llvm.org/D60412
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/CallGraph.htrunk/include/llvm/Analysis/CallGraph.h
The file was modified/llvm/trunk/lib/Analysis/CallGraph.cpptrunk/lib/Analysis/CallGraph.cpp
The file was modified/llvm/trunk/lib/Analysis/CallGraphSCCPass.cpptrunk/lib/Analysis/CallGraphSCCPass.cpp
The file was modified/llvm/trunk/lib/Transforms/Coroutines/Coroutines.cpptrunk/lib/Transforms/Coroutines/Coroutines.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpptrunk/lib/Transforms/IPO/ArgumentPromotion.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/Inliner.cpptrunk/lib/Transforms/IPO/Inliner.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PruneEH.cpptrunk/lib/Transforms/IPO/PruneEH.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpptrunk/lib/Transforms/Utils/InlineFunction.cpp
Revision 358738 by maskray:
[MergeFunc] Use less_first() as the comparator of Schwartzian transform
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/MergeFunctions.cpptrunk/lib/Transforms/IPO/MergeFunctions.cpp
Revision 358737 by ctopper:
[X86] Turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the AND could match a movzx.

Could get further improvements by recognizing (i64 and (anyext (i32 shl))).
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/narrow-shl-cst.lltrunk/test/CodeGen/X86/narrow-shl-cst.ll
Revision 358736 by ctopper:
[X86] Add test cases for turning (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) when the AND could match to a movzx.

We already reorder when C1 >> C2 would allow a smaller immediate encoding.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/narrow-shl-cst.lltrunk/test/CodeGen/X86/narrow-shl-cst.ll
Revision 358735 by ctopper:
[X86] Make sure we copy the HandleSDNode back to N before executing the default code after the switch in matchAddressRecursively

Summary:
There are two places where we create a HandleSDNode in address matching in order to handle the case where N is changed by CSE. But if we end up not matching, we fall back to code at the bottom of the switch that really would like N to point to something that wasn't CSEd away. So we should make sure we copy the handle back to N on any paths that can reach that code.

This appears to be the true reason we needed to check DELETED_NODE in the negation matching. In pr32329.ll we had two subtracts back to back. We recursed through the first subtract, and onto the second subtract. The second subtract called matchAddressRecursively on its LHS which caused that subtract to CSE. We ultimately failed the match and ended up in the default code. But N was pointing at the old node that had been deleted, but the default code didn't know that and took it as the base register. Then we unwound back to the first subtract and tried to access this bogus base reg requiring the check for deleted node. With this patch we now use the CSE result as the base reg instead.

matchAdd has been broken since sometime in 2015 when it was pulled out of the switch into a helper function. The assignment to N at the end was still there, but N was passed by value and not by reference so the update didn't go anywhere.

Reviewers: niravd, spatel, RKSimon, bkramer

Reviewed By: niravd

Subscribers: llvm-commits, hiraditya

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60843
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpptrunk/lib/Target/X86/X86ISelDAGToDAG.cpp
Revision 358734 by maskray:
[DWARF] Use hasFileAtIndex to properly verify DWARF 5 after rL358732
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/DebugInfo/DWARF/DWARFVerifier.cpptrunk/lib/DebugInfo/DWARF/DWARFVerifier.cpp
Revision 358732 by tamur:
[llvm] Prevent duplicate files in debug line header in dwarf 5: another attempt

Another attempt to land the changes in debug line header to prevent duplicate
files in Dwarf 5. I rolled back my previous commit because of a mistake in
generating the object file in a test. Meanwhile, I addressed some offline
comments and changed the implementation; the largest difference is that
MCDwarfLineTableHeader does not keep DwarfVersion but gets it as a parameter. I
also merged the patch to fix two lld tests that will strt to fail into this
patch.

Original Commit:

https://reviews.llvm.org/D59515

Original Message:
Motivation: In previous dwarf versions, file name indexes started from 1, and
the primary source file was not explicit. Dwarf 5 standard (6.2.4) prescribes
the primary source file to be explicitly given an entry with an index number 0.

The current implementation honors the specification by just duplicating the
main source file, once with index number 0, and later maybe with another
index number. While this is compliant with the letter of the standard, the
duplication causes problems for consumers of this information such as lldb.
(Some files are duplicated, where only some of them have a line table although
all refer to the same file)

With this change, dwarf 5 debug line section files always start from 0, and
the zeroth entry is not duplicated whenever possible. This requires different
handling of dwarf 4 and dwarf 5 during generation (e.g. when a function returns
an index zero for a file name, it signals an error in dwarf 4, but not in dwarf
5) However, I think the minor complication is worth it, because it enables all
consumers (lldb, gdb, dwarfdump, objdump, and so on) to treat all files in the
file name list homogenously.
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/test/ELF/debug-line-obj.sN/A
The file was modified/lld/trunk/test/ELF/debug-line-str.sN/A
The file was modified/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.htrunk/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
The file was modified/llvm/trunk/include/llvm/MC/MCDwarf.htrunk/include/llvm/MC/MCDwarf.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpptrunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
The file was modified/llvm/trunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpptrunk/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
The file was modified/llvm/trunk/lib/MC/MCAsmStreamer.cpptrunk/lib/MC/MCAsmStreamer.cpp
The file was modified/llvm/trunk/lib/MC/MCContext.cpptrunk/lib/MC/MCContext.cpp
The file was modified/llvm/trunk/lib/MC/MCDwarf.cpptrunk/lib/MC/MCDwarf.cpp
The file was modified/llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections.strunk/test/MC/ARM/dwarf-asm-multiple-sections.s
The file was modified/llvm/trunk/test/MC/ELF/debug-mixed-md5.lltrunk/test/MC/ELF/debug-mixed-md5.ll
The file was modified/llvm/trunk/test/MC/ELF/dwarf-file0.strunk/test/MC/ELF/dwarf-file0.s
The file was modified/llvm/trunk/test/tools/llvm-objdump/Inputs/embedded-sourcetrunk/test/tools/llvm-objdump/Inputs/embedded-source
The file was modified/llvm/trunk/test/tools/llvm-objdump/X86/function-sections-line-numbers.strunk/test/tools/llvm-objdump/X86/function-sections-line-numbers.s
Revision 358730 by maskray:
[APInt] Optimize umul_ov

Change two costly udiv() calls to lshr(1)*RHS + left-shift + plus

On one 64-bit umul_ov benchmark, I measured an obvious improvement: 12.8129s -> 3.6257s

Note, there may be some value to special case 64-bit (the most common
case) with __builtin_umulll_overflow().

Differential Revision: https://reviews.llvm.org/D60669
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/APInt.cpptrunk/lib/Support/APInt.cpp
The file was modified/llvm/trunk/unittests/ADT/APIntTest.cpptrunk/unittests/ADT/APIntTest.cpp
Revision 358728 by Saleem Abdulrasool:
MergeFunc: preserve COMDAT information when creating a thunk

We would previously drop the COMDAT on the thunk we generated when replacing a
function body with the forwarding thunk. This would result in a function that
may have been multiply emitted and multiply merged to be emitted with the same
name without the COMDAT. This is a hard error with PE/COFF where the COMDAT is
used for the deduplication of Value Witness functions for Swift.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/MergeFunctions.cpptrunk/lib/Transforms/IPO/MergeFunctions.cpp
The file was added/llvm/trunk/test/Transforms/MergeFunc/comdat.lltrunk/test/Transforms/MergeFunc/comdat.ll
Revision 358723 by asbirlea:
[LoopUnroll] Move list of params into a struct [NFCI].

Summary: Cleanup suggested in review of r358304.

Reviewers: sanjoy, efriedma

Subscribers: jlebar, zzheng, dmgreen, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60638
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/Utils/UnrollLoop.htrunk/include/llvm/Transforms/Utils/UnrollLoop.h
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpptrunk/lib/Transforms/Scalar/LoopUnrollPass.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpptrunk/lib/Transforms/Utils/LoopUnroll.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/LoopUnrollRuntime.cpptrunk/lib/Transforms/Utils/LoopUnrollRuntime.cpp
Revision 358718 by spatel:
[AArch64] add tests for mul-by-element; NFC
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/AArch64/mul_by_elt.lltrunk/test/CodeGen/AArch64/mul_by_elt.ll
Revision 358716 by Adrian Prantl:
Implement sys::fs::copy_file using the macOS copyfile(3) API
to support APFS clones.

This patch adds a Darwin-specific implementation of
llvm::sys::fs::copy_file() that uses the macOS copyfile(3) API to
support APFS copy-on-write clones, which should be faster and much
more space efficient.

https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/APFS_Guide/ToolsandAPIs/ToolsandAPIs.html

Differential Revision: https://reviews.llvm.org/D60802

This reapplies 358628 with an additional bugfix handling the case
where the destination file already exists. (Caught by the clang testsuite).
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Support/Path.cpptrunk/lib/Support/Path.cpp
The file was modified/llvm/trunk/lib/Support/Unix/Path.inctrunk/lib/Support/Unix/Path.inc
Revision 358715 by paquette:
[GlobalISel][AArch64] Legalize/select G_(S/Z/ANY)_EXT for v8s8s

This adds legalization for G_SEXT, G_ZEXT, and G_ANYEXT for v8s8s.

We were falling back on G_ZEXT in arm64-vabs.ll before, preventing us from
selecting the @llvm.aarch64.neon.sabd.v8i8 intrinsic.

This adds legalizer support for those 3, which gives us selection via the
importer. Update the relevant tests (legalize-ext.mir, select-int-ext.mir) and
add a GISel line to arm64-vabs.ll.

Differential Revision: https://reviews.llvm.org/D60881
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-ext.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-ext.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mirtrunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-vabs.lltrunk/test/CodeGen/AArch64/arm64-vabs.ll
Revision 358714 by paquette:
[GlobalISel][AArch64] Legalize v8s8 loads

Add legalizer support for loads of v8s8 and update legalize-load-store.mir.

Differential Revision: https://reviews.llvm.org/D60877
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64LegalizerInfo.cpptrunk/lib/Target/AArch64/AArch64LegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mirtrunk/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir
Revision 358708 by nico:
llvm-undname: Fix two more asserts-on-invalid, found by oss-fuzz
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/invalid-manglings.testtrunk/test/Demangle/invalid-manglings.test
Revision 358707 by nico:
llvm-undname: Fix two asserts-on-invalid
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpptrunk/lib/Demangle/MicrosoftDemangle.cpp
The file was modified/llvm/trunk/test/Demangle/invalid-manglings.testtrunk/test/Demangle/invalid-manglings.test
Revision 358704 by reames:
[GuardWidening] Wire up a NPM version of the LoopGuardWidening pass
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/Scalar/GuardWidening.htrunk/include/llvm/Transforms/Scalar/GuardWidening.h
The file was modified/llvm/trunk/lib/Passes/PassRegistry.deftrunk/lib/Passes/PassRegistry.def
The file was modified/llvm/trunk/lib/Transforms/Scalar/GuardWidening.cpptrunk/lib/Transforms/Scalar/GuardWidening.cpp
The file was added/llvm/trunk/test/Transforms/GuardWidening/basic-loop.lltrunk/test/Transforms/GuardWidening/basic-loop.ll
Revision 358702 by mcberg2017:
[NFC] FMF propagation for GlobalIsel
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpptrunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpptrunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
Revision 358701 by qcolombet:
[BlockExtractor] Extend the file format to support the grouping of basic blocks

Prior to this patch, each basic block listed in the extrack-blocks-file
would be extracted to a different function.

This patch adds the support for comma separated list of basic blocks
to form group.

When the region formed by a group is not extractable, e.g., not single
entry, all the blocks of that group are left untouched.

Let us see this new format in action (comments are not part of the
file format):
;; funcName bbName[,bbName...]
   foo      bb1        ;; Extract bb1 in its own function
   foo      bb2,bb3    ;; Extract bb2,bb3 in their own function
   bar      bb1,bb4    ;; Extract bb1,bb4 in their own function
   bar      bb2        ;; Extract bb2 in its own function

Assuming all regions are extractable, this will create one function and
thus one call per region.

Differential Revision: https://reviews.llvm.org/D60746
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/BlockExtractor.cpptrunk/lib/Transforms/IPO/BlockExtractor.cpp
The file was added/llvm/trunk/test/Transforms/BlockExtractor/extract-blocks-with-groups.lltrunk/test/Transforms/BlockExtractor/extract-blocks-with-groups.ll
Revision 358699 by froese:
[PowerPC] Add some PPC vec cost tests to prep for D60160 NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Analysis/CostModel/PowerPC/insert_extract.lltrunk/test/Analysis/CostModel/PowerPC/insert_extract.ll
The file was removed/llvm/trunk/test/Analysis/CostModel/PowerPC/p9.lltrunk/test/Analysis/CostModel/PowerPC/p9.ll
The file was added/llvm/trunk/test/Analysis/CostModel/PowerPC/vector_unit.lltrunk/test/Analysis/CostModel/PowerPC/vector_unit.ll
Revision 358692 by rksimon:
[X86] combineVectorTruncationWithPACKUS - remove split/concatenation of mask

combineVectorTruncationWithPACKUS is currently splitting the upper bit bit masking into 128-bit subregs and then concatenating them back together.

This was originally done to avoid regressions that caused existing subregs to be concatenated to the larger type just for the AND masking before being extracted again. This was fixed by @spatel (notably rL303997 and rL347356).

This also lets SimplifyDemandedBits do some further improvements before it hits the recursive depth limit.

My only annoyance with this is that we were broadcasting some xmm masks but we seem to have lost them by moving to ymm - but that's a known issue as the logic in lowerBuildVectorAsBroadcast isn't great.

Differential Revision: https://reviews.llvm.org/D60375#inline-539623
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/masked_store_trunc.lltrunk/test/CodeGen/X86/masked_store_trunc.ll
The file was modified/llvm/trunk/test/CodeGen/X86/psubus.lltrunk/test/CodeGen/X86/psubus.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-math-widen.lltrunk/test/CodeGen/X86/vector-trunc-math-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-math.lltrunk/test/CodeGen/X86/vector-trunc-math.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-packus-widen.lltrunk/test/CodeGen/X86/vector-trunc-packus-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-packus.lltrunk/test/CodeGen/X86/vector-trunc-packus.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-ssat-widen.lltrunk/test/CodeGen/X86/vector-trunc-ssat-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-ssat.lltrunk/test/CodeGen/X86/vector-trunc-ssat.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-usat-widen.lltrunk/test/CodeGen/X86/vector-trunc-usat-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-usat.lltrunk/test/CodeGen/X86/vector-trunc-usat.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc-widen.lltrunk/test/CodeGen/X86/vector-trunc-widen.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-trunc.lltrunk/test/CodeGen/X86/vector-trunc.ll
Revision 358688 by reames:
[LoopPred] Fix a blatantly obvious bug in r358684

The bug is that I didn't check whether the operand of the invariant_loads were themselves invariant.  I don't know how this got missed in the patch and review.  I even had an unreduced test case locally, and I remember handling this case, but I must have lost it in one of the rebases.  Oops.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopPredication.cpptrunk/lib/Transforms/Scalar/LoopPredication.cpp
The file was modified/llvm/trunk/test/Transforms/LoopPredication/invariant_load.lltrunk/test/Transforms/LoopPredication/invariant_load.ll
Revision 358687 by spatel:
[x86] add tests for improved insertelement to index 0 (PR41512); NFC

Patch proposal in D60852.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/insertelement-zero.lltrunk/test/CodeGen/X86/insertelement-zero.ll
Revision 358685 by stefan.graenitz:
[CMake] Allow custom extensions for externalized debug info

Summary:
Extra flexibility for emitting debug info to external files (remains Darwin only for now).
LLDB needs this functionality to emit a LLDB.framework.dSYM instead of LLDB.dSYM when building the framework, because the latter could conflict with the driver's lldb.dSYM when emitted in the same directory on case-insensitive file systems.

Reviewers: friss, bogner, beanz

Subscribers: mgorny, aprantl, llvm-commits, #lldb

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60862
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/cmake/modules/AddLLVM.cmaketrunk/cmake/modules/AddLLVM.cmake
Revision 358684 by reames:
[LoopPredication] Allow predication of loop invariant computations (within the loop)

The purpose of this patch is to eliminate a pass ordering dependence between LoopPredication and LICM. To understand the purpose, consider the following snippet of code inside some loop 'L' with IV 'i'
A = _a.length;
guard (i < A)
a = _a[i]
B = _b.length;
guard (i < B);
b = _b[i];
...
Z = _z.length;
guard (i < Z)
z = _z[i]
accum += a + b + ... + z;

Today, we need LICM to hoist the length loads, LoopPredication to make the guards loop invariant, and TrivialUnswitch to eliminate the loop invariant guard to establish must execute for the next length load. Today, if we can't prove speculation safety, we'd have to iterate these three passes 26 times to reduce this example down to the minimal form.

Using the fact that the array lengths are known to be invariant, we can short circuit this iteration. By forming the loop invariant form of all the guards at once, we remove the need for LoopPredication from the iterative cycle. At the moment, we'd still have to iterate LICM and TrivialUnswitch; we'll leave that part for later.

As a secondary benefit, this allows LoopPred to expose peeling oppurtunities in a much more obvious manner.  See the udiv test changes as an example.  If the udiv was not hoistable (i.e. we couldn't prove speculation safety) this would be an example where peeling becomes obviously profitable whereas it wasn't before.

A couple of subtleties in the implementation:
- SCEV's isSafeToExpand guarantees speculation safety (i.e. let's us expand at a new point).  It is not a precondition for expansion if we know the SCEV corresponds to a Value which dominates the requested expansion point.
- SCEV's isLoopInvariant returns true for expressions which compute the same value across all iterations executed, regardless of where the original Value is located.  (i.e. it can be in the loop)  This implies we have a speculation burden to prove before expanding them outside loops.
- invariant_loads and AA->pointsToConstantMemory are two cases that SCEV currently does not handle, but meets the SCEV definition of invariance.  I plan to sink this part into SCEV once this has baked for a bit.

Differential Revision: https://reviews.llvm.org/D60093
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopPredication.cpptrunk/lib/Transforms/Scalar/LoopPredication.cpp
The file was modified/llvm/trunk/test/Transforms/LoopPredication/basic.lltrunk/test/Transforms/LoopPredication/basic.ll
The file was modified/llvm/trunk/test/Transforms/LoopPredication/basic_widenable_branch_guards.lltrunk/test/Transforms/LoopPredication/basic_widenable_branch_guards.ll
The file was modified/llvm/trunk/test/Transforms/LoopPredication/invariant_load.lltrunk/test/Transforms/LoopPredication/invariant_load.ll
Revision 358681 by nha:
[SDA] Bug fix: Use IPD outside the loop as divergence bound

Summary:
The immediate post dominator of the loop header may be part of the divergent loop.
Since this /was/ the divergence propagation bound the SDA would not detect joins of divergent paths outside the loop.

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: mmasten, arsenm, jvesely, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59042
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/SyncDependenceAnalysis.cpptrunk/lib/Analysis/SyncDependenceAnalysis.cpp
The file was modified/llvm/trunk/test/Analysis/DivergenceAnalysis/AMDGPU/hidden_diverge.lltrunk/test/Analysis/DivergenceAnalysis/AMDGPU/hidden_diverge.ll
Revision 358680 by reames:
Fix a bug in SCEV's isSafeToExpand around speculation safety

isSafeToExpand was making a common, but dangerously wrong, mistake in assuming that if any instruction within a basic block executes, that all instructions within that block must execute.  This can be trivially shown to be false by considering the following small example:
bb:
  add x, y  <-- InsertionPoint
  call @throws()
  udiv x, y <-- SCEV* S
  br ...

It's clearly not legal to expand S above the throwing call, but the previous logic would do so since S dominates (but not properlyDominates) the block containing the InsertionPoint.

Since iterating instructions w/in a block is expensive, this change special cases two cases: 1) S is an operand of InsertionPoint, and 2) InsertionPoint is the terminator of it's block.  These two together are enough to keep all current optimizations triggering while fixing the latent correctness issue.

As best I can tell, this is a silent bug in current ToT.  Given that, there's no tests with this change.  It was noticed in an upcoming optimization change (D60093), and was reviewed as part of that.  That change will include the test which caused me to notice the issue.  I'm submitting this seperately so that anyone bisecting a problem gets a clear explanation.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpptrunk/lib/Analysis/ScalarEvolutionExpander.cpp
Revision 358673 by d0k:
MinidumpYAML: Fix ambiguity between std::make_unique and llvm::make_unique
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ObjectYAML/MinidumpYAML.cpptrunk/lib/ObjectYAML/MinidumpYAML.cpp
Revision 358672 by labath:
MinidumpYAML: Add support for ModuleList stream

Summary:
This patch adds support for yaml (de)serialization of the minidump
ModuleList stream. It's a fairly straight forward-application of the
existing patterns to the ModuleList structures defined in previous
patches.

One thing, which may be interesting to call out explicitly is the
addition of "new" allocation functions to the helper BlobAllocator
class. The reason for this was, that there was an emerging pattern of a
need to allocate space for entities, which do not have a suitable
lifetime for use with the existing allocation functions. A typical
example of that was the "size" of various lists, which is only available
as a temporary returned by the .size() method of some container. For
these cases, one can use the new set of allocation functions, which
will take a temporary object, and store it in an allocator-managed
buffer until it is written to disk.

Reviewers: amccarth, jhenderson, clayborg, zturner

Subscribers: lldb-commits, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60405
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/BinaryFormat/Minidump.htrunk/include/llvm/BinaryFormat/Minidump.h
The file was modified/llvm/trunk/include/llvm/Object/Minidump.htrunk/include/llvm/Object/Minidump.h
The file was modified/llvm/trunk/include/llvm/ObjectYAML/MinidumpYAML.htrunk/include/llvm/ObjectYAML/MinidumpYAML.h
The file was modified/llvm/trunk/lib/ObjectYAML/MinidumpYAML.cpptrunk/lib/ObjectYAML/MinidumpYAML.cpp
The file was modified/llvm/trunk/test/tools/obj2yaml/basic-minidump.yamltrunk/test/tools/obj2yaml/basic-minidump.yaml
Revision 358670 by nico:
gn build: Merge r358607
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gntrunk/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn
Revision 358669 by nico:
gn build: Merge r358633
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/lib/Sema/BUILD.gntrunk/utils/gn/secondary/clang/lib/Sema/BUILD.gn
Revision 358668 by nico:
gn build: Merge r358620
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang-tools-extra/clang-tidy/objc/BUILD.gntrunk/utils/gn/secondary/clang-tools-extra/clang-tidy/objc/BUILD.gn
Revision 358667 by rupprecht:
[llvm-objcopy] Add -B mips
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/binary-input-arch.testtrunk/test/tools/llvm-objcopy/ELF/binary-input-arch.test
The file was modified/llvm/trunk/tools/llvm-objcopy/CopyConfig.cpptrunk/tools/llvm-objcopy/CopyConfig.cpp
Revision 358656 by grimar:
[yaml2elf/obj2yaml] - Allow normal parsing/dumping of the .rela.dyn section

.rela.dyn is a section that has sh_info normally
set to zero. And Info is an optional field in the description
of the relocation section in YAML.

But currently, yaml2obj would fail to produce the object when
Info is not explicitly listed.

The patch fixes the issue.

Differential revision: https://reviews.llvm.org/D60820
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/tools/obj2yaml/elf-reladyn-section-shinfo.yamltrunk/test/tools/obj2yaml/elf-reladyn-section-shinfo.yaml
The file was modified/llvm/trunk/tools/yaml2obj/yaml2elf.cpptrunk/tools/yaml2obj/yaml2elf.cpp
Revision 358651 by rksimon:
[X86][SSE] Lower ICMP EQ(AND(X,C),C) -> SRA(SHL(X,LOG2(C)),BW-1) iff C is power-of-2.

This replaces the MOVMSK combine introduced at D52121/rL342326

(movmsk (setne (and X, (1 << C)), 0)) -> (movmsk (X << C))

with the more general icmp lowering so it can pick up more cases through bitcasts - notably vXi8 cases which use vXi16 shifts+masks, this patch can remove the mask and use pcmpgtb(0,x) for the sra.

Differential Revision: https://reviews.llvm.org/D60625
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpptrunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/movmsk-cmp.lltrunk/test/CodeGen/X86/movmsk-cmp.ll
Revision 358649 by jhenderson:
[llvm-objcopy][llvm-strip] Add switch to allow removing referenced sections

llvm-objcopy currently emits an error if a section to be removed is
referenced by another section. This is a reasonable thing to do, but is
different to GNU objcopy. We should allow users who know what they are
doing to have a way to produce the invalid ELF. This change adds a new
switch --allow-broken-links to both llvm-strip and llvm-objcopy to do
precisely that. The corresponding sh_link field is then set to 0 instead
of an error being emitted.

I cannot use llvm-readelf/readobj to test the link fields because they
emit an error if any sections, like the .dynsym, cannot be properly
loaded.

Reviewed by: rupprecht, grimar

Differential Revision: https://reviews.llvm.org/D60324
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/dynsym-error-remove-strtab.testtrunk/test/tools/llvm-objcopy/ELF/dynsym-error-remove-strtab.test
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/reloc-error-remove-symtab.testtrunk/test/tools/llvm-objcopy/ELF/reloc-error-remove-symtab.test
The file was added/llvm/trunk/test/tools/llvm-objcopy/ELF/remove-linked-section.testtrunk/test/tools/llvm-objcopy/ELF/remove-linked-section.test
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/symtab-error-on-remove-strtab.testtrunk/test/tools/llvm-objcopy/ELF/symtab-error-on-remove-strtab.test
The file was modified/llvm/trunk/tools/llvm-objcopy/COFF/COFFObjcopy.cpptrunk/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
The file was modified/llvm/trunk/tools/llvm-objcopy/CopyConfig.cpptrunk/tools/llvm-objcopy/CopyConfig.cpp
The file was modified/llvm/trunk/tools/llvm-objcopy/CopyConfig.htrunk/tools/llvm-objcopy/CopyConfig.h
The file was modified/llvm/trunk/tools/llvm-objcopy/ELF/ELFObjcopy.cpptrunk/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
The file was modified/llvm/trunk/tools/llvm-objcopy/ELF/Object.cpptrunk/tools/llvm-objcopy/ELF/Object.cpp
The file was modified/llvm/trunk/tools/llvm-objcopy/ELF/Object.htrunk/tools/llvm-objcopy/ELF/Object.h
The file was modified/llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.tdtrunk/tools/llvm-objcopy/ObjcopyOpts.td
The file was modified/llvm/trunk/tools/llvm-objcopy/StripOpts.tdtrunk/tools/llvm-objcopy/StripOpts.td
Revision 358648 by c-rhodes:
Test commit access [NFC]

Remove a trailing space
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/IR/IRBuilderTest.cpptrunk/unittests/IR/IRBuilderTest.cpp
Revision 358647 by skatkov:
[NewPM] Add Option handling for LoopVectorize

This patch enables passing options to LoopVectorizePass via the passes pipeline.

Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe
Reviewed By: fedor.sergeev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60681
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/Vectorize/LoopVectorize.htrunk/include/llvm/Transforms/Vectorize/LoopVectorize.h
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/lib/Passes/PassRegistry.deftrunk/lib/Passes/PassRegistry.def
Revision 358644 by zhangkang:
[PowerPC] Fix wrong ElemSIze when calling isConsecutiveLS()

Summary:
This issue from the bugzilla: https://bugs.llvm.org/show_bug.cgi?id=41177

When the two operands for BUILD_VECTOR are same, we will get assert error.
llvm::SDValue combineBVOfConsecutiveLoads(llvm::SDNode*, llvm::SelectionDAG&):
Assertion `!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) &&
"The loads cannot be both consecutive and reverse consecutive."' failed.

This error caused by the wrong ElemSIze when calling isConsecutiveLS(). We
should use `getScalarType().getStoreSize();` to get the ElemSize instread of
`getScalarSizeInBits() / 8`.

Reviewed By: jsji

Differential Revision: https://reviews.llvm.org/D60811
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpptrunk/lib/Target/PowerPC/PPCISelLowering.cpp
The file was added/llvm/trunk/test/CodeGen/PowerPC/pr41177.lltrunk/test/CodeGen/PowerPC/pr41177.ll
Revision 358643 by xur:
[llvm-profdata] Fix one bad format in llvm-profdata CommandGuide doc. NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CommandGuide/llvm-profdata.rsttrunk/docs/CommandGuide/llvm-profdata.rst
Revision 358641 by echristo:
Elaborate why we have an option on by default for enabling chr.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Passes/PassBuilder.cpptrunk/lib/Passes/PassBuilder.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpptrunk/lib/Transforms/IPO/PassManagerBuilder.cpp
Revision 358640 by tpr:
[AMDGPU] Avoid DAG combining assert with fneg(fadd(A,0))

fneg combining attempts to turn it into fadd(fneg(A), fneg(0)), but
creating the new fadd folds to just fneg(A). When A has multiple uses,
this confuses it and you