1. Sep 11, 2020
    • Florian Hahn's avatar
      Revert "[ORC] Make MaterializationResponsibility immovable, pass by unique_ptr." · c0825fa5
      Florian Hahn authored
      This reverts commit c74900ca.
      
      This appears to be breaking some builds on macOS and has been causing
      build failures on Green Dragon (see below). I am reverting this for now,
      to unblock testing on Green Dragon.
      
      http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/18144/console
      
      [65/187] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -DBUILD_EXAMPLES -DGTEST_HAS_RTTI=0 -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iexamples/ThinLtoJIT -I/Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/examples/ThinLtoJIT -Iinclude -I/Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -O3  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.9    -fno-exceptions -fno-rtti -UNDEBUG -std=c++14 -MD -MT examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o -MF examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o.d -o examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o -c /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/examples/ThinLtoJIT/ThinLtoDiscoveryThread.cpp
      FAILED: examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o
      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -DBUILD_EXAMPLES -DGTEST_HAS_RTTI=0 -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iexamples/ThinLtoJIT -I/Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/examples/ThinLtoJIT -Iinclude -I/Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -O3  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.9    -fno-exceptions -fno-rtti -UNDEBUG -std=c++14 -MD -MT examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o -MF examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o.d -o examples/ThinLtoJIT/CMakeFiles/ThinLtoJIT.dir/ThinLtoDiscoveryThread.cpp.o -c /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/examples/ThinLtoJIT/ThinLtoDiscoveryThread.cpp
      In file included from /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/examples/ThinLtoJIT/ThinLtoDiscoveryThread.cpp:7:
      /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/examples/ThinLtoJIT/ThinLtoInstrumentationLayer.h:37:68: error: non-virtual member function marked 'override' hides virtual member function
        void emit(MaterializationResponsibility R, ThreadSafeModule TSM) override;
                                                                         ^
      /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Layer.h:103:16: note: hidden overloaded virtual function 'llvm::orc::IRLayer::emit' declared here: type mismatch at 1st parameter ('std::unique_ptr<MaterializationResponsibility>' vs 'llvm::orc::MaterializationResponsibility')
        virtual void emit(std::unique_ptr<MaterializationResponsibility> R,
                     ^
      1 error generated.
      c0825fa5
    • Martin Storsjö's avatar
      [MC] [Win64EH] Fix builds with expensive checks enabled · e6419d32
      Martin Storsjö authored
      This fixes a failed assert if expensive checks are enabled,
      since 1308bb99.
      e6419d32
    • Marius Brehler's avatar
      [mlir] Fix generation of AVX512 dialect documentation · a68673cc
      Marius Brehler authored
      This changes adjusts the documentation generation for the AVX512 dialect. The machanism to generate documentation was changed with https://github.com/llvm/llvm-project/commit/1a083f027f33f4014247df4c0e757e23d5cdab64.
      
      Reviewed By: nicolasvasilache
      
      Differential Revision: https://reviews.llvm.org/D87460
      a68673cc
    • Guillaume Chatelet's avatar
      b8ea47a3
    • Rainer Orth's avatar
      [clang][Sparc] Default to -mcpu=v9 for Sparc V8 on Solaris · 76e85ae2
      Rainer Orth authored
      As reported in Bug 42535, `clang` doesn't inline atomic ops on 32-bit
      Sparc, unlike `gcc` on Solaris.  In a 1-stage build with `gcc`, only two
      testcases are affected (currently `XFAIL`ed), while in a 2-stage build more
      than 100 tests `FAIL` due to this issue.
      
      The reason for this `gcc`/`clang` difference is that `gcc` on 32-bit
      Solaris/SPARC defaults to `-mpcu=v9` where atomic ops are supported, unlike
      with `clang`'s default of `-mcpu=v8`.  This patch changes `clang` to use
      `-mcpu=v9` on 32-bit Solaris/SPARC, too.
      
      Doing so uncovered two bugs:
      
      `clang -m32 -mcpu=v9` chokes with any Solaris system headers included:
      
        /usr/include/sys/isa_defs.h:461:2: error: "Both _ILP32 and _LP64 are defined"
        #error "Both _ILP32 and _LP64 are defined"
      
      While `clang` currently defines `__sparcv9` in a 32-bit `-mcpu=v9`
      compilation, neither `gcc` nor Studio `cc` do.  In fact, the Studio 12.6
      `cc(1)` man page clearly states:
      
                  These predefinitions are valid in all modes:
        [...]
                     __sparcv8 (SPARC)
                     __sparcv9 (SPARC -m64)
      
      At the same time, the patch defines `__GCC_HAVE_SYNC_COMPARE_AND_SWAP_[1248]`
      for a 32-bit Sparc compilation with any V9 cpu.  I've also changed
      `MaxAtomicInlineWidth` for V9, matching what `gcc` does and the Oracle
      Developer Studio 12.6: C User's Guide documents (Ch. 3, Support for Atomic
      Types, 3.1 Size and Alignment of Atomic C Types).
      
      The two testcases that had been `XFAIL`ed for Bug 42535 are un-`XFAIL`ed
      again.
      
      Tested on `sparcv9-sun-solaris2.11` and `amd64-pc-solaris2.11`.
      
      Differential Revision: https://reviews.llvm.org/D86621
      76e85ae2
    • MaheshRavishankar's avatar
      [mlir][Linalg] Make LinalgBaseTilingPattern not delete the original operation. · d380b582
      MaheshRavishankar authored
      The LinalgTilingPattern class dervied from the base deletes the
      original operation. This allows for the use case where the more
      transformations are necessary on the original operation after
      tiling. In such cases the pattern can derive from
      LinalgBaseTilingPattern instead of LinalgTilingPattern.
      
      Differential Revision: https://reviews.llvm.org/D87308
      d380b582
    • David Sherwood's avatar
      [SVE][CodeGen] Fix InlineFunction for scalable vectors · 1e1770a0
      David Sherwood authored
      When inlining functions containing allocas of scalable vectors we
      cannot specify the size in the lifetime markers, since we don't
      know this at compile time.
      
      Added new test here:
      
        test/Transforms/Inline/AArch64/sve-alloca-merge.ll
      
      Differential Revision: https://reviews.llvm.org/D87139
      1e1770a0
    • Yevgeny Rouban's avatar
      [NewPM] Introduce PreserveCFG check · 28012e00
      Yevgeny Rouban authored
      Check that all passes, which report they preserve CFG,
      are really preserving CFG.
      A new standard instrumentation is introduced. It can be
      switched on/off by the flag verify-cfg-preserved, which
      is on by default for debug builds.
      
      Reviewers: kuhar, fedor.sergeev
      
      Differential Revision: https://reviews.llvm.org/D81558
      28012e00
    • Martin Storsjö's avatar
      [MC] [Win64EH] Write packed ARM64 epilogues if possible · 1308bb99
      Martin Storsjö authored
      This gives a pretty substantial size reduction; for a 6.5 MB
      DLL with 300 KB .xdata, the .xdata shrinks by 66 KB.
      
      Differential Revision: https://reviews.llvm.org/D87369
      1308bb99
    • Martin Storsjö's avatar
      [MC] [Win64EH] Canonicalize ARM64 unwind opcodes · 700fbe59
      Martin Storsjö authored
      Convert 2-byte opcodes to equivalent 1-byte ones.
      
      Adjust the existing exhaustive testcase to avoid being altered by
      the simplification rules (to keep that test exercising all individual
      opcodes).
      
      Fix the assembler parser limits for register pairs; for .seh_save_regp
      and .seh_save_regp_x, we can allow up to x29, for a x29+x30 pair
      (which gets remapped to the UOP_SaveFPLR(X) opcodes), for .seh_save_fregp
      and .seh_save_fregpx, allow up to d14+d15.
      
      Not creating .seh_save_next for float register pairs, as the
      actual unwinder implementation in current versions of Windows is buggy
      for that case.
      
      This gives a minimal but measurable size reduction. (For a 6.5 MB
      DLL with 300 KB .xdata, the .xdata shrinks by 48 bytes. The opcode
      sequences are padded to a 4 byte boundary, so very small improvements
      might not end up mattering directly.)
      
      Differential Revision: https://reviews.llvm.org/D87367
      700fbe59
    • Martin Storsjö's avatar
      [CodeGen] [WinException] Remove a redundant explicit section switch for aarch64 · 46416f08
      Martin Storsjö authored
      The following EmitWinEHHandlerData() implicitly switches to .xdata, just
      like on x86_64.
      
      This became orphaned from the original code requiring it in
      0b61d220 / https://reviews.llvm.org/D61095.
      
      Differential Revision: https://reviews.llvm.org/D87447
      46416f08
    • Guillaume Chatelet's avatar
      [Clang] Clarify __builtin_memcpy_inline documentation · e38be709
      Guillaume Chatelet authored
      This patch updates the documentation about `__builtin_memcpy_inline` and reorders the sections so it is more consitent and understandable.
      
      Differential Revision: https://reviews.llvm.org/D87458
      e38be709
    • Esme-Yi's avatar
      [NFC][PowerPC] Add tests of constants-i64. · 525c83ce
      Esme-Yi authored
      525c83ce
    • Michael Liao's avatar
      [EarlyCSE] Remove unnecessary operand swap. · f787fe15
      Michael Liao authored
      - As min/max are commutative operators, there is no need to swap
        operands. That breaks the convention calculating the hash value.
      f787fe15
    • Alok Kumar Sharma's avatar
      [DebugInfo] Fixing CodeView assert related to lowerBound field of DISubrange. · e45b0708
      Alok Kumar Sharma authored
          This is to fix CodeView build failure https://bugs.llvm.org/show_bug.cgi?id=47287
          after DIsSubrange upgrade D80197
      
          Assert condition is now removed and Count is calculated in case LowerBound
          is absent or zero and Count or UpperBound is constant. If Count is unknown
          it is later handled as VLA (currently Count is set to zero).
      
      Reviewed By: rnk
      
      Differential Revision: https://reviews.llvm.org/D87406
      e45b0708
    • Mircea Trofin's avatar
      da924488
    • Jan Vesely's avatar
      libclc/spirv: Add missing files from D85911 · 16ba78ee
      Jan Vesely authored
      Fixes: 060c8e08
      
      
      Signed-off-by: default avatarJan Vesely <jan.vesely@rutgers.edu>
      16ba78ee
    • Michael Liao's avatar
      [EarlyCSE] Fix and recommit the revised c9826829 · 41e68f7e
      Michael Liao authored
      In addition to calculate hash consistently by swapping SELECT's
      operands, we also need to inverse the select pattern favor to match the
      original logic.
      
      [EarlyCSE] Equivalent SELECTs should hash equally
      
      DenseMap<SimpleValue> assumes that, if its isEqual method returns true
      for two elements, then its getHashValue method must return the same value
      for them. This invariant is broken when one SELECT node is a min/max
      operation, and the other can be transformed into an equivalent min/max by
      inverting its predicate and swapping its operands. This patch fixes an
      assertion failure that would occur intermittently while compiling the
      following IR:
      
          define i32 @t(i32 %i) {
            %cmp = icmp sle i32 0, %i
            %twin1 = select i1 %cmp, i32 %i, i32 0
            %cmpinv = icmp sgt i32 0, %i
            %twin2 = select i1 %cmpinv,  i32 0, i32 %i
            %sink = add i32 %twin1, %twin2
            ret i32 %sink
          }
      
      Differential Revision: https://reviews.llvm.org/D86843
      41e68f7e
    • Vitaly Buka's avatar
      [Asan] Fix __asan_update_allocation_context · 3f7c3e84
      Vitaly Buka authored
      Update both thread and stack.
      Update thread and stack as atomic operation.
      Keep all 32bit of TID as now we have enough bits.
      
      Depends on D87135.
      
      Reviewed By: morehouse
      
      Differential Revision: https://reviews.llvm.org/D87217
      3f7c3e84
    • Michael Liao's avatar
      Revert "[EarlyCSE] Equivalent SELECTs should hash equally" · 39dc75f6
      Michael Liao authored
      This reverts commit c9826829 as it
      breaks regression tests.
      39dc75f6
    • Michael Liao's avatar
      Remove dependency on clangASTMatchers. · b22d4504
      Michael Liao authored
      - It seems no long required for shared library builds.
      b22d4504
    • Peter Collingbourne's avatar
      scudo: Remove the THREADLOCAL macro. · d876c7c8
      Peter Collingbourne authored
      Replace all remaining uses with thread_local, which is a C++11
      standard feature.
      
      Differential Revision: https://reviews.llvm.org/D87478
      d876c7c8
    • Peter Collingbourne's avatar
      scudo: Introduce a new mechanism to let Scudo access a platform-specific TLS slot · 84c2c497
      Peter Collingbourne authored
      An upcoming change to Scudo will change how we use the TLS slot
      in tsd_shared.h, which will be a little easier to deal with if
      we can remove the code path that calls pthread_getspecific and
      pthread_setspecific. The only known user of this code path is Fuchsia.
      
      We can't eliminate this code path by making Fuchsia use ELF TLS
      because although Fuchsia supports ELF TLS, it is not supported within
      libc itself. To address this, Roland McGrath on the Fuchsia team has
      proposed that Scudo will optionally call a platform-provided function
      to access a TLS slot reserved for Scudo. Android also has a reserved
      TLS slot, but the code that accesses the TLS slot lives in Scudo.
      
      We can eliminate some complexity and duplicated code by having Android
      use the same mechanism that was proposed for Fuchsia, which is what
      this change does. A separate change to Android implements it.
      
      Differential Revision: https://reviews.llvm.org/D87420
      84c2c497
    • MaheshRavishankar's avatar
    • Jonas Devlieghere's avatar
      [lldb] Add missing LLDB_REGISTER_CONSTRUCTOR in SBPlatform · bc0a35f3
      Jonas Devlieghere authored
      This fixes the following assertion in TestPlatformPython.py.
      
        Assertion failed: (id != 0 && "Forgot to add function to
        registry?")
      bc0a35f3
    • Xing GUO's avatar
      [obj2yaml] Add support for dumping the .debug_ranges section. · 0e47a8d1
      Xing GUO authored
      This patch adds support for dumping the .debug_ranges section to
      elf2yaml.
      
      Reviewed By: jhenderson
      
      Differential Revision: https://reviews.llvm.org/D87429
      0e47a8d1
    • Zarko Todorovski's avatar
      Remove unused variable introduce in 0448d11a causing build · 03539619
      Zarko Todorovski authored
      failures with -Werror on.
      03539619
    • Reid Kleckner's avatar
    • Amara Emerson's avatar
      [AArch64][GlobalISel] Don't emit a branch for a fallthrough G_BR at -O0. · 0448d11a
      Amara Emerson authored
      With optimizations we leave the decision to eliminate fallthrough branches to
      bock placement, but at -O0 we should do it in the selector to save code size.
      
      This regressed -O0 with a recent change to a combiner.
      0448d11a
    • Reid Kleckner's avatar
      Use pragmas to work around MSVC x86_32 debug miscompile bug · 4e3edef4
      Reid Kleckner authored
      Halide users reported this here: https://llvm.org/pr46176
      I reported the issue to MSVC here:
      https://developercommunity.visualstudio.com/content/problem/1179643/msvc-copies-overaligned-non-trivially-copyable-par.html
      
      This codepath is apparently not covered by LLVM's unit tests, so I added
      coverage in a unit test.
      
      If we want to support this configuration going forward, it means that is
      in general not safe to pass a SmallVector<T, N> by value if alignof(T)
      is greater than 4. This doesn't appear to come up often because passing
      a SmallVector by value is inefficient and not idiomatic: it copies the
      inline storage. In this case, the SmallVector<LLT,4> is captured by
      value by a lambda, and the lambda is passed by value into std::function,
      and that's how we hit the bug.
      
      Differential Revision: https://reviews.llvm.org/D87475
      4e3edef4
    • Peter Steinfeld's avatar
      [flang] Fix assert on constant folding of extended types · b34f1168
      Peter Steinfeld authored
      When we define a derived type that extends another derived type, we can then
      create a structure constructor that contains values for the fields of both the
      child type and its parent.  The compiler's internal representation of that
      value contains the name of the parent type where a component name would
      normally appear.  This caused an assert during contant folding.
      
      There are three cases for components that appear in structure constructors.
      The first is the normal case of a component appearing in a structure
      constructor for its type.
      
        The second is a component of the parent (or grandparent) type appearing in a
        structure constructor for the child type.
      
        The third is the parent type component, which can appear in the structure
        constructor of its child.
      
      There are also cases where the component can be arrays.
      
      I created the test case folding12.f90 that covers all of these cases and
      modified the code to handle them.
      
      Most of my changes were to th...
      b34f1168
    • Fangrui Song's avatar
      [ELF] Make two PPC64.cpp variables constexpr. NFC · 485f3f35
      Fangrui Song authored
      Why are they mutable? :)
      485f3f35
    • Florian Hahn's avatar
      [DSE] Switch to MemorySSA-backed DSE by default. · fb109c42
      Florian Hahn authored
      The tests have been updated and I plan to move them from the MSSA
      directory up.
      
      Some end-to-end tests needed small adjustments. One difference to the
      legacy DSE is that legacy DSE also deletes trivially dead instructions
      that are unrelated to memory operations. Because MemorySSA-backed DSE
      just walks the MemorySSA, we only visit/check memory instructions. But
      removing unrelated dead instructions is not really DSE's job and other
      passes will clean up.
      
      One noteworthy change is in llvm/test/Transforms/Coroutines/ArgAddr.ll,
      but I think this comes down to legacy DSE not handling instructions that
      may throw correctly in that case. To cover this with MemorySSA-backed
      DSE, we need an update to llvm.coro.begin to treat it's return value to
      belong to the same underlying object as the passed pointer.
      
      There are some minor cases MemorySSA-backed DSE currently misses, e.g. related
      to atomic operations, but I think those can be implemented after the switch.
      
      This has been discussed on llvm-dev:
      http://lists.llvm.org/pipermail/llvm-dev/2020-August/144417.html
      
      For the MultiSource/SPEC2000/SPEC2006 the number of eliminated stores
      goes from ~17500 (legayc DSE) to ~26300 (MemorySSA-backed). More numbers
      and details in the thread on llvm-dev.
      
      Impact on CTMark:
      ```
                                           Legacy Pass Manager
                              exec instrs    size-text
      O3                       + 0.60%        - 0.27%
      ReleaseThinLTO           + 1.00%        - 0.42%
      ReleaseLTO-g.            + 0.77%        - 0.33%
      RelThinLTO (link only)   + 0.87%        - 0.42%
      RelLO-g (link only)      + 0.78%        - 0.33%
      ```
      http://llvm-compile-time-tracker.com/compare.php?from=3f22e96d95c71ded906c67067d75278efb0a2525&to=ae8be4642533ff03803967ee9d7017c0d73b0ee0&stat=instructions
      ```
                                           New Pass Manager
                             exec instrs.   size-text
      O3                       + 0.95%       - 0.25%
      ReleaseThinLTO           + 1.34%       - 0.41%
      ReleaseLTO-g.            + 1.71%       - 0.35%
      RelThinLTO (link only)   + 0.96%       - 0.41%
      RelLO-g (link only)      + 2.21%       - 0.35%
      ```
      http://195.201.131.214:8000/compare.php?from=3f22e96d95c71ded906c67067d75278efb0a2525&to=ae8be4642533ff03803967ee9d7017c0d73b0ee0&stat=instructions
      
      Reviewed By: asbirlea, xbolva00, nikic
      
      Differential Revision: https://reviews.llvm.org/D87163
      fb109c42
    • Bryan Chan's avatar
      [EarlyCSE] Equivalent SELECTs should hash equally · c9826829
      Bryan Chan authored
      DenseMap<SimpleValue> assumes that, if its isEqual method returns true
      for two elements, then its getHashValue method must return the same value
      for them. This invariant is broken when one SELECT node is a min/max
      operation, and the other can be transformed into an equivalent min/max by
      inverting its predicate and swapping its operands. This patch fixes an
      assertion failure that would occur intermittently while compiling the
      following IR:
      
          define i32 @t(i32 %i) {
            %cmp = icmp sle i32 0, %i
            %twin1 = select i1 %cmp, i32 %i, i32 0
            %cmpinv = icmp sgt i32 0, %i
            %twin2 = select i1 %cmpinv,  i32 0, i32 %i
            %sink = add i32 %twin1, %twin2
            ret i32 %sink
          }
      
      Differential Revision: https://reviews.llvm.org/D86843
      c9826829
    • Siva Chandra Reddy's avatar
      [libc][obvious] Include Sqrt.h in SqrtLongDoubleX86.h. · cb19e8c6
      Siva Chandra Reddy authored
      This makes SqrtLongDoubleX86.h includable by itself.
      cb19e8c6
    • Lang Hames's avatar
      [ORC] Make MaterializationResponsibility immovable, pass by unique_ptr. · c74900ca
      Lang Hames authored
      Making MaterializationResponsibility instances immovable allows their
      associated VModuleKeys to be updated by the ExecutionSession while the
      responsibility is still in-flight. This will be used in the upcoming
      removable code feature to enable safe merging of resource keys even if
      there are active compiles using the keys being merged.
      c74900ca
    • Nikita Popov's avatar
      [DemandedBits][BDCE] Add support for min/max intrinsics · a5168bdb
      Nikita Popov authored
      Add DemandedBits / BDCE support for min/max intrinsics: If the low
      bits are not demanded in the result, they also aren't demanded in
      the operands.
      
      Differential Revision: https://reviews.llvm.org/D87161
      a5168bdb
    • Nikita Popov's avatar
      [DemandedBits] Add braces to large if (NFC) · 99e78cb7
      Nikita Popov authored
      While the if only contains a single statement, it happens to be
      a huge switch. Add braces to make this code easier to read.
      99e78cb7
    • Nikita Popov's avatar
    • Nikita Popov's avatar
      [InstCombine] Regenerate test checks (NFC) · adb73889
      Nikita Popov authored
      adb73889