1. Jul 10, 2020
    • Louis Dionne's avatar
      c1a83c30
    • Louis Dionne's avatar
      [libc++] Fix test failure in C++03 mode · 6a8ed4a8
      Louis Dionne authored
      6a8ed4a8
    • Hiroshi Yamauchi's avatar
    • Sergej Jaskiewicz's avatar
      [compiler-rt] [test] Allow expanding lit substitutions recursively · 8372d505
      Sergej Jaskiewicz authored
      Summary:
      This allows using lit substitutions in the `COMPILER_RT_EMULATOR` variable.
      
      (For reference, the ability to expand substitutions recursively has been introduced in https://reviews.llvm.org/D76178.)
      
      Reviewers: phosek, compnerd
      
      Reviewed By: compnerd
      
      Subscribers: dberris, #sanitizers
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D83489
      8372d505
    • Louis Dionne's avatar
      [runtimes] Allow passing Lit parameters through CMake · 6f69318c
      Louis Dionne authored
      This allows passing parameters to the test suites without using
      LLVM_LIT_ARGS. The problem is that we sometimes want to set some
      Lit arguments on the CMake command line, but the Lit parameters in
      a CMake cache file. If the only knob to do that is LLVM_LIT_ARGS,
      the command-line entry overrides the cache one, and the parameters
      set by the cache are ignored.
      
      This fixes a current issue with the build bots that they completely
      ignore the 'std' param set by Lit, because other Lit arguments are
      provided via LLVM_LIT_ARGS on the CMake command-line.
      6f69318c
    • Sergej Jaskiewicz's avatar
      [compiler-rt] [test] Use the parent process env as base env in tests · 5ab446cf
      Sergej Jaskiewicz authored
      Summary:
      Right now the lit config builds up an environment that the tests will be run in. However, it does it from scratch instead of adding new variables to the parent process environment. This may (and does) result in strange behavior when running tests with an executor (i. e. with the `COMPILER_RT_EMULATOR` CMake variable set to something), since the executor may need some of the parent process's environment variables.
      
      Here this is fixed.
      
      Reviewers: compnerd, phosek
      
      Reviewed By: compnerd
      
      Subscribers: dberris, #sanitizers
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D83486
      5ab446cf
    • Fred Riss's avatar
      [lldb] Use enum constant instead of raw value · e529d774
      Fred Riss authored
      e529d774
    • Sergej Jaskiewicz's avatar
      [compiler-rt] Better Windows support for running tests in external shell · a89d54fd
      Sergej Jaskiewicz authored
      Summary:
      These changes are necessary to support remote running compiler-rt tests
      that were compiled on Windows.
      
      Most of the code here has been copy-pasted from other lit configs.
      
      Why do we remove the conversions to ASCII in the crt config?
      
      We set the `universal_newlines` argument to `True` in `Popen` instead.
      This is supported in both Python 2.7 and 3, is easier
      (no need to do the `str(dir.decode('ascii'))` dance) and less
      error prone.
      
      Also, this is necessary because if the config is executed on Windows,
      and `execute_external` is `True`, we take the branch
      `if sys.platform in ['win32'] and execute_external`,
      and if we use Python 3, then the `dir` variable is a byte-like object,
      not str, but the ``replace method on byte-like objects requires its
      arguments to also be byte-like objects, which is incompatible with
      Python 2 etc etc.
      
      It is a lot simpler to just work with strings in the first place, which
      is achieved by setting `universal_newlines` to `True`. As far as
      I understand, this way wasn't taken because of the need to support
      Python <2.7, but this is not the case now.
      
      Reviewers: compnerd, phosek, weimingz
      
      Reviewed By: compnerd
      
      Subscribers: dberris, #sanitizers
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D83485
      a89d54fd
    • Nikita Popov's avatar
      [AliasSetTracker] More precise AAInfo intersection check · afc1a709
      Nikita Popov authored
      The code currently checks whether the intersection has one of TBAA,
      Scope or NoAlias unset -- however, those might have already been
      unset in the first place, in which case we will unnecessarily
      report a change. Instead, compare the intersection result to the
      original AAInfo.
      
      This makes for a 0.5% geomean compile-time saving on CTMark.
      
      Differential Revision: https://reviews.llvm.org/D83430
      afc1a709
    • Stefan Pintilie's avatar
      [PowerPC] Split s34imm into two types · bd206803
      Stefan Pintilie authored
      Currently the instruction paddi always takes s34imm as the type for the
      34 bit immediate. However, the PC Relative form of the instruction should
      not produce the same fixup as the non PC Relative form.
      This patch splits the s34imm type into s34imm and s34imm_pcrel so that two
      different fixups can be emitted.
      
      Reviewed By: kamaub, nemanjai
      
      Differential Revision: https://reviews.llvm.org/D83255
      bd206803
    • Florian Hahn's avatar
      [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). · 9477d39e
      Florian Hahn authored
      Some of the tests in the llvm/test/Transforms/IPConstantProp directory
      actually only use -ipsccp. Those tests belong to the other (IP)SCCP
      tests in llvm/test/Transforms/SCCP/ and this commits moves them there to
      avoid confusion with IPConstantProp.
      9477d39e
  2. Jul 09, 2020
    • Hans Wennborg's avatar
      Revert 51b0da73 "Recommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T... · 9ecda9aa
      Hans Wennborg authored
      Revert 51b0da73 "Recommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T bits in X86TargetParser.def.""
      
      It gets miscompiled with GCC 5.3, causing Clang to crash with
      "error: unknown target CPU 'x86-64'"
      
      See the llvm-commits thread for reproduction steps.
      
      This reverts commit 51b0da73.
      9ecda9aa
    • Dmitri Gribenko's avatar
      Refactored NumericLiteralParser to not require a Preprocessor · 3cca818e
      Dmitri Gribenko authored
      Summary:
      We would like to use NumericLiteralParser in the implementation of the
      syntax tree builder, and plumbing a preprocessor there seems
      inconvenient and superfluous.
      
      Reviewers: eduucaldas
      
      Reviewed By: eduucaldas
      
      Subscribers: gribozavr2, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D83480
      3cca818e
    • Anatoly Trosinenko's avatar
      [MSP430] Align the _Complex ABI with current msp430-gcc · 67422e42
      Anatoly Trosinenko authored
      Assembler output is checked against msp430-gcc 9.2.0.50 from TI.
      
      Reviewed By: asl
      
      Differential Revision: https://reviews.llvm.org/D82646
      67422e42
    • George Mitenkov's avatar
      [MLIR][SPIRVToLLVM] Conversion of SPIR-V array, runtime array, and pointer types · 28cd3cbc
      George Mitenkov authored
      This patch adds type conversion for 4 SPIR-V types: array, runtime array, pointer
      and struct. This conversion is integrated using a separate function
      `populateSPIRVToLLVMTypeConversion()` that adds new type conversions. At the moment,
      this is a basic skeleton that allows to perfom conversion from SPIR-V array,
      runtime array and pointer types to LLVM typesystem. There is no support of array
      strides or storage classes. These will be supported on the case by case basis.
      
      Reviewed By: antiagainst
      
      Differential Revision: https://reviews.llvm.org/D83399
      28cd3cbc
    • Zhi Zhuang's avatar
      Fix warning caused by __builtin_expect_with_probability was not handled · 4d4d9037
      Zhi Zhuang authored
      in places such as constant folding
      
      Previously some places that should have handled
      __builtin_expect_with_probability is missing, so in some case it acts
      differently than __builtin_expect.
      For example it was not handled in constant folding, thus in the
      following program, the "if" condition should be constantly true and
      folded, but previously it was not handled and cause warning "control may
      reach end of non-void function" (while __builtin_expect does not):
      
      __attribute__((noreturn)) extern void bar();
      int foo(int x, int y) {
        if (y) {
          if (__builtin_expect_with_probability(1, 1, 1))
            bar();
        }
        else
          return 0;
      }
      
      Now it's fixed.
      
      Differential Revisions: https://reviews.llvm.org/D83362
      4d4d9037
    • Stefan Pintilie's avatar
      [PowerPC] Support PCRelative Callees for R_PPC64_REL24 Relocation · beb52b12
      Stefan Pintilie authored
      The R_PPC64_REL24 is used in function calls when the caller requires a
      valid TOC pointer. If the callee shares the same TOC or does not clobber
      the TOC pointer then a direct call can be made. If the callee does not
      share the TOC a thunk must be added to save the TOC pointer for the caller.
      
      Up until PC Relative was introduced all local calls on medium and large code
      models were assumed to share a TOC. This is no longer the case because
      if the caller requires a TOC and the callee is PC Relative then the callee
      can clobber the TOC even if it is in the same DSO.
      
      This patch is to add support for a TOC caller calling a PC Relative callee that
      clobbers the TOC.
      
      Reviewed By: sfertile, MaskRay
      
      Differential Revision: https://reviews.llvm.org/D82950
      beb52b12
    • George Mitenkov's avatar
      [MLIR][SPIRVToLLVM] SPIR-V types size in bytes function · 5d075bea
      George Mitenkov authored
      Added `getSizeInBytes()` function as a class member to several SPIR-V types:
      `ScalarType`, `ArrayType` and `VectorType`. This function aims at exposing
      the functionality of `getTypeNumBytes()` from `SPIRVLowering.cpp`. Support
      of more types will be added on demand.
      
      Reviewed By: antiagainst
      
      Differential Revision: https://reviews.llvm.org/D83285
      5d075bea
    • Eric Schweitz's avatar
      [flang] partially revert upstreamed code to support complex values in runtime... · 7cd1b0ff
      Eric Schweitz authored
      [flang] partially revert upstreamed code to support complex values in runtime support to avoid warnings.
      7cd1b0ff
    • Diogo Sampaio's avatar
      [NFC] Add SExt multiuses test · a0e981c1
      Diogo Sampaio authored
      a0e981c1
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Work around verifier error in test · fdde69aa
      Matt Arsenault authored
      The unfortunate split between finalizeLowering and the selector pass
      means there's a point where the verifier fails. The DAG selector pass
      skips the verifier, but this seems to not work when using the
      GlobalISel fallback.
      fdde69aa
    • Simon Pilgrim's avatar
    • David Green's avatar
      [BasicAA] Enable -basic-aa-recphi by default · af839a96
      David Green authored
      This option was added a while back, to help improve AA around pointer
      phi loops. It looks for phi(gep(phi, const), x) loops, checking if x can
      then prove more precise aliasing info.
      
      Differential Revision: https://reviews.llvm.org/D82998
      af839a96
    • Matt Arsenault's avatar
      OpaquePtr: Don't check pointee type for byval/preallocated · 6f5d9136
      Matt Arsenault authored
      Since none of these users really care about the actual type, hide the
      type under a new size-getting attribute to go along with
      hasPassPointeeByValueAttr. This will work better for the future byref
      attribute, which may end up only tracking the byte size and not the IR
      type.
      
      We currently have 3 parameter attributes that should carry the type
      (technically inalloca does not yet). The APIs are somewhat awkward
      since preallocated/inalloca piggyback on byval in some places, but in
      others are treated as distinct attributes. Since these are all
      mutually exclusive, we should probably just merge all the attribute
      infrastructure treating these as totally distinct attributes.
      6f5d9136
    • Gabor Marton's avatar
      [analyzer] Add CTUImportCppThreshold for C++ files · d12d0b73
      Gabor Marton authored
      Summary:
      The default CTUImportThreshold (8) seems to be too conservative with C projects.
      We increase this value to 24 and we introduce another threshold for C++ source
      files (defaulted to 8) because their AST is way more compilcated than C source
      files.
      
      Differential Revision: https://reviews.llvm.org/D83475
      d12d0b73
    • Luboš Luňák's avatar
      make -fmodules-codegen and -fmodules-debuginfo work also with PCHs · 31b05692
      Luboš Luňák authored
      Allow to build PCH's (with -building-pch-with-obj and the extra .o file)
      with -fmodules-codegen -fmodules-debuginfo to allow emitting shared code
      into the extra .o file, similarly to how it works with modules. A bit of
      a misnomer, but the underlying functionality is the same. This saves up
      to 20% of build time here. The patch is fairly simple, it basically just
      duplicates -fmodules checks to also alternatively check
      -building-pch-with-obj.
      
      This already got committed as cbc9d22e,
      but then got reverted in 7ea9a6e0
      because of PR44953, as discussed in D74846. This is a corrected version
      which does not include two places for the PCH case that aren't included
      in the modules -fmodules-codegen path either.
      
      Differential Revision: https://reviews.llvm.org/D69778
      31b05692
    • Simon Pilgrim's avatar
      [X86][AVX] Attempt to fold extract_subvector(shuffle(X)) -> extract_subvector(X) · f54402b6
      Simon Pilgrim authored
      If we're extracting a subvector from a shuffle that is shuffling entire subvectors we can peek through and extract the subvector from the shuffle source instead.
      
      This helps remove some cases where concat_vectors(extract_subvector(),extract_subvector()) legalizations has resulted in BLEND/VPERM2F128 shuffles of the subvectors.
      f54402b6
    • Simon Pilgrim's avatar
      BasicAAResult::constantOffsetHeuristic - pass APInt arg as const reference. NFCI. · 4597bfdd
      Simon Pilgrim authored
      Avoids unnecessary APInt copies and silences clang tidy warning.
      4597bfdd
    • Sam Elliott's avatar
      [RISCV] Avoid Splitting MBB in RISCVExpandPseudo · 97106f9d
      Sam Elliott authored
      Since the `RISCVExpandPseudo` pass has been split from
      `RISCVExpandAtomicPseudo` pass, it would be nice to run the former as
      early as possible (The latter has to be run as late as possible to
      ensure correctness). Running earlier means we can reschedule these pairs
      as we see fit.
      
      Running earlier in the machine pass pipeline is good, but would mean
      teaching many more passes about `hasLabelMustBeEmitted`. Splitting the
      basic blocks also pessimises possible optimisations because some
      optimisations are MBB-local, and others are disabled if the block has
      its address taken (which is notionally what `hasLabelMustBeEmitted`
      means).
      
      This patch uses a new approach of setting the pre-instruction symbol on
      the AUIPC instruction to a temporary symbol and referencing that. This
      avoids splitting the basic block, but allows us to reference exactly the
      instruction that we need to. Notionally, this approach seems more
      correct because we do actually want to address a specific instruction.
      
      This then allows the pass to be moved much earlier in the pass pipeline,
      before both scheduling and register allocation. However, to do so we
      must leave the MIR in SSA form (by not redefining registers), and so use
      a virtual register for the intermediate value. By using this virtual
      register, this pass now has to come before register allocation.
      
      Reviewed By: luismarques, asb
      
      Differential Revision: https://reviews.llvm.org/D82988
      97106f9d
    • dfukalov's avatar
      SpeculativeExecution: Fix for logic change introduced in D81730. · 167767a7
      dfukalov authored
      Summary:
      The test case started to hoist bitcasts to upper BB after D81730.
      Reverted unintentional logic change. Some instructions may have zero cost but
      will not be hoisted by different limitation so should be counted for threshold.
      
      Reviewers: aprantl, arsenm, nhaehnle
      
      Reviewed By: aprantl
      
      Subscribers: wdng, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D82761
      167767a7
    • Benjamin Kramer's avatar
      [DebugInfo] Fix pessimizing move. NFC. · d36b8414
      Benjamin Kramer authored
      DWARFDebugPubTable.cpp:80:31: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
      d36b8414
    • Igor Kudrin's avatar
      [DebugInfo] Add more checks to parsing .debug_pub* sections. · ca4d8da0
      Igor Kudrin authored
      The patch adds checking for various potential issues in parsing name
      lookup tables and reporting them as recoverable errors, similarly as we
      do for other tables.
      
      Differential Revision: https://reviews.llvm.org/D83050
      ca4d8da0
    • Igor Kudrin's avatar
      [DebugInfo] Do not hang when parsing a malformed .debug_pub* section. · 68f5a8b2
      Igor Kudrin authored
      The parsing method did not check reading errors and might easily fall
      into an infinite loop on an invalid input because of that.
      
      Differential Revision: https://reviews.llvm.org/D83049
      68f5a8b2
    • Florian Hahn's avatar
      [SCCP] Use conditional info with AND/OR branch conditions. · a86ce06f
      Florian Hahn authored
      Currently SCCP does not combine the information of conditions joined by
      AND in the true branch or OR in the false branch.
      
      For branches on AND, 2 copies will be inserted for the true branch, with
      one being the operand of the other as in the code below. We can combine
      the information using intersection. Note that for the OR case, the
      copies are inserted in the false branch, where using intersection is
      safe as well.
      
          define void @foo(i32 %a) {
          entry:
            %lt = icmp ult i32 %a, 100
            %gt = icmp ugt i32 %a, 20
            %and = and i1 %lt, %gt
          ; Has predicate info
          ; branch predicate info { TrueEdge: 1 Comparison:  %lt = icmp ult i32 %a, 100 Edge: [label %entry,label %true] }
            %a.0 = call i32 @llvm.ssa.copy.140247425954880(i32 %a)
          ; Has predicate info
          ; branch predicate info { TrueEdge: 1 Comparison:  %gt = icmp ugt i32 %a, 20 Edge: [label %entry,label %false] }
            %a.1 = call i32 @llvm.ssa.copy.140247425954880(i32 %a.0)
            br i1 %and, label %true, label %false
      
          true:                                             ; preds = %entry
            call void @use(i32 %a.1)
            %true.1 = icmp ne i32 %a.1, 20
            call void @use.i1(i1 %true.1)
            ret void
      
          false:                                            ; preds = %entry
            call void @use(i32 %a.1)
            ret void
          }
      
      Reviewers: efriedma, davide, mssimpso, nikic
      
      Reviewed By: nikic
      
      Differential Revision: https://reviews.llvm.org/D77808
      a86ce06f
    • Benjamin Kramer's avatar
      Make helpers static. NFC. · b4447054
      Benjamin Kramer authored
      b4447054
    • Kirill Bobyrev's avatar
      [clangd] Implement path and URI translation for remote index · 93bb9944
      Kirill Bobyrev authored
      Reviewers: sammccall
      
      Reviewed By: sammccall
      
      Subscribers: ormris, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D82938
      93bb9944
    • Xing GUO's avatar
      [DWARFYAML] Use override instead of virtual for better safety. · 47c4ce41
      Xing GUO authored
      Functions in DWARFYML::FixupVisitor are declared as
      virtual functions in its base class DWARFYAML::Visitor.
      We should use the mordern "override" keyword instead
      of "virtual" for virtual functions in subclasses for
      better safety.
      
      Besides, the visibility is changed from private to
      protected to make it consistent with
      DWARFYAML::FixupVisitor class and DWARFYAML::Visitor
      class.
      
      Reviewed By: jhenderson
      
      Differential Revision: https://reviews.llvm.org/D83452
      47c4ce41
    • Paul Walker's avatar
      [SVE] Scalarize fixed length masked loads and stores. · 6b403319
      Paul Walker authored
      When adding support for scalable vector masked loads and stores we
      accidently opened up likewise for fixed length vectors. This patch
      restricts support to scalable vectors only, thus ensuring fixed
      length vectors are treated the same regardless of SVE support.
      
      Differential Revision: https://reviews.llvm.org/D83341
      6b403319
    • Paul Walker's avatar
      [SVE] Disable some BUILD_VECTOR related code generator features. · 614fb096
      Paul Walker authored
      Fixed length vector code generation for SVE does not yet custom
      lower BUILD_VECTOR and instead relies on expansion.  At the same
      time custom lowering for VECTOR_SHUFFLE is also not available so
      this patch updates isShuffleMaskLegal to reject vector types that
      require SVE.
      
      Related to this it also prevents the merging of stores after
      legalisation because this only works when BUILD_VECTOR is either
      legal or can be elminated.  When this is not the case the code
      generator enters an infinite legalisation loop.
      
      Differential Revision: https://reviews.llvm.org/D83408
      614fb096
    • Georgii Rymar's avatar
      [llvm-readelf] - Stop using 'unwrapOrError()' in 'ELFDumper<ELFT>::getSymbolVersion'. · 54bdde1d
      Georgii Rymar authored
      This allows to propagate an error and report a warning properly.
      
      Differential revision: https://reviews.llvm.org/D83393
      54bdde1d