1. Jan 31, 2020
    • Danilo Carvalho Grael's avatar
      [AArch64][SVE] Add remaining SVE2 mla indexed intrinsics. · 0610637a
      Danilo Carvalho Grael authored
      Summary:
      Add remaining SVE2 mla indexed intrinsics:
      - sqdmlalb, sqdmlalt, sqdmlslb, sqdmlslt
      
      Add suffix _lanes and switch immediate types to i32 for all mla indexed intrinsics to align with ACLE builtin definitions.
      
      Reviewers: efriedma, sdesmalen, cameron.mcinally, c-rhodes, rengolin, kmclaughlin
      
      Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, arphaman, psnobl, llvm-commits, amehsan
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D73633
      0610637a
    • Sergey Dmitriev's avatar
      [Clang][Driver] Disable llvm passes for the first host OpenMP offload compilation · 36bfdb70
      Sergey Dmitriev authored
      Summary: With OpenMP offloading host compilation is done in two phases to capture host IR that is passed to all device compilations as input. But it turns out that we currently run entire LLVM optimization pipeline on host IR on both compilations which may have unpredictable effects on the resulting code. This patch fixes this problem by disabling LLVM passes on the first compilation, so the host IR that is passed to device compilations will be captured right after front end.
      
      Reviewers: ABataev, jdoerfert, hfinkel
      
      Reviewed By: ABataev
      
      Subscribers: guansong, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D73721
      36bfdb70
    • Teresa Johnson's avatar
      [ThinLTO] Disable "Always import constants" due to compile time issues · c45bb326
      Teresa Johnson authored
      Summary:
      Disable the always importing of constants introduced in D70404 by
      default under a new internal option, since it is causing order of
      magnitude compile time regressions during the thin link. Will continue
      investigating why the regressions occur.
      
      Reviewers: evgeny777, wmi
      
      Subscribers: mehdi_amini, inglorion, hiraditya, steven_wu, dexonsmith, arphaman, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D73724
      c45bb326
    • Steven Wu's avatar
      [libcxxabi] Insert padding in __cxa_exception struct for compatibility · f2a43605
      Steven Wu authored
      Summary:
      Preserve the old ABI for __cxa_exception and __cxa_dependent_exception
      on 64 bit platforms or ARM_EHABI platforms.
      
      After r276215, libunwind in llvm-project labels _Unwind_Exception to be
      double word aligned. That change implictly adds a padding before
      unwindHeader field in __cxa_exception and __cxa_dependent_exception.
      Preserve the same negative offsets in those struct by moving the padding
      to the beginning of the field.
      
      The assumption here is that if the ABI is not aware of the padding before
      unwindHeader and put the referenceCount/primaryException in there, no padding
      should exist before unwindHeader.
      
      Reviewers: EricWF, mclow.lists, ldionne, jroelofs, dexonsmith, rjmccall, compnerd, phosek, ahatanak
      
      Reviewed By: rjmccall
      
      Subscribers: hans, smeenai, kristof.beyls, christof, jkorous, ributzka, libcxx-commits
      
      Tags: #libc
      
      Differential Revision: https://reviews.llvm.org/D72543
      f2a43605
    • Whitney Tsang's avatar
      [LoopFusion] Move instructions from FC1.GuardBlock to FC0.GuardBlock and · e44f4a8a
      Whitney Tsang authored
      from FC0.ExitBlock to FC1.ExitBlock when proven safe.
      
      Summary:
      Currently LoopFusion give up when the second loop nest guard
      block or the first loop nest exit block is not empty. For example:
      
      if (0 < N) {
        for (int i = 0; i < N; ++i) {}
        x+=1;
      }
      y+=1;
      if (0 < N) {
        for (int i = 0; i < N; ++i) {}
      }
      The above example should be safe to fuse.
      This PR moves instructions in FC1 guard block (e.g. y+=1;) to
      FC0 guard block, or instructions in FC0 exit block (e.g. x+=1;) to
      FC1 exit block, which then LoopFusion is able to fuse them.
      Reviewer: kbarton, jdoerfert, Meinersbur, dmgreen, fhahn, hfinkel,
      bmahjour, etiotto
      Reviewed By: jdoerfert
      Subscribers: hiraditya, llvm-commits
      Tag: LLVM
      Differential Revision: https://reviews.llvm.org/D73641
      e44f4a8a
    • Nikita Popov's avatar
      [AArch64][ARM] Always expand ordered vector reductions (PR44600) · 70d345e6
      Nikita Popov authored
      fadd/fmul reductions without reassoc are lowered to
      VECREDUCE_STRICT_FADD/FMUL nodes, which don't have legalization
      support. Until that is in place, expand these intrinsics on
      ARM and AArch64. Other targets always expand the vector reduction
      intrinsics.
      
      Additionally expand fmax/fmin reductions without nonan flag on
      AArch64, as the backend asserts that the flag is present when
      lowering VECREDUCE_FMIN/FMAX.
      
      This fixes https://bugs.llvm.org/show_bug.cgi?id=44600.
      
      Differential Revision: https://reviews.llvm.org/D73135
      70d345e6
    • Nathan James's avatar
      3ae11b42
    • Siva Chandra Reddy's avatar
      [libc] Add a missing `this->` in __llvm_libc::cpp:MutableArrayRef::end. · 3302586f
      Siva Chandra Reddy authored
      I had removed it to verify a review comment, but forgot to put it back.
      3302586f
    • Roman Lebedev's avatar
    • Alexey Bataev's avatar
      [OPENMP50]Handle lastprivate conditionals passed as shared in inner · 4697874c
      Alexey Bataev authored
      regions.
      
      If the lastprivate conditional is passed as shared in inner region, we
      shall check if it was ever changed and use this updated value after exit
      from the inner region as an update value.
      4697874c
    • Yonghong Song's avatar
      [BPF] fix a bug in BPFMISimplifyPatchable pass with -O0 · 795bbb36
      Yonghong Song authored
      The recommended optimization level for BPF programs
      is O2 since (1). BPF is running inside the kernel and
      linux kernel won't work at -O0 level, and (2). Verifier
      is not able to handle O0 code properly, e.g., potential
      large stack size and a lot of spills.
      
      But we should keep -O0 at least compiling.
      This patch fixed a bug in BPFMISimplifyPatchable phase
      where with -O0, a segmentation fault will happen for a
      simple program like:
        int test(int a, int b) { return a + b; }
      
      A test case is added to capture such a case.
      
      Differential Revision: https://reviews.llvm.org/D73681
      795bbb36
    • Sergey Dmitriev's avatar
      [Clang][Bundler] Reduce fat object size · c53cb2bd
      Sergey Dmitriev authored
      Summary:
      Fat object size has significantly increased after D65819 which changed bundler tool to add host object as a normal bundle to the fat output which almost doubled its size. That patch was fixing the following issues
      
      1. Problems associated with the partial linking - global constructors were not called for partially linking objects which clearly resulted in incorrect behavior.
      2. Eliminating "junk" target object sections from the linked binary on the host side.
      
      The first problem is no longer relevant because we do not use partial linking for creating fat objects anymore. Target objects sections are now inserted into the resulting fat object with a help of llvm-objcopy tool.
      
      The second issue, "junk" sections in the linked host binary, has been fixed in D73408 by adding "exclude" flag to the fat object's sections which contain target objects. This flag tells linker to drop section from the inputs when linking executable or shared library, therefore these sections will not be propagated in the linked binary.
      
      Since both problems have been solved, we can revert D65819 changes to reduce fat object size and this patch essentially is doing that.
      
      Reviewers: ABataev, alexshap, jdoerfert
      
      Reviewed By: ABataev
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D73642
      c53cb2bd
    • Lubomir Litchev's avatar
      [MLIR] Add the sqrt operation to mlir. · fcabccd3
      Lubomir Litchev authored
      Summary: Add and pipe through the sqrt operation for Standard and LLVM dialects.
      
      Reviewers: nicolasvasilache, ftynse
      
      Reviewed By: ftynse
      
      Subscribers: frej, ftynse, merge_guards_bot, flaub, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D73571
      fcabccd3
    • Charusso's avatar
      [analyzer] CheckerContext: Make the Preprocessor available · 38ab3b87
      Charusso authored
      Summary:
      This patch hooks the `Preprocessor` trough `BugReporter` to the
      `CheckerContext` so the checkers could look for macro definitions.
      
      Reviewed By: NoQ
      
      Differential Revision: https://reviews.llvm.org/D69731
      38ab3b87
    • Alex Zinenko's avatar
      [mlir] EnumsGen: dissociate string form of integer enum from C++ symbol name · fdc496a3
      Alex Zinenko authored
      Summary:
      In some cases, one may want to use different names for C++ symbol of an
      enumerand from its string representation. In particular, in the LLVM dialect
      for, e.g., Linkage, we would like to preserve the same enumerand names as LLVM
      API and the same textual IR form as LLVM IR, yet the two are different
      (CamelCase vs snake_case with additional limitations on not being a C++
      keyword).
      
      Modify EnumAttrCaseInfo in OpBase.td to include both the integer value and its
      string representation. By default, this representation is the same as C++
      symbol name. Introduce new IntStrAttrCaseBase that allows one to use different
      names. Exercise it for LLVM Dialect Linkage attribute. Other attributes will
      follow as separate changes.
      
      Differential Revision: https://reviews.llvm.org/D73362
      fdc496a3
  2. Jan 30, 2020