Skip to content
  1. Nov 11, 2019
    • Nick Desaulniers's avatar
      change LLVM_VERSION_SUFFIX default from svn to git · 49fb4a96
      Nick Desaulniers authored
      
      
      Summary:
      Sayonara SVN!
      
      Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      
      Reviewers: tstellar, jyknight, lebedev.ri, smeenai, mgorny, hans, mclow.lists
      
      Reviewed By: mgorny, hans
      
      Subscribers: christof, libcxx-commits, llvm-commits, srhines
      
      Tags: #libc, #llvm
      
      Differential Revision: https://reviews.llvm.org/D70019
      49fb4a96
    • LLVM GN Syncbot's avatar
      gn build: Merge 8d288a06 · 2da34a43
      LLVM GN Syncbot authored
      2da34a43
    • Francis Visoiu Mistrih's avatar
      [ObjC] Override TailCallKind when lowering objc intrinsics · a9a3781d
      Francis Visoiu Mistrih authored
      The tail-call-kind-ness is known by the ObjCARC analysis and can be
      enforced while lowering the intrinsics to calls.
      
      This allows us to get the requested tail calls at -O0 without trying to
      preserve the attributes throughout passes that change code even at -O0
      ,like the Always Inliner, where the ObjCOpt pass doesn't run.
      
      Differential Revision: https://reviews.llvm.org/D69980
      a9a3781d
    • Stefan Pintile's avatar
      [PowerPC] Implementing overflow version for XO-Form instructions · fdf3d176
      Stefan Pintile authored
      The Overflow version of XO-Form instruction uses the SO, OV and
      OV32 special registers.
      
      This changes modifies existing multiclasses and instruction
      definitions to allow for the use of the XER register to record
      the various types if overflow from possible add, subtract and
      multiply instructions. It then modifies the existing instructions
      as to use these multiclasses as needed.
      
      Patch By: Kamau Bridgeman
      
      Differential Revision: https://reviews.llvm.org/D66902
      fdf3d176
    • 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
    • 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
    • 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
    • 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
    • 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