FailedChanges

Summary

  1. [llvm-readobj] - Refactor the code. It's a straightforward refactoring that allows to simplify and encapsulate the code. Differential revision: https://reviews.llvm.org/D67624
  2. [Clang] Pragma vectorize_width() implies vectorize(enable) Specifying the vectorization width was supposed to implicitly enable vectorization, except that it wasn't really doing this. It was only setting the vectorize.width metadata, but not vectorize.enable. This should fix PR27643. Differential Revision: https://reviews.llvm.org/D66290
  3. [llvm-objcopy] - Remove python invocations from 2 test cases. It is possible to use yaml2obj to create sections with overlapping sh_offset now. This patch does that. Differential revision: https://reviews.llvm.org/D67610
  4. [RISCV] Add option aliases: -mcmodel=medany and -mcmodel=medlow RISC-V GCC use -mcmodel=medany and -mcmodel=medlow, but LLVM use -mcmodel=small and -mcmodel=medium. Add those two option aliases for provide same user interface between GCC and LLVM. Reviewed By: lenary Differential Revision: https://reviews.llvm.org/D67066
  5. [bugpoint] Add support for -Oz and properly enable -Os. This patch adds -Oz as option and also properly enables support for -Os. Currently, the existing check for -Os is dead, because the enclosing if only checks of O1, O2 and O3. There is still a difference between the -Oz pipeline compared to opt, but I have not been able to track that down yet. Reviewers: bogner, sebpop, efriedma Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D67593
  6. [RISCV] Define __riscv_cmodel_medlow and __riscv_cmodel_medany correctly RISC-V LLVM was only implement small/medlow code model, so it defined __riscv_cmodel_medlow directly without check. Now, we have medium/medany code model in RISC-V back-end, it should define according the actually code model. Reviewed By: lewis-revill Differential Revision: https://reviews.llvm.org/D67065
  7. [ARM][MVE] Add invalidForTailPredication to TSFlags Set this bit for the MVE reduction instructions to prevent a loop from becoming tail predicated in their presence. Differential Revision: https://reviews.llvm.org/D67444
  8. [Attributor] Use Alias Analysis in noalias callsite argument deduction Summary: This patch adds a check of alias analysis in `noalias` callsite argument deduction. Reviewers: jdoerfert, sstefan1 Reviewed By: jdoerfert Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67604
  9. [clangd] Remove stale comment. NFC
  10. [Attributor] Create helper struct for handling analysis getters Summary: This patch introduces a helper struct `AnalysisGetter` to put together analysis getters. In this patch, a getter for `AAResult` is also added for `noalias`. Reviewers: jdoerfert, sstefan1 Reviewed By: jdoerfert Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67603
  11. [git-llvm] Do not reinvent `@{upstream}` (take 2) This makes git-llvm more of a thin wrapper around git while temporarily maintaining backwards compatibility with past git-llvm behavior. Using @{upstream} makes git-llvm more robust when used with a nontrivial local repository. https://reviews.llvm.org/D67389
  12. [X86] Split oversized vXi1 vector arguments and return values into scalars on avx512 targets. Previously we tried to split them into narrower v64i1 or v16i1 pieces that each got promoted to vXi8 and then passed in a zmm or xmm register. But this crashes when you need to pass more pieces than available registers reserved for argument passing. The scalarizing done here generates much longer and slower code, but is consistent with the behavior of avx2 and earlier targets for these types. Fixes PR43323.
  13. [X86] Allow masked VBROADCAST instructions to be turned into BLENDM with a broadcast load to avoid a copy. The BLENDM instructions allow an 2 sources and an independent destination while masked VBROADCAST has the destination tied to the source.
  14. [X86] Add support for commuting EVEX VCMP instructons with any immediate value. Previously we limited to the EQ/NE/TRUE/FALSE/ORD/UNORD immediates.
  15. [X86] Add test case for missed opportunity to commute a VCMP instruction after unfolding one load in order to fold another load.
  16. [X86] Enable commuting of EVEX VCMP for all immediate values during isel.
  17. Fix reliance on -flax-vector-conversions in AVX intrinsics headers and corresponding tests.
  18. Fix reliance on lax vector conversions in tests for x86 intrinsics.
  19. Remove reliance on lax vector conversions from altivec.h in VSX mode.
  20. Push lambda scope earlier when transforming lambda expression Differential Revision: https://reviews.llvm.org/D66067
  21. [libFuzzer] Always print DSO map on Fuchsia libFuzzer launch Fuchsia doesn't have /proc/id/maps, so it relies on the kernel logging system to provide the DSO map to be able to symbolize in the context of ASLR. The DSO map is logged automatically on Fuchsia when encountering a crash or writing to the sanitizer log for the first time in a process. There are several cases where libFuzzer doesn't encounter a crash, e.g. on timeouts, OOMs, and when configured to print new PCs as they become covered, to name a few. Therefore, this change always writes to the sanitizer log on startup to ensure the DSO map is available in the log. Author: aarongreen Differential Revision: https://reviews.llvm.org/D66233
  22. [OPENMP] Fix the test, NFC
  23. llvm-reduce: Clean out previous test temp/output dir, since it was a dir and now it's used as just a single file
  24. llvm-reduce: Remove some string copies
  25. Revert r372035: "[lit] Make internal diff work in pipelines" This breaks a Windows bot.
  26. [GlobalISel] Partially revert r371901. r371901 was overeager and widenScalarDst() and the like in the legalizer attempt to increment the insert point given in order to add new instructions after the currently legalizing inst. In cases where the insertion point is not exactly the current instruction, then callers need to de-compensate for the behaviour by decrementing the insertion iterator before calling them. It's not a nice state of affairs, for now just undo the problematic parts of the change.
  27. llvm-reduce: Make tests shell-independent by passing the interpreter on the command line rather than using #! in the test file
  28. Add libc to path mappings in git-llvm.
  29. [PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32 Add the missing piece of r372029. Somehow when the patch for review D61961 was committed, only the test case went in and the code didn't. This of course caused all kinds of build bot breaks. This patch just adds the code for that patch. Author: Lei Huang Differential revision: https://reviews.llvm.org/D61961
  30. [Remarks] Allow remarks::Format::YAML to take a string table It should be allowed to take a string table in case all the strings in the remarks point there, but it shouldn't use it during serialization.
  31. [test] Clean up previous raw profile before merging into it This fixes a test failure in instrprof-set-file-object-merging.c which seems to have been caused by reuse of stale data in old raw profiles.
  32. [OPENMP]Fix the test, NFC.
  33. [Modules][Objective-C] Use complete decl from module when diagnosing missing import Summary: Otherwise the definition (first found) for ObjCInterfaceDecl's might precede the module one, which will eventually lead to crash, since diagnoseMissingImport needs one coming from a module. This behavior changed after Richard's r342018, which started to look into the definition of ObjCInterfaceDecls. rdar://problem/49237144 Reviewers: rsmith, arphaman Subscribers: jkorous, dexonsmith, ributzka, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66982
  34. [compiler-rt][crt] make test case nontrivial in check_cxx_section_exists Summary: .init_array gets optimized away when building with -O2 and as a result, check_cxx_section_exists failed to pass -DCOMPILER_RT_HAS_INITFINI_ARRAY when building crtbegin.o and crtend.o, which causes binaries linked with them encounter segmentation fault. See https://crbug.com/855759 for details. This change prevents .init_array section to be optimized away even with -O2 or higher optimization level. Subscribers: dberris, mgorny, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D67628
  35. [clang-tidy] add checks to bugprone-posix-return This check now also checks if any calls to pthread_* functions expect negative return values. These functions return either 0 on success or an errno on failure, which is positive only.
  36. [lit] Make internal diff work in pipelines When using lit's internal shell, RUN lines like the following accidentally execute an external `diff` instead of lit's internal `diff`: ``` # RUN: program | diff file - # RUN: not diff file1 file2 | FileCheck %s ``` Such cases exist now, in `clang/test/Analysis` for example. We are preparing patches to ensure lit's internal `diff` is called in such cases, which will then fail because lit's internal `diff` cannot currently be used in pipelines and doesn't recognize `-` as a command-line option. To enable pipelines, this patch moves lit's `diff` implementation into an out-of-process script, similar to lit's `cat` implementation. A follow-up patch will implement `-` to mean stdin. Reviewed By: probinson, stella.stamenova Differential Revision: https://reviews.llvm.org/D66574
  37. Revert "Implement std::condition_variable via pthread_cond_clockwait() where available" This reverts commit 5e37d7f9ff257ec62d733d3d94b11f03e0fe51ca.
  38. [NFC] Test commit access
  39. [Docs] Bug fix for docs homepage Removes reference to non-existent Reference Documentation page.
  40. [Docs] Adds Getting Started/Tutorials, Reference to LLVM docs homepage Adds a section for Getting Started/Tutorials and Reference topics to the LLVM docs homepage.
  41. [PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32 This is a follow up patch from https://reviews.llvm.org/D57857 to handle extract_subvector v4f32. For cases where we fpext of v2f32 to v2f64 from extract_subvector we currently generate on P9 the following: lxv 0, 0(3) xxsldwi 1, 0, 0, 1 xscvspdpn 2, 0 xxsldwi 3, 0, 0, 3 xxswapd 0, 0 xscvspdpn 1, 1 xscvspdpn 3, 3 xscvspdpn 0, 0 xxmrghd 0, 0, 3 xxmrghd 1, 2, 1 stxv 0, 0(4) stxv 1, 0(5) This patch custom lower it to the following sequence: lxv 0, 0(3) # load the v4f32 <w0, w1, w2, w3> xxmrghw 2, 0, 0 # Produce the following vector <w0, w0, w1, w1> xxmrglw 3, 0, 0 # Produce the following vector <w2, w2, w3, w3> xvcvspdp 2, 2 # FP-extend to <d0, d1> xvcvspdp 3, 3 # FP-extend to <d2, d3> stxv 2, 0(5) # Store <d0, d1> (%vecinit11) stxv 3, 0(4) # Store <d2, d3> (%vecinit4) Differential Revision: https://reviews.llvm.org/D61961
  42. Open fstream files in O_CLOEXEC mode when possible. Reviewers: EricWF, mclow.lists, ldionne Reviewed By: ldionne Subscribers: smeenai, dexonsmith, christof, ldionne, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D59839
  43. do not emit -Wunused-macros warnings in -frewrite-includes mode (PR15614) -frewrite-includes calls PP.SetMacroExpansionOnlyInDirectives() to avoid macro expansions that are useless in that mode, but this can lead to -Wunused-macros false positives. As -frewrite-includes does not emit normal warnings, block -Wunused-macros too. Differential Revision: https://reviews.llvm.org/D65371
  44. [Coverage] Speed up file-based queries for coverage info, NFC Speed up queries for coverage info in a file by reducing the amount of time spent determining whether a function record corresponds to a file. This gives a 36% speedup when generating a coverage report for `llc`. The reduction is entirely in user time. rdar://54758110 Differential Revision: https://reviews.llvm.org/D67575
  45. [Coverage] Assert that filenames in a TU are unique, NFC
  46. [LTO][Legacy] Add new C inferface to query libcall functions Summary: This is needed to implemented the same approach as lld (implemented in r338434) for how to handling symbols that can be generated by LTO code generator but not present in the symbol table for linker that uses legacy C APIs. libLTO is in charge of providing the list of symbols. Linker is in charge of implementing the eager loading from static libraries using the list of symbols. rdar://problem/52853974 Reviewers: tejohnson, bd1976llvm, deadalnix, espindola Reviewed By: tejohnson Subscribers: emaste, arichardson, hiraditya, MaskRay, dang, kledzik, mehdi_amini, inglorion, jkorous, dexonsmith, ributzka, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67568
  47. [PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups This fixes relocations against __profd_ symbols in discarded sections, which is PR41380. In general, instrumentation happens very early, and optimization and inlining happens afterwards. The counters for a function are calculated early, and after inlining, counters for an inlined function may be widely referenced by other functions. For C++ inline functions of all kinds (linkonce_odr & available_externally mainly), instr profiling wants to deduplicate these __profc_ and __profd_ globals. Otherwise the binary would be quite large. I made __profd_ and __profc_ comdat in r355044, but I chose to make __profd_ internal. At the time, I was only dealing with coverage, and in that case, none of the instrumentation needs to reference __profd_. However, if you use PGO, then instrumentation passes add calls to __llvm_profile_instrument_range which reference __profd_ globals. The solution is to make these globals externally visible by using linkonce_odr linkage for data as was done for counters. This is safe because PGO adds a CFG hash to the names of the data and counter globals, so if different TUs have different globals, they will get different data and counter arrays. Reviewers: xur, hans Differential Revision: https://reviews.llvm.org/D67579
  48. [ARM][Codegen] Autogenerate arm-cgp-casts.ll test. Apparently it got broken by r372009 while i thought it was r372012.
  49. Implement std::condition_variable via pthread_cond_clockwait() where available std::condition_variable is currently implemented via pthread_cond_timedwait() on systems that use pthread. This is problematic, since that function waits by default on CLOCK_REALTIME and libc++ does not provide any mechanism to change from this default. Due to this, regardless of if condition_variable::wait_until() is called with a chrono::system_clock or chrono::steady_clock parameter, condition_variable::wait_until() will wait using CLOCK_REALTIME. This is not accurate to the C++ standard as calling condition_variable::wait_until() with a chrono::steady_clock parameter should use CLOCK_MONOTONIC. This is particularly problematic because CLOCK_REALTIME is a bad choice as it is subject to discontinuous time adjustments, that may cause condition_variable::wait_until() to immediately timeout or wait indefinitely. This change fixes this issue with a new POSIX function, pthread_cond_clockwait() proposed on http://austingroupbugs.net/view.php?id=1216. The new function is similar to pthread_cond_timedwait() with the addition of a clock parameter that allows it to wait using either CLOCK_REALTIME or CLOCK_MONOTONIC, thus allowing condition_variable::wait_until() to wait using CLOCK_REALTIME for chrono::system_clock and CLOCK_MONOTONIC for chrono::steady_clock. pthread_cond_clockwait() is implemented in glibc (2.30 and later) and Android's bionic (Android API version 30 and later). This change additionally makes wait_for() and wait_until() with clocks other than chrono::system_clock use CLOCK_MONOTONIC.<Paste>
  50. [Clang][Codegen] Disable arm_acle.c test. This test is broken by design. Clang codegen tests should not depend on llvm middle-end behaviour, they should *only* test clang codegen. Yet this test runs whole optimization pipeline. I've really tried to fix it, but there isn't just a few things that depend on passes, but everything there does.
  51. [Clang][Codegen] Relax available-externally-suppress.c test That test is broken by design. It depends on llvm middle-end behavior. No clang codegen test should be doing that. This one is salvageable by relaxing check lines.
  52. [X86][AVX] matchShuffleWithSHUFPD - add support for zeroable operands Determine if all of the uses of LHS/RHS operands can be replaced with a zero vector.
  53. [ARM] A predicate cast of a predicate cast is a predicate cast The adds some very basic folding of PREDICATE_CASTS, removing cases when they are chained together. These would already be removed eventually, as these are lowered to copies. This just allows it to happen earlier, which can help other simplifications. Differential Revision: https://reviews.llvm.org/D67591
  54. [OPENMP]Fix parsing/sema for function templates with declare simd. Need to return original declaration group with FunctionTemplateDecl, not the inner FunctionDecl, to correctly handle parsing of directives with the templates parameters.
  55. [SimplifyCFG] FoldTwoEntryPHINode(): consider *total* speculation cost, not per-BB cost Summary: Previously, if the threshold was 2, we were willing to speculatively execute 2 cheap instructions in both basic blocks (thus we were willing to speculatively execute cost = 4), but weren't willing to speculate when one BB had 3 instructions and other one had no instructions, even thought that would have total cost of 3. This looks inconsistent to me. I don't think `cmov`-like instructions will start executing until both of it's inputs are available: https://godbolt.org/z/zgHePf So i don't see why the existing behavior is the correct one. Also, let's add it's own `cl::opt` for this threshold, with default=4, so it is not stricter than the previous threshold: will allow to fold when there are 2 BB's each with cost=2. And since the logic has changed, it will also allow to fold when one BB has cost=3 and other cost=1, or there is only one BB with cost=4. This is an alternative solution to D65148: This fix is mainly motivated by `signbit-like-value-extension.ll` test. That pattern comes up in JPEG decoding, see e.g. `Figure F.12 – Extending the sign bit of a decoded value in V` of `ITU T.81` (JPEG specification). That branch is not predictable, and it is within the innermost loop, so the fact that that pattern ends up being stuck with a branch instead of `select` (i.e. `CMOV` for x86) is unlikely to be beneficial. This has great results on the final assembly (vanilla test-suite + RawSpeed): (metric pass - D67240) | metric | old | new | delta | % | | x86-mi-counting.NumMachineFunctions | 37720 | 37721 | 1 | 0.00% | | x86-mi-counting.NumMachineBasicBlocks | 773545 | 771181 | -2364 | -0.31% | | x86-mi-counting.NumMachineInstructions | 7488843 | 7486442 | -2401 | -0.03% | | x86-mi-counting.NumUncondBR | 135770 | 135543 | -227 | -0.17% | | x86-mi-counting.NumCondBR | 423753 | 422187 | -1566 | -0.37% | | x86-mi-counting.NumCMOV | 24815 | 25731 | 916 | 3.69% | | x86-mi-counting.NumVecBlend | 17 | 17 | 0 | 0.00% | We significantly decrease basic block count, notably decrease instruction count, significantly decrease branch count and very significantly increase `cmov` count. Performance-wise, unsurprisingly, this has great effect on target RawSpeed benchmark. I'm seeing 5 **major** improvements: ``` Benchmark Time CPU Time Old Time New CPU Old CPU New ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49 Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_mean -0.3064 -0.3064 226.9913 157.4452 226.9800 157.4384 Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_median -0.3057 -0.3057 226.8407 157.4926 226.8282 157.4828 Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_stddev -0.4985 -0.4954 0.3051 0.1530 0.3040 0.1534 Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49 Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_mean -0.1747 -0.1747 80.4787 66.4227 80.4771 66.4146 Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_median -0.1742 -0.1743 80.4686 66.4542 80.4690 66.4436 Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_stddev +0.6089 +0.5797 0.0670 0.1078 0.0673 0.1062 Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49 Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_mean -0.1598 -0.1598 171.6996 144.2575 171.6915 144.2538 Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_median -0.1598 -0.1597 171.7109 144.2755 171.7018 144.2766 Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_stddev +0.4024 +0.3850 0.0847 0.1187 0.0848 0.1175 Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49 Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_mean -0.0550 -0.0551 280.3046 264.8800 280.3017 264.8559 Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_median -0.0554 -0.0554 280.2628 264.7360 280.2574 264.7297 Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_stddev +0.7005 +0.7041 0.2779 0.4725 0.2775 0.4729 Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49 Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_mean -0.0354 -0.0355 316.7396 305.5208 316.7342 305.4890 Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_median -0.0354 -0.0356 316.6969 305.4798 316.6917 305.4324 Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_stddev +0.0493 +0.0330 0.3562 0.3737 0.3563 0.3681 ``` That being said, it's always best-effort, so there will likely be cases where this worsens things. Reviewers: efriedma, craig.topper, dmgreen, jmolloy, fhahn, Carrot, hfinkel, chandlerc Reviewed By: jmolloy Subscribers: xbolva00, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67318
  56. [clangd] Simplify semantic highlighting visitor Summary: - Functions to compute highlighting kinds for things are separated from the ones that add highlighting tokens. This keeps each of them more focused on what they're doing: getting locations and figuring out the kind of the entity, correspondingly. - Less special cases in visitor for various nodes. This change is an NFC. Reviewers: hokein Reviewed By: hokein Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D67341
  57. [InstCombine] remove unneeded one-use checks for icmp fold Related folds were added in: rL125734 ...the code comment about register pressure is discussed in more detail in: https://bugs.llvm.org/show_bug.cgi?id=2698 But 10 years later, perf testing bzip2 with this change now shows a slight (0.2% average) improvement on Haswell although that's probably within test noise. Given that this is IR canonicalization, we shouldn't be worried about register pressure though; the backend should be able to adjust for that as needed. This is part of solving PR43310 the theoretically right way: https://bugs.llvm.org/show_bug.cgi?id=43310 ...ie, if we don't cripple basic transforms, then we won't need to add special-case code to detect larger patterns. rL371940 and rL371981 are related patches in this series.
  58. [InstCombine] move tests for icmp+add; NFC
  59. [ARM] Add patterns for BSWAP intrinsic on MVE BSWAP can use the VREV instruction on MVE to produce better results than expanding.
  60. [ARM] Add patterns for bitreverse intrinsic on MVE BITREVERSE can use the VBRSR which will reverse and right shift. Shifting right by 0 will just reverse the bits.
  61. [ARM] Lower CTTZ on MVE Lower CTTZ on MVE using VBRSR and VCLS which will reverse the bits and count the leading zeros, equivalent to a count trailing zeros (CTTZ).
  62. [ARM] Add patterns for CTLZ on MVE CTLZ intrinsic can use the VCLS instruction on MVE, which produces better results than expanding.
  63. [ExecutionEngine] Don't dereference a dyn_cast result. NFCI. The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
  64. [libFuzzer] Remove unused version of FuzzedDataProvider.h. Summary: The actual version lives in compiler-rt/include/fuzzer/. Reviewers: Dor1s Reviewed By: Dor1s Subscribers: delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D67623
  65. [LV] Add ARM MVE tail-folding tests Now that the vectorizer can do tail-folding (rL367592), and the ARM backend understands MVE masked loads/stores (rL371932), it's time to add the MVE tail-folding equivalent of the X86 tests that I added.
  66. [SystemZ] Call erase() on the right MBB in SystemZTargetLowering::emitSelect() Since MBB was split *before* MI, the MI(s) will reside in JoinMBB (MBB) at the point of erasing them, so calling StartMBB->erase() is actually wrong, although it is "working" by all appearances. Review: Ulrich Weigand
  67. [NFC] remove unused functions Reviewers: courbet Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67616
  68. AMDGPU/GlobalISel: Fail select of G_INSERT non-32-bit source This was producing an illegal copy which would hit an assert later. Error on selection for now until this is implemented.
  69. AMDGPU/GlobalISel: Fix some broken run lines
  70. AMDGPU/GlobalISel: Fix RegBankSelect for G_FRINT and G_FCEIL
  71. AMDGPU/GlobalISel: Remove another illegal select test
Revision 372083 by grimar:
[llvm-readobj] - Refactor the code.

It's a straightforward refactoring that allows to simplify and encapsulate the code.

Differential revision: https://reviews.llvm.org/D67624
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Object/ELFObjectFile.h (diff)llvm.src/include/llvm/Object/ELFObjectFile.h
The file was modified/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (diff)llvm.src/tools/llvm-readobj/ELFDumper.cpp
Revision 372082 by sjoerdmeijer:
[Clang] Pragma vectorize_width() implies vectorize(enable)

Specifying the vectorization width was supposed to implicitly enable
vectorization, except that it wasn't really doing this. It was only
setting the vectorize.width metadata, but not vectorize.enable.

This should fix PR27643.

Differential Revision: https://reviews.llvm.org/D66290
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGLoopInfo.cpp (diff)clang.src/lib/CodeGen/CGLoopInfo.cpp
The file was modified/cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp (diff)clang.src/test/CodeGenCXX/pragma-loop-predicate.cpp
The file was modified/cfe/trunk/test/CodeGenCXX/pragma-loop.cpp (diff)clang.src/test/CodeGenCXX/pragma-loop.cpp
Revision 372081 by grimar:
[llvm-objcopy] - Remove python invocations from 2 test cases.

It is possible to use yaml2obj to create sections with overlapping sh_offset now.
This patch does that.

Differential revision: https://reviews.llvm.org/D67610
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test (diff)llvm.src/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test
The file was modified/llvm/trunk/test/tools/llvm-objcopy/ELF/overlapping-sections.test (diff)llvm.src/test/tools/llvm-objcopy/ELF/overlapping-sections.test
Revision 372080 by kito:
[RISCV] Add option aliases: -mcmodel=medany and -mcmodel=medlow

RISC-V GCC use -mcmodel=medany and -mcmodel=medlow, but LLVM use
-mcmodel=small and -mcmodel=medium.

Add those two option aliases for provide same user interface between
GCC and LLVM.

Reviewed By: lenary

Differential Revision: https://reviews.llvm.org/D67066
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Driver/Options.td (diff)clang.src/include/clang/Driver/Options.td
The file was modified/cfe/trunk/test/Preprocessor/riscv-cmodel.c (diff)clang.src/test/Preprocessor/riscv-cmodel.c
Revision 372079 by fhahn:
[bugpoint] Add support for -Oz and properly enable -Os.

This patch adds -Oz as option and also properly enables support for -Os.
Currently, the existing check for -Os is dead, because the enclosing if
only checks of O1, O2 and O3.

There is still a difference between the -Oz pipeline compared to opt,
but I have not been able to track that down yet.

Reviewers: bogner, sebpop, efriedma

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D67593
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/bugpoint/bugpoint.cpp (diff)llvm.src/tools/bugpoint/bugpoint.cpp
Revision 372078 by kito:
[RISCV] Define __riscv_cmodel_medlow and __riscv_cmodel_medany correctly

RISC-V LLVM was only implement small/medlow code model, so it defined
__riscv_cmodel_medlow directly without check.

Now, we have medium/medany code model in RISC-V back-end, it should
define according the actually code model.

Reviewed By: lewis-revill

Differential Revision: https://reviews.llvm.org/D67065
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Basic/Targets/RISCV.cpp (diff)clang.src/lib/Basic/Targets/RISCV.cpp
The file was added/cfe/trunk/test/Preprocessor/riscv-cmodel.cclang.src/test/Preprocessor/riscv-cmodel.c
Revision 372076 by sam_parker:
[ARM][MVE] Add invalidForTailPredication to TSFlags

Set this bit for the MVE reduction instructions to prevent a loop from
becoming tail predicated in their presence.

Differential Revision: https://reviews.llvm.org/D67444
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrFormats.td (diff)llvm.src/lib/Target/ARM/ARMInstrFormats.td
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrMVE.td (diff)llvm.src/lib/Target/ARM/ARMInstrMVE.td
The file was modified/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h (diff)llvm.src/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h
The file was added/llvm/trunk/unittests/Target/ARMllvm.src/unittests/Target/ARM
The file was added/llvm/trunk/unittests/Target/ARM/CMakeLists.txtllvm.src/unittests/Target/ARM/CMakeLists.txt
The file was added/llvm/trunk/unittests/Target/ARM/MachineInstrTest.cppllvm.src/unittests/Target/ARM/MachineInstrTest.cpp
Revision 372075 by uenoku:
[Attributor] Use Alias Analysis in noalias callsite argument deduction

Summary: This patch adds a check of alias analysis in `noalias` callsite argument deduction.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67604
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/Attributor.cpp (diff)llvm.src/lib/Transforms/IPO/Attributor.cpp
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/internal-noalias.ll (diff)llvm.src/test/Transforms/FunctionAttrs/internal-noalias.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.ll (diff)llvm.src/test/Transforms/FunctionAttrs/noalias_returned.ll
Revision 372074 by ibiryukov:
[clangd] Remove stale comment. NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/clang-tools-extra/trunk/clangd/ClangdServer.h (diff)clang-tools-extra.src/clangd/ClangdServer.h
Revision 372072 by uenoku:
[Attributor] Create helper struct for handling analysis getters

Summary: This patch introduces a helper struct `AnalysisGetter` to put together analysis getters. In this patch, a getter for `AAResult` is also added for  `noalias`.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67603
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/IPO/Attributor.h (diff)llvm.src/include/llvm/Transforms/IPO/Attributor.h
The file was modified/llvm/trunk/lib/Transforms/IPO/Attributor.cpp (diff)llvm.src/lib/Transforms/IPO/Attributor.cpp
Revision 372070 by davezarzycki:
[git-llvm] Do not reinvent `@{upstream}` (take 2)

This makes git-llvm more of a thin wrapper around git while temporarily
maintaining backwards compatibility with past git-llvm behavior.

Using @{upstream} makes git-llvm more robust when used with a nontrivial
local repository.

https://reviews.llvm.org/D67389
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/git-svn/git-llvm (diff)llvm.src/utils/git-svn/git-llvm
Revision 372069 by ctopper:
[X86] Split oversized vXi1 vector arguments and return values into scalars on avx512 targets.

Previously we tried to split them into narrower v64i1 or v16i1
pieces that each got promoted to vXi8 and then passed in a zmm
or xmm register. But this crashes when you need to pass more
pieces than available registers reserved for argument passing.

The scalarizing done here generates much longer and slower code,
but is consistent with the behavior of avx2 and earlier targets
for these types.

Fixes PR43323.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (diff)llvm.src/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.h (diff)llvm.src/lib/Target/X86/X86ISelLowering.h
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-ext.ll (diff)llvm.src/test/CodeGen/X86/avx512-ext.ll
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll (diff)llvm.src/test/CodeGen/X86/avx512-mask-op.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-compare-results.ll (diff)llvm.src/test/CodeGen/X86/vector-compare-results.ll
Revision 372068 by ctopper:
[X86] Allow masked VBROADCAST instructions to be turned into BLENDM with a broadcast load to avoid a copy.

The BLENDM instructions allow an 2 sources and an independent
destination while masked VBROADCAST has the destination tied
to the source.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.td (diff)llvm.src/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (diff)llvm.src/lib/Target/X86/X86InstrInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-broadcast-unfold.ll (diff)llvm.src/test/CodeGen/X86/avx512-broadcast-unfold.ll
Revision 372067 by ctopper:
[X86] Add support for commuting EVEX VCMP instructons with any immediate value.

Previously we limited to the EQ/NE/TRUE/FALSE/ORD/UNORD immediates.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (diff)llvm.src/lib/Target/X86/X86InstrInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-broadcast-unfold.ll (diff)llvm.src/test/CodeGen/X86/avx512-broadcast-unfold.ll
Revision 372066 by ctopper:
[X86] Add test case for missed opportunity to commute a VCMP instruction after unfolding one load in order to fold another load.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-broadcast-unfold.ll (diff)llvm.src/test/CodeGen/X86/avx512-broadcast-unfold.ll
Revision 372065 by ctopper:
[X86] Enable commuting of EVEX VCMP for all immediate values during isel.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrAVX512.td (diff)llvm.src/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (diff)llvm.src/lib/Target/X86/X86InstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86InstrInfo.h (diff)llvm.src/lib/Target/X86/X86InstrInfo.h
The file was modified/llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll (diff)llvm.src/test/CodeGen/X86/avx512-mask-op.ll
The file was modified/llvm/trunk/test/CodeGen/X86/select-of-fp-constants.ll (diff)llvm.src/test/CodeGen/X86/select-of-fp-constants.ll
Revision 372063 by rsmith:
Fix reliance on -flax-vector-conversions in AVX intrinsics headers and
corresponding tests.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Headers/avx512fintrin.h (diff)clang.src/lib/Headers/avx512fintrin.h
The file was modified/cfe/trunk/test/CodeGen/avx-builtins.c (diff)clang.src/test/CodeGen/avx-builtins.c
The file was modified/cfe/trunk/test/CodeGen/avx-cmp-builtins.c (diff)clang.src/test/CodeGen/avx-cmp-builtins.c
The file was modified/cfe/trunk/test/CodeGen/avx512f-builtins.c (diff)clang.src/test/CodeGen/avx512f-builtins.c
Revision 372062 by rsmith:
Fix reliance on lax vector conversions in tests for x86 intrinsics.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/CodeGen/const-init.c (diff)clang.src/test/CodeGen/const-init.c
The file was modified/cfe/trunk/test/CodeGen/ppc-smmintrin.c (diff)clang.src/test/CodeGen/ppc-smmintrin.c
The file was modified/cfe/trunk/test/CodeGen/sse-builtins.c (diff)clang.src/test/CodeGen/sse-builtins.c
The file was modified/cfe/trunk/test/CodeGen/sse.c (diff)clang.src/test/CodeGen/sse.c
The file was modified/cfe/trunk/test/CodeGen/target-builtin-error.c (diff)clang.src/test/CodeGen/target-builtin-error.c
The file was modified/cfe/trunk/test/CodeGen/x86-builtins-vector-width.c (diff)clang.src/test/CodeGen/x86-builtins-vector-width.c
The file was modified/cfe/trunk/test/Headers/xmmintrin.c (diff)clang.src/test/Headers/xmmintrin.c
The file was modified/cfe/trunk/test/Sema/builtins-x86.c (diff)clang.src/test/Sema/builtins-x86.c
Revision 372061 by rsmith:
Remove reliance on lax vector conversions from altivec.h in VSX mode.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Headers/altivec.h (diff)clang.src/lib/Headers/altivec.h
The file was modified/cfe/trunk/test/CodeGen/altivec-ct.c (diff)clang.src/test/CodeGen/altivec-ct.c
The file was modified/cfe/trunk/test/CodeGen/builtins-ppc-error.c (diff)clang.src/test/CodeGen/builtins-ppc-error.c
The file was modified/cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c (diff)clang.src/test/CodeGen/builtins-ppc-p9vector.c
The file was modified/cfe/trunk/test/CodeGen/builtins-ppc-vsx.c (diff)clang.src/test/CodeGen/builtins-ppc-vsx.c
Revision 372058 by comex:
Push lambda scope earlier when transforming lambda expression

Differential Revision: https://reviews.llvm.org/D66067
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/TreeTransform.h (diff)clang.src/lib/Sema/TreeTransform.h
The file was modified/cfe/trunk/test/SemaTemplate/default-arguments-cxx0x.cpp (diff)clang.src/test/SemaTemplate/default-arguments-cxx0x.cpp
Revision 372056 by jakehehrlich:
[libFuzzer] Always print DSO map on Fuchsia libFuzzer launch

Fuchsia doesn't have /proc/id/maps, so it relies on the kernel logging system
to provide the DSO map to be able to symbolize in the context of ASLR. The DSO
map is logged automatically on Fuchsia when encountering a crash or writing to
the sanitizer log for the first time in a process. There are several cases
where libFuzzer doesn't encounter a crash, e.g. on timeouts, OOMs, and when
configured to print new PCs as they become covered, to name a few. Therefore,
this change always writes to the sanitizer log on startup to ensure the DSO map
is available in the log.

Author: aarongreen
Differential Revision: https://reviews.llvm.org/D66233
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerExtFunctions.def (diff)compiler-rt.src/lib/fuzzer/FuzzerExtFunctions.def
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerUtilFuchsia.cpp (diff)compiler-rt.src/lib/fuzzer/FuzzerUtilFuchsia.cpp
Revision 372055 by abataev:
[OPENMP] Fix the test, NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/OpenMP/parallel_for_codegen.cpp (diff)clang.src/test/OpenMP/parallel_for_codegen.cpp
Revision 372054 by dblaikie:
llvm-reduce: Clean out previous test temp/output dir, since it was a dir and now it's used as just a single file
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Reduce/remove-args.ll (diff)llvm.src/test/Reduce/remove-args.ll
The file was modified/llvm/trunk/test/Reduce/remove-funcs.ll (diff)llvm.src/test/Reduce/remove-funcs.ll
The file was modified/llvm/trunk/test/Reduce/remove-global-vars.ll (diff)llvm.src/test/Reduce/remove-global-vars.ll
The file was modified/llvm/trunk/test/Reduce/remove-metadata.ll (diff)llvm.src/test/Reduce/remove-metadata.ll
Revision 372053 by dblaikie:
llvm-reduce: Remove some string copies
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/llvm-reduce/TestRunner.cpp (diff)llvm.src/tools/llvm-reduce/TestRunner.cpp
The file was modified/llvm/trunk/tools/llvm-reduce/TestRunner.h (diff)llvm.src/tools/llvm-reduce/TestRunner.h
Revision 372051 by jdenny:
Revert r372035: "[lit] Make internal diff work in pipelines"

This breaks a Windows bot.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/lit/lit/TestRunner.py (diff)llvm.src/utils/lit/lit/TestRunner.py
The file was removed/llvm/trunk/utils/lit/lit/builtin_commands/diff.pyllvm.src/utils/lit/lit/builtin_commands/diff.py
The file was added/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-error-0.txtllvm.src/utils/lit/tests/Inputs/shtest-shell/diff-error-0.txt
The file was removed/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txtllvm.src/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt
The file was modified/llvm/trunk/utils/lit/tests/shtest-shell.py (diff)llvm.src/utils/lit/tests/shtest-shell.py
Revision 372050 by aemerson:
[GlobalISel] Partially revert r371901.

r371901 was overeager and widenScalarDst() and the like in the legalizer
attempt to increment the insert point given in order to add new instructions
after the currently legalizing inst. In cases where the insertion point is not
exactly the current instruction, then callers need to de-compensate for the
behaviour by decrementing the insertion iterator before calling them. It's not
a nice state of affairs, for now just undo the problematic parts of the change.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp (diff)llvm.src/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-phi-insertpt-decrement.mirllvm.src/test/CodeGen/AArch64/GlobalISel/legalize-phi-insertpt-decrement.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-phi.mir (diff)llvm.src/test/CodeGen/AMDGPU/GlobalISel/legalize-phi.mir
Revision 372049 by dblaikie:
llvm-reduce: Make tests shell-independent by passing the interpreter on the command line rather than using #! in the test file
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Reduce/remove-args.ll (diff)llvm.src/test/Reduce/remove-args.ll
The file was modified/llvm/trunk/test/Reduce/remove-funcs.ll (diff)llvm.src/test/Reduce/remove-funcs.ll
The file was modified/llvm/trunk/test/Reduce/remove-global-vars.ll (diff)llvm.src/test/Reduce/remove-global-vars.ll
The file was modified/llvm/trunk/test/Reduce/remove-metadata.ll (diff)llvm.src/test/Reduce/remove-metadata.ll
The file was modified/llvm/trunk/tools/llvm-reduce/TestRunner.cpp (diff)llvm.src/tools/llvm-reduce/TestRunner.cpp
Revision 372048 by dlj:
Add libc to path mappings in git-llvm.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/git-svn/git-llvm (diff)llvm.src/utils/git-svn/git-llvm
Revision 372043 by nemanjai:
[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32

Add the missing piece of r372029.
Somehow when the patch for review D61961 was committed, only the test case
went in and the code didn't. This of course caused all kinds of build bot
breaks.
This patch just adds the code for that patch.

Author: Lei Huang
Differential revision: https://reviews.llvm.org/D61961
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (diff)llvm.src/lib/Target/PowerPC/PPCISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.h (diff)llvm.src/lib/Target/PowerPC/PPCISelLowering.h
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCInstrVSX.td (diff)llvm.src/lib/Target/PowerPC/PPCInstrVSX.td
Revision 372042 by thegameg:
[Remarks] Allow remarks::Format::YAML to take a string table

It should be allowed to take a string table in case all the strings in
the remarks point there, but it shouldn't use it during serialization.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Remarks/BitstreamRemarkSerializer.h (diff)llvm.src/include/llvm/Remarks/BitstreamRemarkSerializer.h
The file was modified/llvm/trunk/include/llvm/Remarks/RemarkSerializer.h (diff)llvm.src/include/llvm/Remarks/RemarkSerializer.h
The file was modified/llvm/trunk/include/llvm/Remarks/YAMLRemarkSerializer.h (diff)llvm.src/include/llvm/Remarks/YAMLRemarkSerializer.h
The file was modified/llvm/trunk/lib/Remarks/BitstreamRemarkSerializer.cpp (diff)llvm.src/lib/Remarks/BitstreamRemarkSerializer.cpp
The file was modified/llvm/trunk/lib/Remarks/RemarkSerializer.cpp (diff)llvm.src/lib/Remarks/RemarkSerializer.cpp
The file was modified/llvm/trunk/lib/Remarks/RemarkStringTable.cpp (diff)llvm.src/lib/Remarks/RemarkStringTable.cpp
The file was modified/llvm/trunk/lib/Remarks/YAMLRemarkSerializer.cpp (diff)llvm.src/lib/Remarks/YAMLRemarkSerializer.cpp
The file was modified/llvm/trunk/unittests/Remarks/YAMLRemarksSerializerTest.cpp (diff)llvm.src/unittests/Remarks/YAMLRemarksSerializerTest.cpp
Revision 372041 by Vedant Kumar:
[test] Clean up previous raw profile before merging into it

This fixes a test failure in instrprof-set-file-object-merging.c which
seems to have been caused by reuse of stale data in old raw profiles.
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/test/profile/instrprof-set-file-object-merging.c (diff)compiler-rt.src/test/profile/instrprof-set-file-object-merging.c
Revision 372040 by abataev:
[OPENMP]Fix the test, NFC.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/OpenMP/parallel_for_codegen.cpp (diff)clang.src/test/OpenMP/parallel_for_codegen.cpp
Revision 372039 by Bruno Lopes:
[Modules][Objective-C] Use complete decl from module when diagnosing missing import

Summary:
Otherwise the definition (first found) for ObjCInterfaceDecl's might
precede the module one, which will eventually lead to crash, since
diagnoseMissingImport needs one coming from a module.

This behavior changed after Richard's r342018, which started to look
into the definition of ObjCInterfaceDecls.

rdar://problem/49237144

Reviewers: rsmith, arphaman

Subscribers: jkorous, dexonsmith, ributzka, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D66982
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/SemaLookup.cpp (diff)clang.src/lib/Sema/SemaLookup.cpp
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-importclang.src/test/Modules/Inputs/interface-diagnose-missing-import
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.frameworkclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Headersclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Headers
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Headers/Bar.hclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Headers/Bar.h
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Headers/Foo.hclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Headers/Foo.h
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Modulesclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Modules
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Modules/module.modulemapclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/Modules/module.modulemap
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/PrivateHeadersclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/PrivateHeaders
The file was added/cfe/trunk/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/PrivateHeaders/RandoPriv.hclang.src/test/Modules/Inputs/interface-diagnose-missing-import/Foo.framework/PrivateHeaders/RandoPriv.h
The file was added/cfe/trunk/test/Modules/interface-diagnose-missing-import.mclang.src/test/Modules/interface-diagnose-missing-import.m
Revision 372038 by jcai19:
[compiler-rt][crt]  make test case nontrivial in check_cxx_section_exists

Summary:
.init_array gets optimized away when building with -O2 and as a result,
check_cxx_section_exists failed to pass -DCOMPILER_RT_HAS_INITFINI_ARRAY
when building crtbegin.o and crtend.o, which causes binaries linked with
them encounter segmentation fault. See https://crbug.com/855759 for
details. This change prevents .init_array section to be optimized away
even with -O2 or higher optimization level.

Subscribers: dberris, mgorny, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D67628
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/crt/CMakeLists.txt (diff)compiler-rt.src/lib/crt/CMakeLists.txt
Revision 372037 by jcai19:
[clang-tidy] add checks to bugprone-posix-return

This check now also checks if any calls to pthread_* functions expect negative return values. These functions return either 0 on success or an errno on failure, which is positive only.
Change TypePath in RepositoryPath in Workspace
The file was modified/clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.cpp (diff)clang-tools-extra.src/clang-tidy/bugprone/PosixReturnCheck.cpp
The file was modified/clang-tools-extra/trunk/clang-tidy/bugprone/PosixReturnCheck.h (diff)clang-tools-extra.src/clang-tidy/bugprone/PosixReturnCheck.h
The file was modified/clang-tools-extra/trunk/docs/ReleaseNotes.rst (diff)clang-tools-extra.src/docs/ReleaseNotes.rst
The file was modified/clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-posix-return.rst (diff)clang-tools-extra.src/docs/clang-tidy/checks/bugprone-posix-return.rst
The file was modified/clang-tools-extra/trunk/test/clang-tidy/bugprone-posix-return.cpp (diff)clang-tools-extra.src/test/clang-tidy/bugprone-posix-return.cpp
Revision 372035 by jdenny:
[lit] Make internal diff work in pipelines

When using lit's internal shell, RUN lines like the following
accidentally execute an external `diff` instead of lit's internal
`diff`:

```
# RUN: program | diff file -
# RUN: not diff file1 file2 | FileCheck %s
```

Such cases exist now, in `clang/test/Analysis` for example.  We are
preparing patches to ensure lit's internal `diff` is called in such
cases, which will then fail because lit's internal `diff` cannot
currently be used in pipelines and doesn't recognize `-` as a
command-line option.

To enable pipelines, this patch moves lit's `diff` implementation into
an out-of-process script, similar to lit's `cat` implementation.  A
follow-up patch will implement `-` to mean stdin.

Reviewed By: probinson, stella.stamenova

Differential Revision: https://reviews.llvm.org/D66574
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/lit/lit/TestRunner.py (diff)llvm.src/utils/lit/lit/TestRunner.py
The file was added/llvm/trunk/utils/lit/lit/builtin_commands/diff.pyllvm.src/utils/lit/lit/builtin_commands/diff.py
The file was removed/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-error-0.txtllvm.src/utils/lit/tests/Inputs/shtest-shell/diff-error-0.txt
The file was added/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txtllvm.src/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt
The file was modified/llvm/trunk/utils/lit/tests/shtest-shell.py (diff)llvm.src/utils/lit/tests/shtest-shell.py
Revision 372034 by danalbert:
Revert "Implement std::condition_variable via pthread_cond_clockwait() where available"

This reverts commit 5e37d7f9ff257ec62d733d3d94b11f03e0fe51ca.
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/include/__config (diff)libcxx.src/include/__config
The file was modified/libcxx/trunk/include/__mutex_base (diff)libcxx.src/include/__mutex_base
The file was modified/libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp (diff)libcxx.src/test/std/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp
Revision 372033 by bmahjour:
[NFC] Test commit access
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Analysis/DependenceAnalysis/SimpleSIVNoValidityCheck.ll (diff)llvm.src/test/Analysis/DependenceAnalysis/SimpleSIVNoValidityCheck.ll
Revision 372032 by dr87:
[Docs] Bug fix for docs homepage

Removes reference to non-existent Reference Documentation page.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/index.rst (diff)llvm.src/docs/index.rst
Revision 372031 by dr87:
[Docs] Adds Getting Started/Tutorials, Reference to LLVM docs homepage

Adds a section for Getting Started/Tutorials and Reference topics to the LLVM docs homepage.
Change TypePath in RepositoryPath in Workspace
The file was removed/llvm/trunk/docs/ReferenceDocumentation.rstllvm.src/docs/ReferenceDocumentation.rst
The file was modified/llvm/trunk/docs/UserGuides.rst (diff)llvm.src/docs/UserGuides.rst
The file was modified/llvm/trunk/docs/index.rst (diff)llvm.src/docs/index.rst
Revision 372029 by lei:
[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32

This is a follow up patch from https://reviews.llvm.org/D57857 to handle
extract_subvector v4f32.  For cases where we fpext of v2f32 to v2f64 from
extract_subvector we currently generate on P9 the following:

  lxv 0, 0(3)
  xxsldwi 1, 0, 0, 1
  xscvspdpn 2, 0
  xxsldwi 3, 0, 0, 3
  xxswapd 0, 0
  xscvspdpn 1, 1
  xscvspdpn 3, 3
  xscvspdpn 0, 0
  xxmrghd 0, 0, 3
  xxmrghd 1, 2, 1
  stxv 0, 0(4)
  stxv 1, 0(5)

This patch custom lower it to the following sequence:

  lxv 0, 0(3)       # load the v4f32 <w0, w1, w2, w3>
  xxmrghw 2, 0, 0   # Produce the following vector <w0, w0, w1, w1>
  xxmrglw 3, 0, 0   # Produce the following vector <w2, w2, w3, w3>
  xvcvspdp 2, 2     # FP-extend to <d0, d1>
  xvcvspdp 3, 3     # FP-extend to <d2, d3>
  stxv 2, 0(5)      # Store <d0, d1> (%vecinit11)
  stxv 3, 0(4)      # Store <d2, d3> (%vecinit4)

Differential Revision: https://reviews.llvm.org/D61961
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/PowerPC/reduce_scalarization02.llllvm.src/test/CodeGen/PowerPC/reduce_scalarization02.ll
Revision 372027 by danalbert:
Open fstream files in O_CLOEXEC mode when possible.

Reviewers: EricWF, mclow.lists, ldionne

Reviewed By: ldionne

Subscribers: smeenai, dexonsmith, christof, ldionne, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D59839
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/include/__config (diff)libcxx.src/include/__config
The file was modified/libcxx/trunk/include/fstream (diff)libcxx.src/include/fstream
Revision 372026 by llunak:
do not emit -Wunused-macros warnings in -frewrite-includes mode (PR15614)

-frewrite-includes calls PP.SetMacroExpansionOnlyInDirectives() to avoid
macro expansions that are useless in that mode, but this can lead
to -Wunused-macros false positives. As -frewrite-includes does not emit
normal warnings, block -Wunused-macros too.

Differential Revision: https://reviews.llvm.org/D65371
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Lex/PPDirectives.cpp (diff)clang.src/lib/Lex/PPDirectives.cpp
The file was modified/cfe/trunk/test/Frontend/rewrite-includes-warnings.c (diff)clang.src/test/Frontend/rewrite-includes-warnings.c
Revision 372025 by Vedant Kumar:
[Coverage] Speed up file-based queries for coverage info, NFC

Speed up queries for coverage info in a file by reducing the amount of
time spent determining whether a function record corresponds to a file.

This gives a 36% speedup when generating a coverage report for `llc`.
The reduction is entirely in user time.

rdar://54758110

Differential Revision: https://reviews.llvm.org/D67575
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMapping.h (diff)llvm.src/include/llvm/ProfileData/Coverage/CoverageMapping.h
The file was modified/llvm/trunk/lib/ProfileData/Coverage/CoverageMapping.cpp (diff)llvm.src/lib/ProfileData/Coverage/CoverageMapping.cpp
Revision 372024 by Vedant Kumar:
[Coverage] Assert that filenames in a TU are unique, NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h (diff)llvm.src/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
The file was modified/llvm/trunk/lib/ProfileData/Coverage/CoverageMappingWriter.cpp (diff)llvm.src/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
Revision 372021 by steven_wu:
[LTO][Legacy] Add new C inferface to query libcall functions

Summary:
This is needed to implemented the same approach as lld (implemented in r338434)
for how to handling symbols that can be generated by LTO code generator
but not present in the symbol table for linker that uses legacy C APIs.

libLTO is in charge of providing the list of symbols. Linker is in
charge of implementing the eager loading from static libraries using
the list of symbols.

rdar://problem/52853974

Reviewers: tejohnson, bd1976llvm, deadalnix, espindola

Reviewed By: tejohnson

Subscribers: emaste, arichardson, hiraditya, MaskRay, dang, kledzik, mehdi_amini, inglorion, jkorous, dexonsmith, ributzka, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67568
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm-c/lto.h (diff)llvm.src/include/llvm-c/lto.h
The file was modified/llvm/trunk/include/llvm/LTO/LTO.h (diff)llvm.src/include/llvm/LTO/LTO.h
The file was modified/llvm/trunk/lib/LTO/LTO.cpp (diff)llvm.src/lib/LTO/LTO.cpp
The file was modified/llvm/trunk/tools/lto/lto.cpp (diff)llvm.src/tools/lto/lto.cpp
The file was modified/llvm/trunk/tools/lto/lto.exports (diff)llvm.src/tools/lto/lto.exports
Revision 372020 by rnk:
[PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups

This fixes relocations against __profd_ symbols in discarded sections,
which is PR41380.

In general, instrumentation happens very early, and optimization and
inlining happens afterwards. The counters for a function are calculated
early, and after inlining, counters for an inlined function may be
widely referenced by other functions.

For C++ inline functions of all kinds (linkonce_odr &
available_externally mainly), instr profiling wants to deduplicate these
__profc_ and __profd_ globals. Otherwise the binary would be quite
large.

I made __profd_ and __profc_ comdat in r355044, but I chose to make
__profd_ internal. At the time, I was only dealing with coverage, and in
that case, none of the instrumentation needs to reference __profd_.
However, if you use PGO, then instrumentation passes add calls to
__llvm_profile_instrument_range which reference __profd_ globals. The
solution is to make these globals externally visible by using
linkonce_odr linkage for data as was done for counters.

This is safe because PGO adds a CFG hash to the names of the data and
counter globals, so if different TUs have different globals, they will
get different data and counter arrays.

Reviewers: xur, hans

Differential Revision: https://reviews.llvm.org/D67579
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp (diff)llvm.src/lib/Transforms/Instrumentation/InstrProfiling.cpp
The file was modified/llvm/trunk/test/Instrumentation/InstrProfiling/PR23499.ll (diff)llvm.src/test/Instrumentation/InstrProfiling/PR23499.ll
The file was modified/llvm/trunk/test/Instrumentation/InstrProfiling/comdat.ll (diff)llvm.src/test/Instrumentation/InstrProfiling/comdat.ll
The file was modified/llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll (diff)llvm.src/test/Instrumentation/InstrProfiling/linkage.ll
Revision 372019 by lebedevri:
[ARM][Codegen] Autogenerate arm-cgp-casts.ll test.

Apparently it got broken by r372009 while i thought it was r372012.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/ARM/CGP/arm-cgp-casts.ll (diff)llvm.src/test/CodeGen/ARM/CGP/arm-cgp-casts.ll
Revision 372016 by danalbert:
Implement std::condition_variable via pthread_cond_clockwait() where available

std::condition_variable is currently implemented via
pthread_cond_timedwait() on systems that use pthread. This is
problematic, since that function waits by default on CLOCK_REALTIME
and libc++ does not provide any mechanism to change from this
default.

Due to this, regardless of if condition_variable::wait_until() is
called with a chrono::system_clock or chrono::steady_clock parameter,
condition_variable::wait_until() will wait using CLOCK_REALTIME. This
is not accurate to the C++ standard as calling
condition_variable::wait_until() with a chrono::steady_clock parameter
should use CLOCK_MONOTONIC.

This is particularly problematic because CLOCK_REALTIME is a bad
choice as it is subject to discontinuous time adjustments, that may
cause condition_variable::wait_until() to immediately timeout or wait
indefinitely.

This change fixes this issue with a new POSIX function,
pthread_cond_clockwait() proposed on
http://austingroupbugs.net/view.php?id=1216. The new function is
similar to pthread_cond_timedwait() with the addition of a clock
parameter that allows it to wait using either CLOCK_REALTIME or
CLOCK_MONOTONIC, thus allowing condition_variable::wait_until() to
wait using CLOCK_REALTIME for chrono::system_clock and CLOCK_MONOTONIC
for chrono::steady_clock.

pthread_cond_clockwait() is implemented in glibc (2.30 and later) and
Android's bionic (Android API version 30 and later).

This change additionally makes wait_for() and wait_until() with clocks
other than chrono::system_clock use CLOCK_MONOTONIC.<Paste>
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/include/__config (diff)libcxx.src/include/__config
The file was modified/libcxx/trunk/include/__mutex_base (diff)libcxx.src/include/__mutex_base
The file was modified/libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp (diff)libcxx.src/test/std/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp
Revision 372015 by lebedevri:
[Clang][Codegen] Disable arm_acle.c test.

This test is broken by design. Clang codegen tests should not depend
on llvm middle-end behaviour, they should *only* test clang codegen.
Yet this test runs whole optimization pipeline.
I've really tried to fix it, but there isn't just a few things
that depend on passes, but everything there does.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/CodeGen/arm_acle.c (diff)clang.src/test/CodeGen/arm_acle.c
Revision 372014 by lebedevri:
[Clang][Codegen] Relax available-externally-suppress.c test

That test is broken by design.
It depends on llvm middle-end behavior.
No clang codegen test should be doing that.
This one is salvageable by relaxing check lines.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/CodeGen/available-externally-suppress.c (diff)clang.src/test/CodeGen/available-externally-suppress.c
Revision 372013 by rksimon:
[X86][AVX] matchShuffleWithSHUFPD - add support for zeroable operands

Determine if all of the uses of LHS/RHS operands can be replaced with a zero vector.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (diff)llvm.src/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-256-v4.ll (diff)llvm.src/test/CodeGen/X86/vector-shuffle-256-v4.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-512-v8.ll (diff)llvm.src/test/CodeGen/X86/vector-shuffle-512-v8.ll
Revision 372012 by dmgreen:
[ARM] A predicate cast of a predicate cast is a predicate cast

The adds some very basic folding of PREDICATE_CASTS, removing cases when they
are chained together. These would already be removed eventually, as these are
lowered to copies. This just allows it to happen earlier, which can help other
simplifications.

Differential Revision: https://reviews.llvm.org/D67591
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (diff)llvm.src/lib/Target/ARM/ARMISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/Thumb2/mve-masked-ldst.ll (diff)llvm.src/test/CodeGen/Thumb2/mve-masked-ldst.ll
The file was modified/llvm/trunk/test/CodeGen/Thumb2/mve-pred-bitcast.ll (diff)llvm.src/test/CodeGen/Thumb2/mve-pred-bitcast.ll
The file was modified/llvm/trunk/test/CodeGen/Thumb2/mve-pred-loadstore.ll (diff)llvm.src/test/CodeGen/Thumb2/mve-pred-loadstore.ll
Revision 372011 by abataev:
[OPENMP]Fix parsing/sema for function templates with declare simd.

Need to return original declaration group with FunctionTemplateDecl, not
the inner FunctionDecl, to correctly handle parsing of directives with
the templates parameters.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/SemaOpenMP.cpp (diff)clang.src/lib/Sema/SemaOpenMP.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_simd_ast_print.cpp (diff)clang.src/test/OpenMP/declare_simd_ast_print.cpp
Revision 372009 by lebedevri:
[SimplifyCFG] FoldTwoEntryPHINode(): consider *total* speculation cost, not per-BB cost

Summary:
Previously, if the threshold was 2, we were willing to speculatively
execute 2 cheap instructions in both basic blocks (thus we were willing
to speculatively execute cost = 4), but weren't willing to speculate
when one BB had 3 instructions and other one had no instructions,
even thought that would have total cost of 3.

This looks inconsistent to me.
I don't think `cmov`-like instructions will start executing
until both of it's inputs are available: https://godbolt.org/z/zgHePf
So i don't see why the existing behavior is the correct one.

Also, let's add it's own `cl::opt` for this threshold,
with default=4, so it is not stricter than the previous threshold:
will allow to fold when there are 2 BB's each with cost=2.
And since the logic has changed, it will also allow to fold when
one BB has cost=3 and other cost=1, or there is only one BB with cost=4.

This is an alternative solution to D65148:
This fix is mainly motivated by `signbit-like-value-extension.ll` test.
That pattern comes up in JPEG decoding, see e.g.
`Figure F.12 – Extending the sign bit of a decoded value in V`
of `ITU T.81` (JPEG specification).
That branch is not predictable, and it is within the innermost loop,
so the fact that that pattern ends up being stuck with a branch
instead of `select` (i.e. `CMOV` for x86) is unlikely to be beneficial.

This has great results on the final assembly (vanilla test-suite + RawSpeed): (metric pass - D67240)
| metric                                 |     old |     new | delta |      % |
| x86-mi-counting.NumMachineFunctions    |   37720 |   37721 |     1 |  0.00% |
| x86-mi-counting.NumMachineBasicBlocks  |  773545 |  771181 | -2364 | -0.31% |
| x86-mi-counting.NumMachineInstructions | 7488843 | 7486442 | -2401 | -0.03% |
| x86-mi-counting.NumUncondBR            |  135770 |  135543 |  -227 | -0.17% |
| x86-mi-counting.NumCondBR              |  423753 |  422187 | -1566 | -0.37% |
| x86-mi-counting.NumCMOV                |   24815 |   25731 |   916 |  3.69% |
| x86-mi-counting.NumVecBlend            |      17 |      17 |     0 |  0.00% |

We significantly decrease basic block count, notably decrease instruction count,
significantly decrease branch count and very significantly increase `cmov` count.

Performance-wise, unsurprisingly, this has great effect on
target RawSpeed benchmark. I'm seeing 5 **major** improvements:
```
Benchmark                                                                                             Time             CPU      Time Old      Time New       CPU Old       CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_pvalue                                 0.0000          0.0000      U Test, Repetitions: 49 vs 49
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_mean                                  -0.3064         -0.3064      226.9913      157.4452      226.9800      157.4384
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_median                                -0.3057         -0.3057      226.8407      157.4926      226.8282      157.4828
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_stddev                                -0.4985         -0.4954        0.3051        0.1530        0.3040        0.1534
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_pvalue                                  0.0000          0.0000      U Test, Repetitions: 49 vs 49
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_mean                                   -0.1747         -0.1747       80.4787       66.4227       80.4771       66.4146
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_median                                 -0.1742         -0.1743       80.4686       66.4542       80.4690       66.4436
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_stddev                                 +0.6089         +0.5797        0.0670        0.1078        0.0673        0.1062
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_pvalue                                 0.0000          0.0000      U Test, Repetitions: 49 vs 49
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_mean                                  -0.1598         -0.1598      171.6996      144.2575      171.6915      144.2538
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_median                                -0.1598         -0.1597      171.7109      144.2755      171.7018      144.2766
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_stddev                                +0.4024         +0.3850        0.0847        0.1187        0.0848        0.1175
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_pvalue                                  0.0000          0.0000      U Test, Repetitions: 49 vs 49
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_mean                                   -0.0550         -0.0551      280.3046      264.8800      280.3017      264.8559
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_median                                 -0.0554         -0.0554      280.2628      264.7360      280.2574      264.7297
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_stddev                                 +0.7005         +0.7041        0.2779        0.4725        0.2775        0.4729
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_pvalue                                  0.0000          0.0000      U Test, Repetitions: 49 vs 49
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_mean                                   -0.0354         -0.0355      316.7396      305.5208      316.7342      305.4890
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_median                                 -0.0354         -0.0356      316.6969      305.4798      316.6917      305.4324
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_stddev                                 +0.0493         +0.0330        0.3562        0.3737        0.3563        0.3681
```

That being said, it's always best-effort, so there will likely
be cases where this worsens things.

Reviewers: efriedma, craig.topper, dmgreen, jmolloy, fhahn, Carrot, hfinkel, chandlerc

Reviewed By: jmolloy

Subscribers: xbolva00, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67318
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (diff)llvm.src/lib/Transforms/Utils/SimplifyCFG.cpp
The file was modified/llvm/trunk/test/Transforms/IndVarSimplify/loop_evaluate_1.ll (diff)llvm.src/test/Transforms/IndVarSimplify/loop_evaluate_1.ll
The file was modified/llvm/trunk/test/Transforms/PGOProfile/chr.ll (diff)llvm.src/test/Transforms/PGOProfile/chr.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/PhiEliminate3.ll (diff)llvm.src/test/Transforms/SimplifyCFG/PhiEliminate3.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/SpeculativeExec.ll (diff)llvm.src/test/Transforms/SimplifyCFG/SpeculativeExec.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/X86/speculate-cttz-ctlz.ll (diff)llvm.src/test/Transforms/SimplifyCFG/X86/speculate-cttz-ctlz.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll (diff)llvm.src/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/safe-abs.ll (diff)llvm.src/test/Transforms/SimplifyCFG/safe-abs.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/safe-low-bit-extract.ll (diff)llvm.src/test/Transforms/SimplifyCFG/safe-low-bit-extract.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/signbit-like-value-extension.ll (diff)llvm.src/test/Transforms/SimplifyCFG/signbit-like-value-extension.ll
The file was modified/llvm/trunk/test/Transforms/SimplifyCFG/speculate-math.ll (diff)llvm.src/test/Transforms/SimplifyCFG/speculate-math.ll
Revision 372008 by ibiryukov:
[clangd] Simplify semantic highlighting visitor

Summary:
- Functions to compute highlighting kinds for things are separated from
  the ones that add highlighting tokens.
  This keeps each of them more focused on what they're doing: getting
  locations and figuring out the kind of the entity, correspondingly.

- Less special cases in visitor for various nodes.

This change is an NFC.

Reviewers: hokein

Reviewed By: hokein

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D67341
Change TypePath in RepositoryPath in Workspace
The file was modified/clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp (diff)clang-tools-extra.src/clangd/SemanticHighlighting.cpp
Revision 372007 by spatel:
[InstCombine] remove unneeded one-use checks for icmp fold

Related folds were added in:
rL125734
...the code comment about register pressure is discussed in
more detail in:
https://bugs.llvm.org/show_bug.cgi?id=2698

But 10 years later, perf testing bzip2 with this change now
shows a slight (0.2% average) improvement on Haswell although
that's probably within test noise.

Given that this is IR canonicalization, we shouldn't be worried
about register pressure though; the backend should be able to
adjust for that as needed.

This is part of solving PR43310 the theoretically right way:
https://bugs.llvm.org/show_bug.cgi?id=43310
...ie, if we don't cripple basic transforms, then we won't
need to add special-case code to detect larger patterns.

rL371940 and rL371981 are related patches in this series.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp (diff)llvm.src/lib/Transforms/InstCombine/InstCombineCompares.cpp
The file was modified/llvm/trunk/test/Transforms/InstCombine/icmp-add.ll (diff)llvm.src/test/Transforms/InstCombine/icmp-add.ll
Revision 372004 by spatel:
[InstCombine] move tests for icmp+add; NFC
Change TypePath in RepositoryPath in Workspace
The file was removed/llvm/trunk/test/Transforms/InstCombine/2009-01-31-Pressure.llllvm.src/test/Transforms/InstCombine/2009-01-31-Pressure.ll
The file was modified/llvm/trunk/test/Transforms/InstCombine/icmp-add.ll (diff)llvm.src/test/Transforms/InstCombine/icmp-add.ll
Revision 372002 by oliverlars:
[ARM] Add patterns for BSWAP intrinsic on MVE

BSWAP can use the VREV instruction on MVE to produce better results than
expanding.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (diff)llvm.src/lib/Target/ARM/ARMISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrMVE.td (diff)llvm.src/lib/Target/ARM/ARMInstrMVE.td
The file was added/llvm/trunk/test/CodeGen/Thumb2/mve-bswap.llllvm.src/test/CodeGen/Thumb2/mve-bswap.ll
Revision 372001 by oliverlars:
[ARM] Add patterns for bitreverse intrinsic on MVE

BITREVERSE can use the VBRSR which will reverse and right shift.
Shifting right by 0 will just reverse the bits.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (diff)llvm.src/lib/Target/ARM/ARMISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrMVE.td (diff)llvm.src/lib/Target/ARM/ARMInstrMVE.td
The file was added/llvm/trunk/test/CodeGen/Thumb2/mve-bitreverse.llllvm.src/test/CodeGen/Thumb2/mve-bitreverse.ll
Revision 372000 by oliverlars:
[ARM] Lower CTTZ on MVE

Lower CTTZ on MVE using VBRSR and VCLS which will reverse the bits and
count the leading zeros, equivalent to a count trailing zeros (CTTZ).
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (diff)llvm.src/lib/Target/ARM/ARMISelLowering.cpp
The file was added/llvm/trunk/test/CodeGen/Thumb2/mve-cttz.llllvm.src/test/CodeGen/Thumb2/mve-cttz.ll
Revision 371999 by oliverlars:
[ARM] Add patterns for CTLZ on MVE

CTLZ intrinsic can use the VCLS instruction on MVE, which produces
better results than expanding.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (diff)llvm.src/lib/Target/ARM/ARMISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrMVE.td (diff)llvm.src/lib/Target/ARM/ARMInstrMVE.td
The file was added/llvm/trunk/test/CodeGen/Thumb2/mve-ctlz.llllvm.src/test/CodeGen/Thumb2/mve-ctlz.ll
Revision 371998 by rksimon:
[ExecutionEngine] Don't dereference a dyn_cast result. NFCI.

The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp (diff)llvm.src/lib/ExecutionEngine/ExecutionEngine.cpp
Revision 371997 by dor1s:
[libFuzzer] Remove unused version of FuzzedDataProvider.h.

Summary: The actual version lives in compiler-rt/include/fuzzer/.

Reviewers: Dor1s

Reviewed By: Dor1s

Subscribers: delcypher, #sanitizers, llvm-commits

Tags: #llvm, #sanitizers

Differential Revision: https://reviews.llvm.org/D67623
Change TypePath in RepositoryPath in Workspace
The file was removed/compiler-rt/trunk/lib/fuzzer/utilscompiler-rt.src/lib/fuzzer/utils
Revision 371996 by sjoerdmeijer:
[LV] Add ARM MVE tail-folding tests

Now that the vectorizer can do tail-folding (rL367592), and the ARM backend
understands MVE masked loads/stores (rL371932), it's time to add the MVE
tail-folding equivalent of the X86 tests that I added.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/LoopVectorize/ARM/tail-loop-folding.llllvm.src/test/Transforms/LoopVectorize/ARM/tail-loop-folding.ll
Revision 371995 by jonpa:
[SystemZ]  Call erase() on the right MBB in SystemZTargetLowering::emitSelect()

Since MBB was split *before* MI, the MI(s) will reside in JoinMBB (MBB) at
the point of erasing them, so calling StartMBB->erase() is actually wrong,
although it is "working" by all appearances.

Review: Ulrich Weigand
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp (diff)llvm.src/lib/Target/SystemZ/SystemZISelLowering.cpp
Revision 371994 by gchatelet:
[NFC] remove unused functions

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67616
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h (diff)llvm.src/include/llvm/Analysis/TargetTransformInfo.h
The file was modified/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h (diff)llvm.src/include/llvm/Analysis/TargetTransformInfoImpl.h
The file was modified/llvm/trunk/lib/Analysis/TargetTransformInfo.cpp (diff)llvm.src/lib/Analysis/TargetTransformInfo.cpp
Revision 371993 by arsenm:
AMDGPU/GlobalISel: Fail select of G_INSERT non-32-bit source

This was producing an illegal copy which would hit an assert
later. Error on selection for now until this is implemented.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp (diff)llvm.src/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
Revision 371992 by arsenm:
AMDGPU/GlobalISel: Fix some broken run lines
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-amdgcn.ldexp.s16.mir (diff)llvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-amdgcn.ldexp.s16.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-atomicrmw-fadd-local.mir (diff)llvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-atomicrmw-fadd-local.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-fabs.mir (diff)llvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-fabs.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-fneg.mir (diff)llvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-fneg.mir
Revision 371991 by arsenm:
AMDGPU/GlobalISel: Fix RegBankSelect for G_FRINT and G_FCEIL
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp (diff)llvm.src/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/regbankselect-fceil.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/regbankselect-fceil.mir
The file was added/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/regbankselect-frint.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/regbankselect-frint.mir
Revision 371990 by arsenm:
AMDGPU/GlobalISel: Remove another illegal select test
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-constant.mir (diff)llvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-constant.mir