Skip to content
  1. Feb 01, 2019
    • Roman Lebedev's avatar
      [X86][BdVer2] Transfer delays from the integer to the floating point unit. · 7857215f
      Roman Lebedev authored
      Summary:
      I'm unable to find this number in the "AMD SOG for family 15h".
      llvm-exegesis measures the latencies of these instructions as `2`,
      which matches the latencies specified in "AMD SOG for family 15h".
      
      However if we look at Agner, Microarchitecture, "AMD Bulldozer, Piledriver,
      Steamroller and Excavator pipeline", "Data delay between different execution
      domains", the int->ivec transfer is listed as `8`..`10`cy of additional latency.
      
      Also, Agner's "Instruction tables", for Piledriver, lists their latencies as `12`,
      which is consistent with `2cy` from exegesis / AMD SOG + `10cy` transfer delay.
      
      Additional data point comes from the fact that Agner's "Instruction tables",
      for Jaguar, lists their latencies as `8`; and "AMD SOG for family 16h" does
      state the `+6cy` int->ivec delay, which is consistent with instr latency of `1` or `2`.
      
      Reviewers: andreadb, RKSimon, craig.topper
      
      Reviewed By: andreadb
      
      Subscribers: gbedwell, courbet, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D57300
      
      llvm-svn: 352861
      7857215f
    • Aleksandr Urakov's avatar
      [PDB] Fix build after r352845 · 2c15fc56
      Aleksandr Urakov authored
      llvm-svn: 352858
      2c15fc56
    • Sam McCall's avatar
      [clangd] Unbreak fuzzer target · 554644e5
      Sam McCall authored
      llvm-svn: 352857
      554644e5
    • Yevgeny Rouban's avatar
      Provide reason messages for unviable inlining · 15b17d0a
      Yevgeny Rouban authored
      InlineCost's isInlineViable() is changed to return InlineResult
      instead of bool. This provides messages for failure reasons and
      allows to get more specific messages for cases where callsites
      are not viable for inlining.
      
      Reviewed By: xbolva00, anemet
      
      Differential Revision: https://reviews.llvm.org/D57089
      
      llvm-svn: 352849
      15b17d0a
    • James Henderson's avatar
      Revert r352750. · 212833ce
      James Henderson authored
      This was causing a build bot failure:
      http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/15346/
      
      llvm-svn: 352848
      212833ce
    • James Henderson's avatar
      [llvm-symbolizer][test] Rename and tweak tests using llvm-symbolizer · 563a29d4
      James Henderson authored
      Prior to this change, there are a few tests called llvm-symbolizer* in
      the DebugInfo test area. These really were testing either the DebugInfo
      or Symbolizer library, rather than the llvm-symbolizer tool itself, so
      this patch renames them to be clearer that they aren't explicitly tests
      for llvm-symbolizer (such tests belong in test/tools/llvm-symbolizer).
      
      This patch also reinstates the copying of a DWO file, removed previously
      in r352752. The test needs this so that it could possibly fail.
      
      Finally, some of the tests have been simplified slightly by removing
      unnecessary switches and/or unused check-prefixes.
      
      Reviewed by: dblaikie
      
      Differential Revision: https://reviews.llvm.org/D57518
      
      llvm-svn: 352847
      563a29d4
    • James Henderson's avatar
      [doc]Update String Error documentation in Programmer Manual · fb3ca132
      James Henderson authored
      A while back, createStringError was added to provide easier construction
      of StringError instances, especially with formatting options. Prior to
      this patch, that the documentation only mentions the standard method of
      using it. Since createStringError is slightly shorter to type, and also
      provides the formatting options, this patch updates the Programmer's
      Manual to use the new function in its examples, and to mention the
      printf formatting options. It also fixes a small typo in one of the
      examples and removes the unnecessary make_error_code call.
      
      llvm-svn: 352846
      fb3ca132
    • Aleksandr Urakov's avatar
      [PDB] Fix location retrieval for function local variables and arguments that are · 758657e5
      Aleksandr Urakov authored
      stored relative to VFRAME
      
      Summary:
      This patch makes LLDB able to retrieve proper values for function arguments and
      local variables stored in PDB relative to VFRAME register.
      
      Patch contains retrieval of corresponding FPO table entries from PDB and a
      generic translator from FPO programs to DWARF expressions to get correct VFRAME
      value.
      
      Patch also improves variables-locations.test and makes this test passable on
      x86.
      
      Patch By: leonid.mashinsky
      
      Reviewers: zturner, asmith, stella.stamenova, aleksandr.urakov
      
      Reviewed By: zturner
      
      Subscribers: arphaman, labath, mgorny, aprantl, JDevlieghere, lldb-commits
      
      Tags: #lldb
      
      Differential Revision: https://reviews.llvm.org/D55122
      
      llvm-svn: 352845
      758657e5
    • Oliver Stannard's avatar
      [CodeGen] Don't scavenge non-saved regs in exception throwing functions · bac11518
      Oliver Stannard authored
      Previously, LiveRegUnits was assuming that if a block has no successors
      and does not return, then no registers are live at the end of it
      (because the end of the block is unreachable). This was causing the
      register scavenger to use callee-saved registers to materialise stack
      frame addresses without saving them in the prologue. This would normally
      be fine, because the end of the block is unreachable, but this is not
      legal if the block ends by throwing a C++ exception. If this happens,
      the scratch register will be modified, but its previous value won't be
      preserved, so it doesn't get restored by the exception unwinder.
      
      Differential revision: https://reviews.llvm.org/D57381
      
      llvm-svn: 352844
      bac11518
    • Roman Lebedev's avatar
      [clangd] clangDaemonTweaks - fix -DBUILD_SHARED_LIBS=ON build · 3440c339
      Roman Lebedev authored
      Followup for rL352841.
      
      llvm-svn: 352843
      3440c339
    • Sergi Mateo Bellido's avatar
      Test commit: fix typo · f3e00fe3
      Sergi Mateo Bellido authored
      llvm-svn: 352842
      f3e00fe3
    • Roman Lebedev's avatar
      [clangd] Fix -DBUILD_SHARED_LIBS=ON build - SwapIfBranches needs clangAST. · 11f79692
      Roman Lebedev authored
      Else, fails with:
      
      [1/2] Linking CXX executable bin/clangd
      FAILED: bin/clangd
      : && /usr/bin/g++  -pipe -O2 -g0 -UNDEBUG -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -pipe -O2 -g0 -UNDEBUG  -fuse-ld=lld -Wl,--color-diagnostics -Wl,-allow-shlib-undefined     -Wl,-O3 -Wl,--gc-sections tools/clang/tools/extra/clangd/refactor/tweaks/CMakeFiles/obj.clangDaemonTweaks.dir/SwapIfBranches.cpp.o tools/clang/tools/extra/clangd/tool/CMakeFiles/clangd.dir/ClangdMain.cpp.o  -o bin/clangd  -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMSupport.so.9svn -lpthread lib/libclangBasic.so.9svn lib/libclangTidy.so.9svn lib/libclangDaemon.so.9svn lib/libclangFormat.so.9svn lib/libclangFrontend.so.9svn lib/libclangSema.so.9svn lib/libclangTooling.so.9svn lib/libclangToolingCore.so.9svn && :
      ld.lld: error: undefined symbol: clang::FunctionDecl::getBody(clang::FunctionDecl const*&) const
      >>> referenced by SwapIfBranches.cpp
      >>>               tools/clang/tools/extra/clangd/refactor/tweaks/CMakeFiles/obj.clangDaemonTweaks.dir/SwapIfBranches.cpp.o:(clang::FunctionDecl::getBody() const)
      
      and so on.
      
      llvm-svn: 352841
      11f79692
    • George Rimar's avatar
      [obj2yaml] - Merge dumpRelSection and dumpRelaSection. NFC. · afe8a040
      George Rimar authored
      These methods are very similar, patch merge them into one.
      
      Differential revision: https://reviews.llvm.org/D57461
      
      llvm-svn: 352840
      afe8a040
    • Yevgeny Rouban's avatar
      [SLPVectorizer] Get rid of IndexQueue array from vectorizeStores. NFCI. · 4cdd7839
      Yevgeny Rouban authored
      Indices are checked as they are generated. No need to fill the whole array of indices.
      
      Differential Revision: https://reviews.llvm.org/D57144
      
      llvm-svn: 352839
      4cdd7839
    • Serge Guelton's avatar
      Fix isInSystemMacro to handle pasted macros · 5ef88bdb
      Serge Guelton authored
      Token pasted by the preprocessor (through ##) have a Spelling pointing to scratch buffer.
      As a result they are not recognized at system macro, even though the pasting happened in
      a system macro. Fix that by looking into the parent macro if the original lookup finds a
      scratch buffer.
      
      Differential Revision: https://reviews.llvm.org/D55782
      
      This effectively fixes https://bugs.llvm.org/show_bug.cgi?id=35268,
      
      llvm-svn: 352838
      5ef88bdb
    • Sam McCall's avatar
      [clangd] Fix crash in applyTweak, remove TweakID alias. · 8a32f3b7
      Sam McCall authored
      Strings are complicated, giving them opaque names makes us forget
      they're complicated.
      
      llvm-svn: 352837
      8a32f3b7
    • JF Bastien's avatar
      Revert "Bump minimum toolchain version" · c6931ddc
      JF Bastien authored
      Looks like we still have a few bots that are sad. Let try to get them fixed!
      
      llvm-svn: 352835
      c6931ddc
    • JF Bastien's avatar
      Bump minimum toolchain version · 77074f9f
      JF Bastien authored
      Summary:
      The RFC on moving past C++11 got good traction:
        http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
      
      This patch therefore bumps the toolchain versions according to our policy:
        llvm.org/docs/DeveloperPolicy.html#toolchain
      
      Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
      
      Differential Revision: https://reviews.llvm.org/D57264
      
      llvm-svn: 352834
      77074f9f
    • Alex Bradbury's avatar
      [RISCV] Implement RV64D codegen · 7539fa2c
      Alex Bradbury authored
      This patch:
      * Adds necessary RV64D codegen patterns
      * Modifies CC_RISCV so it will properly handle f64 types (with soft float ABI)
      
      Note that in general there is no reason to try to select fcvt.w[u].d rather than fcvt.l[u].d for i32 conversions because fptosi/fptoui produce poison if the input won't fit into the target type.
      
      Differential Revision: https://reviews.llvm.org/D53237
      
      llvm-svn: 352833
      7539fa2c
    • Alex Bradbury's avatar
      [SelectionDAG] Support promotion of the FPOWI integer operand · 32b77383
      Alex Bradbury authored
      For targets where i32 is not a legal type (e.g. 64-bit RISC-V),
      LegalizeIntegerTypes must promote the integer operand of ISD::FPOWI. As this
      is a signed value, this should be sign-extended.
      
      This patch enables all tests in test/CodeGen/RISCVfloat-intrinsics.ll for
      RV64, as prior to this patch that file couldn't be compiled for RV64 due to an
      assertion when performing codegen for fpowi.
      
      Differential Revision: https://reviews.llvm.org/D54574
      
      llvm-svn: 352832
      32b77383
    • Brian Gesiak's avatar
      [SemaCXX] Param diagnostic matches overload logic · 3aba9fd6
      Brian Gesiak authored
      Summary:
      Given the following test program:
      
      ```
      class C {
      public:
        int A(int a, int& b);
      };
      
      int C::A(const int a, int b) {
        return a * b;
      }
      ```
      
      Clang would produce an error message that correctly diagnosed the
      redeclaration of `C::A` to not match the original declaration (the
      parameters to the two declarations do not match -- the original takes an
      `int &` as its 2nd parameter, but the redeclaration takes an `int`). However,
      it also produced a note diagnostic that inaccurately pointed to the
      first parameter, claiming that `const int` in the redeclaration did not
      match the unqualified `int` in the original. The diagnostic is
      misleading because it has nothing to do with why the program does not
      compile.
      
      The logic for checking for a function overload, in
      `Sema::FunctionParamTypesAreEqual`, discards cv-qualifiers before
      checking whether the types are equal. Do the same when producing the
      overload diagnostic.
      
      Reviewers: rsmith
      
      Reviewed By: rsmith
      
      Subscribers: cpplearner, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D57032
      
      llvm-svn: 352831
      3aba9fd6
    • James Y Knight's avatar
      Fix compilation of examples after 13680223 / r352827 · 473e3420
      James Y Knight authored
      Who knew...they're not built by default or as part of the tests.
      
      llvm-svn: 352830
      473e3420
    • Julian Lettner's avatar
      [Sanitizers] UBSan unreachable incompatible with ASan in the presence of `noreturn` calls · b6c06dc2
      Julian Lettner authored
      Summary:
      UBSan wants to detect when unreachable code is actually reached, so it
      adds instrumentation before every unreachable instruction. However, the
      optimizer will remove code after calls to functions marked with
      noreturn. To avoid this UBSan removes noreturn from both the call
      instruction as well as from the function itself. Unfortunately, ASan
      relies on this annotation to unpoison the stack by inserting calls to
      _asan_handle_no_return before noreturn functions. This is important for
      functions that do not return but access the the stack memory, e.g.,
      unwinder functions *like* longjmp (longjmp itself is actually
      "double-proofed" via its interceptor). The result is that when ASan and
      UBSan are combined, the noreturn attributes are missing and ASan cannot
      unpoison the stack, so it has false positives when stack unwinding is
      used.
      
      Changes:
      Clang-CodeGen now directly insert calls to `__asan_handle_no_return`
      when a call to a noreturn function is encountered and both
      UBsan-unreachable and ASan are enabled. This allows UBSan to continue
      removing the noreturn attribute from functions without any changes to
      the ASan pass.
      
      Previously generated code:
      ```
        call void @longjmp
        call void @__asan_handle_no_return
        call void @__ubsan_handle_builtin_unreachable
      ```
      
      Generated code (for now):
      ```
        call void @__asan_handle_no_return
        call void @longjmp
        call void @__asan_handle_no_return
        call void @__ubsan_handle_builtin_unreachable
      ```
      
      rdar://problem/40723397
      
      Reviewers: delcypher, eugenis, vsk
      
      Differential Revision: https://reviews.llvm.org/D57278
      
      > llvm-svn: 352690
      
      llvm-svn: 352829
      b6c06dc2
    • Sam Clegg's avatar
      [WebAssembly] Support imports from custom module names · 7cc07531
      Sam Clegg authored
      Fixes: https://bugs.llvm.org/show_bug.cgi?id=37168
      
      This is only a first pass at supporting these custom import
      modules.  In the long run we most likely want to treat these
      kinds of symbols very differently.  For example, it should not
      be possible to resolve such as symbol at static link type.
      
      Differential Revision: https://reviews.llvm.org/D45796
      
      llvm-svn: 352828
      7cc07531
    • James Y Knight's avatar
      [opaque pointer types] Add a FunctionCallee wrapper type, and use it. · 13680223
      James Y Knight authored
      Recommit r352791 after tweaking DerivedTypes.h slightly, so that gcc
      doesn't choke on it, hopefully.
      
      Original Message:
      The FunctionCallee type is effectively a {FunctionType*,Value*} pair,
      and is a useful convenience to enable code to continue passing the
      result of getOrInsertFunction() through to EmitCall, even once pointer
      types lose their pointee-type.
      
      Then:
      - update the CallInst/InvokeInst instruction creation functions to
        take a Callee,
      - modify getOrInsertFunction to return FunctionCallee, and
      - update all callers appropriately.
      
      One area of particular note is the change to the sanitizer
      code. Previously, they had been casting the result of
      `getOrInsertFunction` to a `Function*` via
      `checkSanitizerInterfaceFunction`, and storing that. That would report
      an error if someone had already inserted a function declaraction with
      a mismatching signature.
      
      However, in general, LLVM allows for such mismatches, as
      `getOrInsertFunction` will automatically insert a bitcast if
      needed. As part of this cleanup, cause the sanitizer code to do the
      same. (It will call its functions using the expected signature,
      however they may have been declared.)
      
      Finally, in a small number of locations, callers of
      `getOrInsertFunction` actually were expecting/requiring that a brand
      new function was being created. In such cases, I've switched them to
      Function::Create instead.
      
      Differential Revision: https://reviews.llvm.org/D57315
      
      llvm-svn: 352827
      13680223
    • Fangrui Song's avatar
      [ELF] Support --{,no-}allow-shlib-undefined · b4744d30
      Fangrui Song authored
      Summary:
      In ld.bfd/gold, --no-allow-shlib-undefined is the default when linking
      an executable. This patch implements a check to error on undefined
      symbols in a shared object, if all of its DT_NEEDED entries are seen.
      
      Our approach resembles the one used in gold, achieves a good balance to
      be useful but not too smart (ld.bfd traces all DSOs and emulates the
      behavior of a dynamic linker to catch more cases).
      
      The error is issued based on the symbol table, different from undefined
      reference errors issued for relocations. It is most effective when there
      are DSOs that were not linked with -z defs (e.g. when static sanitizers
      runtime is used).
      
      gold has a comment that some system libraries on GNU/Linux may have
      spurious undefined references and thus system libraries should be
      excluded (https://sourceware.org/bugzilla/show_bug.cgi?id=6811). The
      story may have changed now but we make --allow-shlib-undefined the
      default for now. Its interaction with -shared can be discussed in the
      future.
      
      Reviewers: ruiu, grimar, pcc, espindola
      
      Reviewed By: ruiu
      
      Subscribers: joerg, emaste, arichardson, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D57385
      
      llvm-svn: 352826
      b4744d30
    • Sam Clegg's avatar
      Fix names of functions in TargetOptionsCommandFlags.h. NFC. · dfbd1903
      Sam Clegg authored
      Differential Revision: https://reviews.llvm.org/D57555
      
      llvm-svn: 352825
      dfbd1903
    • George Karpenkov's avatar
      [analyzer] [RetainCountChecker] Fix object type for CF/Obj-C bridged casts · b6c6ab31
      George Karpenkov authored
      Having an incorrect type for a cast causes the checker to incorrectly
      dismiss the operation under ARC, leading to a false positive
      use-after-release on the test.
      
      rdar://47709885
      
      Differential Revision: https://reviews.llvm.org/D57557
      
      llvm-svn: 352824
      b6c6ab31
    • Peter Collingbourne's avatar
      Mark __rela_iplt_{start,end} as weak. · 6fa43f8b
      Peter Collingbourne authored
      Should fix non-lld links.
      
      llvm-svn: 352823
      6fa43f8b
    • Akira Hatanaka's avatar
      Revert "[Sema] Make canPassInRegisters return true if the CXXRecordDecl passed" · 9e671831
      Akira Hatanaka authored
      This reverts commit r350920 as it is not clear whether we should force a
      class to be returned in registers when copy and move constructors are
      both deleted.
      
      For more background, see the following discussion:
      http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20190128/259907.html
      
      llvm-svn: 352822
      9e671831
    • Sanjay Patel's avatar
      [x86] adjust test to show both add/inc options; NFC · ef9a3881
      Sanjay Patel authored
      If we're optimizing for size, that overrides the subtarget
      feature, so we would always produce 'inc' if we matched
      this pattern.
      
      llvm-svn: 352821
      ef9a3881
    • Sanjay Patel's avatar
      [x86] add test for missed opportunity to use 'inc'; NFC · da45d68a
      Sanjay Patel authored
      Another pattern exposed in D57516.
      
      llvm-svn: 352820
      da45d68a
    • Kostya Serebryany's avatar
      ae667c49
    • Kostya Serebryany's avatar
      [sanitizer-coverage] prune trace-cmp instrumentation for CMP isntructions that... · a78a44d4
      Kostya Serebryany authored
      [sanitizer-coverage] prune trace-cmp instrumentation for CMP isntructions that feed into the backedge branch. Instrumenting these CMP instructions is almost always useless (and harmful) for fuzzing
      
      llvm-svn: 352818
      a78a44d4
    • Matt Arsenault's avatar
      GlobalISel: Fix MMO creation with non-power-of-2 mem size · 50d6579b
      Matt Arsenault authored
      It should probably just be mandatory for getTgtMemIntrinsic to return
      the alignment.
      
      llvm-svn: 352817
      50d6579b
    • Peter Collingbourne's avatar
      hwasan: Add __hwasan_init_static() function. · 886b7cc1
      Peter Collingbourne authored
      This function initializes enough of the runtime to be able to run
      instrumented code in a statically linked executable. It replaces
      __hwasan_shadow_init() which wasn't doing enough initialization for
      instrumented code that uses either TLS or IFUNC to work.
      
      Differential Revision: https://reviews.llvm.org/D57490
      
      llvm-svn: 352816
      886b7cc1
    • Jonathan Metzman's avatar
      [libFuzzer][Windows] Temporarily disable value-profile-cmp2.test on Win · 6f94a033
      Jonathan Metzman authored
      Summary:
      Temporarily disable value-profile-cmp2.test on Win.
      https://reviews.llvm.org/D57465 causes the test to fail on Win.
      However, it seems that the behavior of libFuzzer on Win was broken
      before that patch. It crashes in the exit handler when not used with
      ASAN. Prior to the patch, the crash handler would run, tricking the
      test into thinking libFuzzer on Win had exited properly.
      
      Reviewers: morehouse, vitalybuka
      
      Reviewed By: morehouse
      
      Subscribers: yln
      
      Differential Revision: https://reviews.llvm.org/D57551
      
      llvm-svn: 352815
      6f94a033
    • JF Bastien's avatar
      Revert "Bump minimum toolchain version" · e2dedd55
      JF Bastien authored
      A handful of bots are still breaking, either because I missed them in my audit,
      they were offline, or something else. I'm contacting their authors, but I'll
      revert for now and re-commit later.
      
      llvm-svn: 352814
      e2dedd55
    • Thomas Lively's avatar
      [WebAssembly] Fix a regression selecting negative build_vector lanes · 9a484388
      Thomas Lively authored
      Summary:
      The custom lowering introduced in rL352592 creates build_vector nodes
      with negative i32 operands, but these operands did not meet the value
      range constraints necessary to match build_vector nodes. This CL fixes
      the issue by removing the unnecessary constraints.
      
      Reviewers: aheejin
      
      Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish
      
      Differential Revision: https://reviews.llvm.org/D57481
      
      llvm-svn: 352813
      9a484388
    • JF Bastien's avatar
      DeveloperPolicy: update toolchain with sample RFC / patch · d5dbe831
      JF Bastien authored
      As was suggested when the policy originally went in.
      
      llvm-svn: 352812
      d5dbe831
Loading