Skip to content
  1. Nov 11, 2019
    • joanlluch's avatar
      [TargetLowering][DAGCombine][MSP430] Shift Amount Threshold in DAGCombine (4) (Baseline tests) · abbbf988
      joanlluch authored
      Summary: Baseline tests before applying D70042
      
      Reviewers: spatel, asl
      
      Subscribers: llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D70083
      abbbf988
    • Sanjay Patel's avatar
      Revert "[InstCombine] avoid crash from deleting an instruction that still has... · 29f5d167
      Sanjay Patel authored
      Revert "[InstCombine] avoid crash from deleting an instruction that still has uses (PR43723) (3rd try)"
      
      This reverts commit 3db8a3ef.
      This caused a different memory-sanitizer failure than earlier attempts,
      but it's still not right.
      29f5d167
    • Sanjay Patel's avatar
      [InstCombine] avoid crash from deleting an instruction that still has uses (PR43723) (3rd try) · 3db8a3ef
      Sanjay Patel authored
      Re-try because earlier attempts were reverted due to use-after-free.
      Hopefully, diagnosed correctly this time - we replace/remove the
      invariant.start first rather than the invariant.end to avoid angering
      worklist-based iteration.
      
      We gather a set of white-listed instructions in isAllocSiteRemovable() and then
      replace/erase them. But we don't know in general if the instructions in the set
      have uses amongst themselves, so order of deletion makes a difference.
      
      There's already a special-case for the llvm.objectsize intrinsic, so add another
      for llvm.invariant.start.
      
      Should fix:
      https://bugs.llvm.org/show_bug.cgi?id=43723
      
      Differential Revision: https://reviews.llvm.org/D69977
      3db8a3ef
    • Tom Weaver's avatar
      Revert "[DBG][OPT] Attempt to salvage or undef debug info when removing... · 9f48a160
      Tom Weaver authored
      Revert "[DBG][OPT] Attempt to salvage or undef debug info when removing trivially deletable instructions in the Reassociate Expression pass."
      
      This reverts commit 1984a27d.
      9f48a160
    • Tom Weaver's avatar
      [DBG][OPT] Attempt to salvage or undef debug info when removing trivially... · 1984a27d
      Tom Weaver authored
      [DBG][OPT] Attempt to salvage or undef debug info when removing trivially deletable instructions in the Reassociate Expression pass.
      
      Reviewed By: aprantl, vsk
      
      Differential revision: https://reviews.llvm.org/D69943
      1984a27d
    • Tom Weaver's avatar
      [NFC][TEST_COMMIT] Add fullstop to comment. · 75af15d8
      Tom Weaver authored
      75af15d8
    • Utkarsh Saxena's avatar
      [clangd] Use name of Macro to compute its SymbolID, NFC. · 02ec6ff7
      Utkarsh Saxena authored
      Summary:
      We use the name from the IdentifierInfo of the Macro to compute its
      SymbolID. It is better to just take the Name as a parameter to avoid
      storing the IdentifierInfo whenever we need the SymbolID for the Macro.
      
      Patch by UTKARSH SAXENA!
      
      Reviewers: hokein
      
      Reviewed By: hokein
      
      Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D69937
      02ec6ff7
    • Simon Pilgrim's avatar
    • Simon Pilgrim's avatar
      b47c7cd4
    • Simon Pilgrim's avatar
      Fix -Wparentheses warning. NFCI. · 0040c4ba
      Simon Pilgrim authored
      0040c4ba
    • Simon Pilgrim's avatar
      8383be0f
    • Nuno Lopes's avatar
      docs: fix warning in LangRef parsing · a7244c56
      Nuno Lopes authored
      a7244c56
    • Jay Foad's avatar
      [InstCombine] Simplify binary op when only one operand is a select · 9323ef4e
      Jay Foad authored
      Summary:
      SimplifySelectsFeedingBinaryOp simplified binary ops when both operands
      were selects with the same condition. This patch extends it to handle
      these cases where only one operand is a select:
      
      X op (C ? P : Q) -> C ? (X op P) : (X op Q)
        // if X op P and X op Q both simplify
      (C ? P : Q) op Y -> C ? (P op Y) : (Q op Y)
        // if P op Y and Q op Y both simplify
      
      For example: X *fast (C ? 1.0 : 0.0) -> C ? X : 0.0
      
      Reviewers: mcberg2017, majnemer, craig.topper, qcolombet, mcrosier
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D64713
      9323ef4e
    • Michał Górny's avatar
      [lldb] [test] Fix typo in TestSendSignal · e2f0b243
      Michał Górny authored
      e2f0b243
    • Hans Wennborg's avatar
      Revert cdcf58e5 "[RISCV] enable LTO support, pass some options to linker." · b1ac1f00
      Hans Wennborg authored
      This started passing target-features on the linker line, not just for RISCV but
      for all targets, leading to error messages in Chromium Android build:
      
        '+soft-float-abi' is not a recognized feature for this target (ignoring feature)
        '+soft-float-abi' is not a recognized feature for this target (ignoring feature)
      
      See Phabricator review for details.
      
      Reverting until this can be fixed properly.
      
      > Summary:
      > 1. enable LTO need to pass target feature and abi to LTO code generation
      >    RISCV backend need the target feature to decide which extension used in
      >    code generation.
      > 2. move getTargetFeatures to CommonArgs.h and add ForLTOPlugin flag
      > 3. add general tools::getTargetABI in CommonArgs.h because different target uses different
      >    way to get the target ABI.
      >
      > Patch by Kuan Hsu Chen (khchen)
      >
      > Reviewers: lenary, lewis-revill, asb, MaskRay
      >
      > Reviewed By: lenary
      >
      > Subscribers: hiraditya, dschuff, aheejin, fedor.sergeev, mehdi_amini, inglorion, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, steven_wu, rogfer01, MartinMosbeck, brucehoult, the_o, dexonsmith, rkruppe, PkmX, jocewei, psnobl, benna, Jim, lenary, s.egerton, pzheng, cfe-commits
      >
      > Tags: #clang
      >
      > Differential Revision: https://reviews.llvm.org/D67409
      b1ac1f00
    • Michał Górny's avatar
      36937ec7
    • Luís Marques's avatar
      [RISCV][NFC] Add nounwind to LKK test functions · 4197a765
      Luís Marques authored
      Differential Revision: https://reviews.llvm.org/D70067
      4197a765
    • Haojian Wu's avatar
      [clangd] Fix a regression of not showing documentation from forward declarations. · 41104a94
      Haojian Wu authored
      Summary:
      There is a regression from https://reviews.llvm.org/D68467. Unlike class
      forward declarations, function ducomentation is written in the declaration in
      headers, the function definition doesn't contain any documentation, cases like:
      
      ```
      foo.h
      // this is foo.
      void foo();
      foo.cc
      
      void foo() {}
      ```
      we should still show documentation from the foo declaration.
      
      Reviewers: ilya-biryukov
      
      Reviewed By: ilya-biryukov
      
      Subscribers: MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D69961
      41104a94
    • QingShan Zhang's avatar
    • joanlluch's avatar
      [TargetLowering][DAGCombine][MSP430] Shift Amount Threshold in DAGCombine (3) · e0012c5d
      joanlluch authored
      Summary:
      Additional filtering of undesired shifts for targets that do not support them efficiently.
      
      Related with  D69116 and  D69120
      
      Applies the TLI.getShiftAmountThreshold hook to prevent undesired generation of shifts for the following IR code:
      
      ```
      define i16 @testShiftBits(i16 %a) {
      entry:
        %and = and i16 %a, -64
        %cmp = icmp eq i16 %and, 64
        %conv = zext i1 %cmp to i16
        ret i16 %conv
      }
      
      define i16 @testShiftBits_11(i16 %a) {
      entry:
        %cmp = icmp ugt i16 %a, 63
        %conv = zext i1 %cmp to i16
        ret i16 %conv
      }
      
      define i16 @testShiftBits_12(i16 %a) {
      entry:
        %cmp = icmp ult i16 %a, 64
        %conv = zext i1 %cmp to i16
        ret i16 %conv
      }
      ```
      The attached diff file shows the piece code in TargetLowering that is responsible for the generation of shifts in relation to the IR above.
      
      Before applying this patch, shifts will be generated to replace non-legal icmp immediates. However, shifts may be undesired if they are even more expensive for the target.
      
      For all my previous patches in this series (cited above) I added test cases for the MSP430 target. However, in this case, the target is not suitable for showing improvements related with this patch, because the MSP430 does not implement "isLegalICmpImmediate". The default implementation returns always true, therefore the patched code in TargetLowering is never reached for that target. Targets implementing both "isLegalICmpImmediate" and "getShiftAmountThreshold" will benefit from this.
      
      The differential effect of this patch can only be shown for the MSP430 by temporarily implementing "isLegalICmpImmediate" to return false for large immediates. This is simulated with the implementation of a command line flag that was incorporated in D69975
      
      This patch belongs to a initiative to "relax" the generation of shifts by LLVM for targets requiring it
      
      Reviewers: spatel, lebedev.ri, asl
      
      Reviewed By: spatel
      
      Subscribers: lenary, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D69326
      e0012c5d
    • Georgii Rymar's avatar
    • Matt Arsenault's avatar
      Use MCRegister in copyPhysReg · e6c9a9af
      Matt Arsenault authored
      e6c9a9af
    • Georgii Rymar's avatar
      [FixBB] - An attemp to fix clang-armv7-linux-build-cache builder. · a26d7b62
      Georgii Rymar authored
      http://lab.llvm.org:8011/builders/clang-armv7-linux-build-cache/builds/22130/steps/build%20stage%201/logs/stdio
      
      /usr/bin/c++   -DGTEST_HAS_RTTI=0 -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/ObjectYAML -I/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/ObjectYAML -I/usr/include/libxml2 -Iinclude -I/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/include -mthumb -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 -ffunction-sections -fdata-sections -O3    -UNDEBUG  -fno-exceptions -fno-rtti -std=c++14 -MMD -MT lib/ObjectYAML/CMakeFiles/LLVMObjectYAML.dir/YAML.cpp.o -MF lib/ObjectYAML/CMakeFiles/LLVMObjectYAML.dir/YAML.cpp.o.d -o lib/ObjectYAML/CMakeFiles/LLVMObjectYAML.dir/YAML.cpp.o -c /home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/ObjectYAML/YAML.cpp
      /home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/ObjectYAML/YAML.cpp:42:41: error: no matching function for call to 'min'
          OS.write((const char *)Data.data(), std::min(N, Data.size()));
                                              ^~~~~~~~
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/algorithmfwd.h:370:5: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long long' vs. 'unsigned int')
          min(const _Tp&, const _Tp&);
          ^
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/stl_algo.h:3451:5: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'unsigned long long'
          min(initializer_list<_Tp> __l, _Compare __comp)
          ^
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/algorithmfwd.h:375:5: note: candidate function template not viable: requires 3 arguments, but 2 were provided
          min(const _Tp&, const _Tp&, _Compare);
          ^
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/stl_algo.h:3445:5: note: candidate function template not viable: requires single argument '__l', but 2 arguments were provided
          min(initializer_list<_Tp> __l)
          ^
      /home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/ObjectYAML/YAML.cpp:46:28: error: no matching function for call to 'min'
        for (uint64_t I = 0, E = std::min(N, Data.size() / 2); I != E; ++I) {
                                 ^~~~~~~~
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/algorithmfwd.h:370:5: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long long' vs. 'unsigned int')
          min(const _Tp&, const _Tp&);
          ^
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/stl_algo.h:3451:5: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'unsigned long long'
          min(initializer_list<_Tp> __l, _Compare __comp)
          ^
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/algorithmfwd.h:375:5: note: candidate function template not viable: requires 3 arguments, but 2 were provided
          min(const _Tp&, const _Tp&, _Compare);
          ^
      /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/bits/stl_algo.h:3445:5: note: candidate function template not viable: requires single argument '__l', but 2 arguments were provided
          min(initializer_list<_Tp> __l)
      
      Fix: specify the type for std::min call.
      a26d7b62
    • Sander de Smalen's avatar
      [AArch64][SVE] Spilling/filling of SVE callee-saves. · 84a0c8e3
      Sander de Smalen authored
      Implement the spills/fills of callee-saved SVE registers using STR and LDR
      instructions.
      
      Also adds the `aarch64_sve_vector_pcs` attribute to specify the
      callee-saved registers to be used for functions that return SVE vectors or
      take SVE vectors as arguments. The callee-saved registers are vector
      registers z8-z23 and predicate registers p4-p15.
      
      The overal frame-layout with SVE will be as follows:
      
         +-------------+
         | stack args  |
         +-------------+
         | Callee Saves|
         |   X29, X30  |
         |-------------| <- FP
         | SVE Callee  | < //////////////
         | saved regs  | < //////////////
         |    z23      | < //////////////
         |     :       | < // SCALABLE //
         |    z8       | < //////////////
         |    p15      | < /// STACK ////
         |     :       | < //////////////
         |    p4       | < //// AREA ////
         +-------------+ < //////////////
         |     :       | < //////////////
         |  SVE locals | < //////////////
         |     :       | < //////////////
         +-------------+
         |/////////////| alignment gap.
         |     :       |
         | Stack objs  |
         |     :       |
         +-------------+ <- SP after call and frame-setup
      
      Reviewers: cameron.mcinally, efriedma, greened, thegameg, ostannard, rengolin
      
      Reviewed By: ostannard
      
      Differential Revision: https://reviews.llvm.org/D68996
      84a0c8e3
    • Georgii Rymar's avatar
      [yaml2obj] - Add a way to describe the custom data that is not part of an output section. · 06456daa
      Georgii Rymar authored
      Currently there is no way to describe the data that is not a part of an output section.
      It can be a data used to align sections or to fill the gaps with something,
      or another kind of custom data. In this patch I suggest a way to describe it. It looks like that:
      
      ```
      Sections:
        - Type:    CustomFiller
          Pattern: "CCDD"
          Size:    4
        - Name:    .bar
          Type:    SHT_PROGBITS
          Content: "FF"
      ```
      
      I.e. I've added a kind of synthetic section with a synthetic type "CustomFiller".
      In the code it is called a "SyntheticFiller", which is "a synthetic section which
      might be used to write the custom data around regular output sections. It does
      not present in the sections header table, but it might affect the output file size and
      program headers produced. Think about it as about piece of data."
      
      `SyntheticFiller` currently has a `Pattern` field and a `Size` field + an optional `Name`.
      When written, `Size` of bytes in the output will be filled with a `Pattern`.
      It is possible to reference a named filler it by name from the program headers description,
      just like any other normal section.
      
      Differential revision: https://reviews.llvm.org/D69709
      06456daa
    • Ilya Biryukov's avatar
      [clangd] Fixes colon escaping on Windows · b4f46a9b
      Ilya Biryukov authored
      vscode always escapes the colon on the file uri, which causes the semantic highlighting fails on windows.
      
      fixes: https://github.com/clangd/clangd/issues/176
      b4f46a9b
    • marshall's avatar
    • QingShan Zhang's avatar
    • Tsang Whitney W.H's avatar
      [DirectedGraph]: Add setTargetNode member function · 6ef63638
      Tsang Whitney W.H authored
      Summary:Add the setTargetNode member function to class DGEdge.
      Authored By:etiotto
      Reviewer:bmahjour, Whitney, jdoerfert, Meinersbur, fhahn, kbarton,
      dmgreen
      Reviewed By:Meinersbur
      Subscribers:dexonsmith, kristina, llvm-commits
      Tag:LLVM
      Differential Revision:https://reviews.llvm.org/D68474
      6ef63638
    • Vladimir Vereschaka's avatar
      Revert "Fixed a profdata file size detection on Windows system." · 3d3445e3
      Vladimir Vereschaka authored
      This reverts commit bcbb121f.
      
      Using 'ls -o' is not compatible way to fix the problem. FreeBSD and OSX
      version of 'ls' do not support -o flag and test gets failed on these
      platforms.
      
      Differential Revision: https://reviews.llvm.org/D69317
      3d3445e3
    • Craig Topper's avatar
      [InstCombine] Turn (extractelement <1 x i64/double> (bitcast (x86_mmx))) into... · aafde063
      Craig Topper authored
      [InstCombine] Turn (extractelement <1 x i64/double> (bitcast (x86_mmx))) into a single bitcast from x86_mmx to i64/double.
      
      The _m64 type is represented in IR as <1 x i64>. The x86-64 ABI
      on Linux passes <1 x i64> as a double. MMX intrinsics use x86_mmx
      type in IR.These things result in a lot of bitcasts in mmx code.
      There's another instcombine that tries to turn bitcast <1 x i64>
      to double into extractelement and a bitcast.
      
      The combine here tries to reverse this extractelement conversion
      if we see an mmx type.
      aafde063
    • Craig Topper's avatar
      [InstCombine] Add a test case for suboptimal handling of (double (bitcast (<1... · d37db750
      Craig Topper authored
      [InstCombine] Add a test case for suboptimal handling of (double (bitcast (<1 x i64> (bitcast (x86_mmx)))))
      
      The outer bitcast gets turned into an extractelement and another
      bitcast rather than combining away to a single bitcast from mmx
      to double.
      d37db750
    • Sanjay Patel's avatar
      Revert "[InstCombine] avoid crash from deleting an instruction that still has... · d115b9fd
      Sanjay Patel authored
      Revert "[InstCombine] avoid crash from deleting an instruction that still has uses (PR43723) (2nd try)"
      
      This reverts commit 56b2aee1.
      Still causes a use-after-free on sanitizer bots.
      d115b9fd
  2. Nov 10, 2019
Loading