[all-commits] [llvm/llvm-project] f0659c: [X86] Support modifier @PLTOFF for R_X86_64_PLTOFF64

llvmbot via All-commits all-commits at lists.llvm.org
Tue Dec 1 12:09:22 PST 2020


  Branch: refs/heads/temp-test-main
  Home:   https://github.com/llvm/llvm-project
  Commit: f0659c0673417582038aa4a3c13edbfa0abb6b9a
      https://github.com/llvm/llvm-project/commit/f0659c0673417582038aa4a3c13edbfa0abb6b9a
  Author: Fangrui Song <i at maskray.me>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/include/llvm/MC/MCExpr.h
    M llvm/lib/MC/MCExpr.cpp
    M llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
    A llvm/test/MC/X86/pltoff.s

  Log Message:
  -----------
  [X86] Support modifier @PLTOFF for R_X86_64_PLTOFF64

`gcc -mcmodel=large` can emit @PLTOFF.

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D92294


  Commit: a5f95887d0f8d27f1c33f19944d0c1da66aef606
      https://github.com/llvm/llvm-project/commit/a5f95887d0f8d27f1c33f19944d0c1da66aef606
  Author: Fangrui Song <i at maskray.me>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    A lld/test/ELF/symver.s

  Log Message:
  -----------
  [ELF][test] Add some tests for versioned symbols in object files

Test the symbol resolution related to

* defined foo@@v1 and foo at v1 in object files/shared objects
* undefined foo at v1
* weak foo@@v1 and foo at v1
* visibility
* interaction with --wrap.

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D92258


  Commit: 941e9336d092f0ccef35e0f425d97f7def5ed1b0
      https://github.com/llvm/llvm-project/commit/941e9336d092f0ccef35e0f425d97f7def5ed1b0
  Author: Fangrui Song <i at maskray.me>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M lld/ELF/Driver.cpp
    M lld/ELF/Symbols.cpp
    M lld/ELF/Symbols.h
    M lld/test/ELF/symver.s

  Log Message:
  -----------
  [ELF] Make foo@@v1 resolve undefined foo at v1

The symbol resolution rules for versioned symbols are:

* foo@@v1 (default version) resolves both undefined foo and foo at v1
* foo at v1 (non-default version) resolves undefined foo at v1

Note, foo@@v1 must be defined (the assembler errors if attempting to
create an undefined foo@@v1).

For defined foo@@v1 in a shared object, we call `SymbolTable::addSymbol` twice,
one for foo and the other for foo at v1. We don't do the same for object files, so
foo@@v1 defined in one object file incorrectly does not resolve a foo at v1
reference in another object file.

This patch fixes the issue by reusing the --wrap code to redirect symbols in
object files. This has to be done after processing input files because
foo and foo at v1 are two separate symbols if we haven't seen foo@@v1.

Add a helper `Symbol::getVersionSuffix` to retrieve the optional trailing
`@...` or `@@...` from the possibly truncated symbol name.

Depends on D92258

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D92259


  Commit: 624af932a808b363a888139beca49f57313d9a3b
      https://github.com/llvm/llvm-project/commit/624af932a808b363a888139beca49f57313d9a3b
  Author: Nikita Popov <nikita.ppv at gmail.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
    M llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
    M llvm/test/Transforms/MemCpyOpt/callslot.ll
    M llvm/test/Transforms/MemCpyOpt/invariant.start.ll
    M llvm/test/Transforms/MemCpyOpt/memcpy-invoke-memcpy.ll
    M llvm/test/Transforms/MemCpyOpt/memcpy.ll
    M llvm/test/Transforms/MemCpyOpt/merge-into-memset.ll
    M llvm/test/Transforms/MemCpyOpt/mixed-sizes.ll
    M llvm/test/Transforms/MemCpyOpt/nonlocal-memcpy-memcpy.ll
    M llvm/test/Transforms/MemCpyOpt/stackrestore.ll

  Log Message:
  -----------
  [MemCpyOpt] Port to MemorySSA

This is a straightforward port of MemCpyOpt to MemorySSA following
the approach of D26739. MemDep queries are replaced with MSSA queries
without changing the overall structure of the pass. Some care has
to be taken to account for differences between these APIs
(MemDep also returns reads, MSSA doesn't).

Differential Revision: https://reviews.llvm.org/D89207


  Commit: 843c2b2303004c1a7e4fa8037905fbc70601b155
      https://github.com/llvm/llvm-project/commit/843c2b2303004c1a7e4fa8037905fbc70601b155
  Author: Fangrui Song <i at maskray.me>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M lld/ELF/Relocations.cpp
    M lld/ELF/Symbols.h
    M lld/test/ELF/lto/version-script2.ll
    M lld/test/ELF/symver.s

  Log Message:
  -----------
  [ELF] Error for undefined foo at v1

If an object file has an undefined foo at v1, we emit a dynamic symbol foo.
This is incorrect if at runtime a shared object provides the non-default version foo at v1
(the undefined foo may bind to foo@@v2, for example).

GNU ld issues an error for this case, even if foo at v1 is undefined weak
(https://sourceware.org/bugzilla/show_bug.cgi?id=3351). This behavior makes
sense because to represent an undefined foo at v1, we have to construct a Verneed
entry. However, without knowing the defining filename, we cannot construct a
Verneed entry (Verneed::vn_file is unavailable).

This patch implements the error.

Depends on D92258

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D92260


  Commit: 9c5504adceb544d9954ddb8ff3035a414f4b1423
      https://github.com/llvm/llvm-project/commit/9c5504adceb544d9954ddb8ff3035a414f4b1423
  Author: Bardia Mahjour <bmahjour at ca.ibm.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/docs/Vectorizers.rst
    A llvm/docs/epilogue-vectorization-cfg.png
    M llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    A llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization-profitability.ll
    A llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization.ll
    M llvm/test/Transforms/LoopVectorize/X86/invariant-load-gather.ll
    M llvm/test/Transforms/LoopVectorize/X86/invariant-store-vectorization.ll
    M llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
    A llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-limitations.ll
    A llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-liveout.ll
    A llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization.ll

  Log Message:
  -----------
  [LV] Epilogue Vectorization with Optimal Control Flow

This is yet another attempt at providing support for epilogue
vectorization following discussions raised in RFC http://llvm.1065342.n5.nabble.com/llvm-dev-Proposal-RFC-Epilog-loop-vectorization-tt106322.html#none
and reviews D30247 and D88819.

Similar to D88819, this patch achieve epilogue vectorization by
executing a single vplan twice: once on the main loop and a second
time on the epilogue loop (using a different VF). However it's able
to handle more loops, and generates more optimal control flow for
cases where the trip count is too small to execute any code in vector
form.

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D89566


  Commit: b99e2b8b14f4ba50f9eb80bd5a2c1824099a7f96
      https://github.com/llvm/llvm-project/commit/b99e2b8b14f4ba50f9eb80bd5a2c1824099a7f96
  Author: Nico Weber <thakis at chromium.org>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M clang/lib/Driver/ToolChains/Darwin.cpp

  Log Message:
  -----------
  clang/darwin: Use response files with ld64.lld.darwinnew

The new MachO lld just grew support for response files in D92149, so let
the clang driver use it.

Differential Revision: https://reviews.llvm.org/D92399


  Commit: ae7ec47fc655537ce82c0bfee0b587921663eaff
      https://github.com/llvm/llvm-project/commit/ae7ec47fc655537ce82c0bfee0b587921663eaff
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M clang-tools-extra/clang-tidy/rename_check.py

  Log Message:
  -----------
  [NFC][clang-tidy] Port rename_check.py to Python3


  Commit: 54eab293f523956bdc4b1a98b6cf5abc0bd1ef3f
      https://github.com/llvm/llvm-project/commit/54eab293f523956bdc4b1a98b6cf5abc0bd1ef3f
  Author: Nikita Popov <nikita.ppv at gmail.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/test/Analysis/BasicAA/phi-aa.ll

  Log Message:
  -----------
  [BasicAA] Add test for suboptimal result with unknown sizes (NFC)


  Commit: e0bf2349303f6b40e3ddd5377ea08a5c0867ece4
      https://github.com/llvm/llvm-project/commit/e0bf2349303f6b40e3ddd5377ea08a5c0867ece4
  Author: Rahman Lavaee <rahmanl at google.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/lib/MC/MCObjectFileInfo.cpp
    M llvm/test/CodeGen/X86/basic-block-sections-labels.ll

  Log Message:
  -----------
  Let .llvm_bb_addr_map section use the same unique id as its associated .text section.

Currently, `llvm_bb_addr_map` sections are generated per section names because we use
the `LinkedToSymbol` argument of getELFSection. This will cause the address map tables of functions
grouped into the same section when `-function-sections=true -unique-section-names=false` which is not
the intended behaviour. This patch lets the unique id of every `.text` section propagate to the associated
`.llvm_bb_addr_map` section.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D92113


  Commit: c30d5101f14f7e8a1c0f80c8663b54de2a7640fd
      https://github.com/llvm/llvm-project/commit/c30d5101f14f7e8a1c0f80c8663b54de2a7640fd
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M libcxx/include/numeric

  Log Message:
  -----------
  [libc++] Optimize the number of assignments in std::exclusive_scan

Reported in https://twitter.com/blelbach/status/1169807347142676480

Differential Revision: https://reviews.llvm.org/D67273


  Commit: c94af03f7f3223e917b00e1c0263a3b8d90b76bc
      https://github.com/llvm/llvm-project/commit/c94af03f7f3223e917b00e1c0263a3b8d90b76bc
  Author: Bardia Mahjour <bmahjour at ca.ibm.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/docs/Vectorizers.rst
    R llvm/docs/epilogue-vectorization-cfg.png
    M llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    R llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization-profitability.ll
    R llvm/test/Transforms/LoopVectorize/PowerPC/optimal-epilog-vectorization.ll
    M llvm/test/Transforms/LoopVectorize/X86/invariant-load-gather.ll
    M llvm/test/Transforms/LoopVectorize/X86/invariant-store-vectorization.ll
    M llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
    R llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-limitations.ll
    R llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-liveout.ll
    R llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization.ll

  Log Message:
  -----------
  Revert "[LV] Epilogue Vectorization with Optimal Control Flow"

This reverts commit 9c5504adceb544d9954ddb8ff3035a414f4b1423.
Reverting to investigate build failure in http://lab.llvm.org:8011/#/builders/98/builds/1461/steps/9


  Commit: 26d3aaeb3aac39329dd845bd0012ad961653dbc6
      https://github.com/llvm/llvm-project/commit/26d3aaeb3aac39329dd845bd0012ad961653dbc6
  Author: Arthur Eubanks <aeubanks at google.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M lld/test/ELF/lto/verify-invalid.ll
    M llvm/lib/LTO/LTOBackend.cpp

  Log Message:
  -----------
  [LTO][NewPM] Run verifier when doing LTO

This matches the legacy PM.

Reviewed By: ychen

Differential Revision: https://reviews.llvm.org/D92138


  Commit: bb993b1d9de34b8e47511a746bf4422ba206123b
      https://github.com/llvm/llvm-project/commit/bb993b1d9de34b8e47511a746bf4422ba206123b
  Author: Fangrui Song <i at maskray.me>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M lld/test/ELF/lto/version-script2.ll

  Log Message:
  -----------
  [ELF][test] Fix lto/version-script2.ll


  Commit: a5309438fe8d4f1212ae645bc0aaf71fdf73d028
      https://github.com/llvm/llvm-project/commit/a5309438fe8d4f1212ae645bc0aaf71fdf73d028
  Author: Fangrui Song <i at maskray.me>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/lib/Analysis/ReleaseModeModelRunner.cpp
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    M llvm/lib/IRReader/IRReader.cpp
    M llvm/lib/Object/Archive.cpp
    M llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
    M llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
    M llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
    M llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
    M llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
    M llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
    M llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp
    M llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

  Log Message:
  -----------
  static const char *const foo => const char foo[]

By default, a non-template variable of non-volatile const-qualified type
having namespace-scope has internal linkage, so no need for `static`.


  Commit: 37340798ccb00b9c3a53e8a5f1b6430e85870338
      https://github.com/llvm/llvm-project/commit/37340798ccb00b9c3a53e8a5f1b6430e85870338
  Author: Zahira Ammarguellat <zahira.ammarguellat at intel.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M clang/lib/Sema/SemaLookup.cpp
    M clang/lib/Sema/SemaOpenMP.cpp
    A clang/test/OpenMP/template-specialization.cpp

  Log Message:
  -----------
  Argument dependent lookup with class argument is recursing into base
classes that haven't been instantiated. This is generating an assertion
in DeclTemplate.h. Fix for Bug25668.


  Commit: 4eaa024863f4a86151beb7971301c6ab10a9de01
      https://github.com/llvm/llvm-project/commit/4eaa024863f4a86151beb7971301c6ab10a9de01
  Author: Saleem Abdulrasool <compnerd at compnerd.org>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M clang/include/clang/APINotes/Types.h
    M clang/lib/APINotes/APINotesTypes.cpp

  Log Message:
  -----------
  APINotes: constify `dump` methods (NFC)

This simply marks the functions as const as they do not mutate the
value.  This is useful for debugging iterations during development.
NFCI.


  Commit: d7fec38f053659725c94fd4580a5fb56af046820
      https://github.com/llvm/llvm-project/commit/d7fec38f053659725c94fd4580a5fb56af046820
  Author: Layton Kifer <laytonkifer at gmail.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

  Log Message:
  -----------
  [DAGCombiner][NFC] Replace duplicate implementation flipBoolean with DAG.getLogicalNOT

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D92246


  Commit: cacb1a9f930e35371c885cb572823626fc90a0ee
      https://github.com/llvm/llvm-project/commit/cacb1a9f930e35371c885cb572823626fc90a0ee
  Author: Nico Weber <thakis at chromium.org>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M llvm/utils/gn/build/sync_source_lists_from_cmake.py

  Log Message:
  -----------
  [gn build] sync script: try to make sync script even clearer

Turns out startswith() takes an optional start parameter :)

No behavior change.


  Commit: a36bd4c90dcca82be9b64f65dbd22e921b6485ef
      https://github.com/llvm/llvm-project/commit/a36bd4c90dcca82be9b64f65dbd22e921b6485ef
  Author: Arthur Eubanks <aeubanks at google.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    M clang/CMakeLists.txt
    M clang/include/clang/Config/config.h.cmake
    M clang/include/clang/Driver/Options.td
    M clang/lib/Driver/ToolChains/CommonArgs.cpp
    M clang/lib/Frontend/CompilerInvocation.cpp
    M clang/test/CMakeLists.txt
    M clang/test/lit.site.cfg.py.in
    M llvm/CMakeLists.txt
    M llvm/include/llvm/Config/llvm-config.h.cmake
    M llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
    M llvm/utils/gn/secondary/clang/test/BUILD.gn
    M llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn

  Log Message:
  -----------
  [CMake][NewPM] Move ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER into llvm/

This allows us to use its value everywhere, rather than just clang. Some
other places, like opt and lld, will use its value soon.

The #define for it is now in llvm-config.h.

Reviewed By: rnk, hans

Differential Revision: https://reviews.llvm.org/D92072


  Commit: 79ba7967f4813445c3ce5624170c19584bbfda72
      https://github.com/llvm/llvm-project/commit/79ba7967f4813445c3ce5624170c19584bbfda72
  Author: Sylvain Audi <sylvain.audi at ubisoft.com>
  Date:   2020-12-01 (Tue, 01 Dec 2020)

  Changed paths:
    A clang/test/ClangScanDeps/Inputs/target-filename-cdb.json
    A clang/test/ClangScanDeps/target-filename.cpp
    M clang/tools/clang-scan-deps/ClangScanDeps.cpp

  Log Message:
  -----------
  [clang-scan-deps] Improve argument parsing to find target object file path.

Support the joined version of -o (-ofilepath), and ensure we use the last provided -o option.

Differential Revision: https://reviews.llvm.org/D92330


Compare: https://github.com/llvm/llvm-project/compare/864dda5fd504...79ba7967f481


More information about the All-commits mailing list