Commit Graph

2172 Commits

Author SHA1 Message Date
Nico Weber ce5abfafb5 [gn build] remove stray character in a comment 2021-07-20 10:13:48 -04:00
LLVM GN Syncbot 978c5d8d2a [gn build] Port 2b08f6af62 2021-07-20 12:00:01 +00:00
Nico Weber 9ced84de09 [gn build] (manually) port bc1a2979fc 2021-07-20 06:43:30 -04:00
LLVM GN Syncbot 53942cd4dc [gn build] Port adb55d7c32 2021-07-20 05:51:14 +00:00
Nico Weber 18a8aaee0e [gn build] Fix llvm_build_instrumented_coverage=true builds with goma/rbe 2021-07-19 19:57:02 -04:00
LLVM GN Syncbot 49289bd943 [gn build] Port 08b289867b 2021-07-19 21:33:24 +00:00
LLVM GN Syncbot 42e6cfc81d [gn build] Port 54902e00d1 2021-07-19 19:24:16 +00:00
LLVM GN Syncbot 68dec42e6b [gn build] Port 8b4acb067f 2021-07-19 18:24:11 +00:00
LLVM GN Syncbot e78560f6e8 [gn build] Port 61fa9afe4c 2021-07-19 18:24:10 +00:00
LLVM GN Syncbot d0ed40204d [gn build] Port 6103fdfab4 2021-07-19 18:24:09 +00:00
Haowei Wu 6103fdfab4 [ifs][elfabi] Merge llvm-ifs/elfabi tools
This change merges llvm-elfabi and llvm-ifs tools.

Differential Revision: https://reviews.llvm.org/D100139
2021-07-19 11:23:19 -07:00
Whisperity 73e4b5cfa8 [clang-tidy] Add 'readability-suspicious-call-argument' check
Finds function calls where the call arguments might be provided in an
incorrect order, based on the comparison (via string metrics) of the
parameter names and the argument names against each other.

A diagnostic is emitted if an argument name is similar to a *different*
parameter than the one currently passed to, and it is sufficiently
dissimilar to the one it **is** passed to currently.

False-positive warnings from this check are useful to indicate bad
naming convention issues, even if a swap isn't necessary.
This check does not generate FixIts.

Originally implemented by @varjujan as his Master's Thesis work.
The check was subsequently taken over by @barancsuk who added type
conformity checks to silence false positive matches.
The work by @whisperity involved driving the check's review and fixing
some more bugs in the process.

Reviewed By: aaron.ballman, alexfh

Differential Revision: http://reviews.llvm.org/D20689

Co-authored-by: János Varjú <varjujanos2@gmail.com>
Co-authored-by: Lilla Barancsuk <barancsuklilla@gmail.com>
2021-07-19 10:18:09 +02:00
LLVM GN Syncbot 1daaf1df56 [gn build] Port 0bf4b81d57 2021-07-16 20:32:47 +00:00
Nico Weber 304293d85d [gn build] (semi-manually) port 6a4054ef06 2021-07-16 15:54:13 -04:00
LLVM GN Syncbot b1ffa8fc61 [gn build] Port 766a08df12 2021-07-16 02:23:45 +00:00
Nico Weber 18d8779747 [gn build] port 766a08df12 2021-07-15 22:23:14 -04:00
Ilya Leoshkevich 402fc790eb [TSan] Add SystemZ longjmp support
Implement the interceptor and stack pointer demangling.

Reviewed By: dvyukov

Differential Revision: https://reviews.llvm.org/D105629
2021-07-15 12:18:48 +02:00
LLVM GN Syncbot 9805afdfea [gn build] Port b0d38ad0bc 2021-07-15 07:50:35 +00:00
LLVM GN Syncbot 8b426bdaf1 [gn build] Port b9c3941cd6 2021-07-15 01:12:36 +00:00
Djordje Todorovic df686842bc [RemoveRedundantDebugValues] Add a Pass that removes redundant DBG_VALUEs
This new MIR pass removes redundant DBG_VALUEs.

After the register allocator is done, more precisely, after
the Virtual Register Rewriter, we end up having duplicated
DBG_VALUEs, since some virtual registers are being rewritten
into the same physical register as some of existing DBG_VALUEs.
Each DBG_VALUE should indicate (at least before the LiveDebugValues)
variables assignment, but it is being clobbered for function
parameters during the SelectionDAG since it generates new DBG_VALUEs
after COPY instructions, even though the parameter has no assignment.
For example, if we had a DBG_VALUE $regX as an entry debug value
representing the parameter, and a COPY and after the COPY,
DBG_VALUE $virt_reg, and after the virtregrewrite the $virt_reg gets
rewritten into $regX, we'd end up having redundant DBG_VALUE.

This breaks the definition of the DBG_VALUE since some analysis passes
might be built on top of that premise..., and this patch tries to fix
the MIR with the respect to that.

This first patch performs bacward scan, by trying to detect a sequence of
consecutive DBG_VALUEs, and to remove all DBG_VALUEs describing one
variable but the last one:

For example:

(1) DBG_VALUE $edi, !"var1", ...
(2) DBG_VALUE $esi, !"var2", ...
(3) DBG_VALUE $edi, !"var1", ...
 ...

in this case, we can remove (1).

By combining the forward scan that will be introduced in the next patch
(from this stack), by inspecting the statistics, the RemoveRedundantDebugValues
removes 15032 instructions by using gdb-7.11 as a testbed.

Differential Revision: https://reviews.llvm.org/D105279
2021-07-14 04:29:42 -07:00
LLVM GN Syncbot 90e7f5d259 [gn build] Port c08dabb0f4 2021-07-14 10:49:08 +00:00
Nico Weber aff0954577 [gn build] (manually) merge 462d4de35b 2021-07-14 06:43:23 -04:00
Nico Weber 3ea8860afb [gn build] (manually) port 303ddb60a2 2021-07-13 15:15:38 -04:00
Fangrui Song 46580d43fc [llvm-readobj] Switch command line parsing from llvm::cl to OptTable
Users should generally observe no difference as long as they don't use
unintended option forms. Behavior changes:

* `-t=d` is removed. Use `-t d` instead.
* `--demangle=false` and `--demangle=0` cannot be used. Omit the option or use `--no-demangle`. Other flag-style options don't have `--no-` forms.
* `--help-list` is removed. This is a `cl::` specific option.
* llvm-readobj now supports grouped short options as well.
* `--color` is removed. This is generally not useful (only apply to errors/warnings) but was inherited from Support.

Some adjustment to the canonical forms
(usually from GNU readelf; currently llvm-readobj has too many redundant aliases):

* --dyn-syms is canonical. --dyn-symbols is a hidden alias
* --file-header is canonical. --file-headers is a hidden alias
* --histogram is canonical. --elf-hash-histogram is a hidden alias
* --relocs is canonical. --relocations is a hidden alias
* --section-groups is canonical. --elf-section-groups is a hidden alias

OptTable avoids global option collision if we decide to support multiplexing for binary utilities.

* Most one-dash long options are still supported. `-dt, -sd, -st, -sr` are dropped due to their conflict with grouped short options.
* `--section-mapping=false` (D57365) is strange but is kept for now.
* Many `cl::opt` variables were unnecessarily external. I added `static` whenever appropriate.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D105532
2021-07-12 10:14:42 -07:00
Nico Weber eecd5d0aa8 [gn build] port 0da172b176 more 2021-07-12 08:50:18 -04:00
Nico Weber 0c6fad233a [gn build] (semi-manually) port 0da172b176 2021-07-12 08:15:59 -04:00
Nico Weber c82b96c0a4 [gn build] fix formatting after 9647a6f719 2021-07-09 19:04:46 -04:00
Wouter van Oortmerssen 9647a6f719 [WebAssembly] Added initial type checker to MC Assembler
This to protect against non-sensical instruction sequences being assembled,
which would either cause asserts/crashes further down, or a Wasm module being output that doesn't validate.

Unlike a validator, this type checker is able to give type-errors as part of the parsing process, which makes the assembler much friendlier to be used by humans writing manual input.

Because the MC system is single pass (instructions aren't even stored in MC format, they are directly output) the type checker has to be single pass as well, which means that from now on .globaltype and .functype decls must come before their use. An extra pass is added to Codegen to collect information for this purpose, since AsmPrinter is normally single pass / streaming as well, and would otherwise generate this information on the fly.

A `-no-type-check` flag was added to llvm-mc (and any other tools that take asm input) that surpresses type errors, as a quick escape hatch for tests that were not intended to be type correct.

This is a first version of the type checker that ignores control flow, i.e. it checks that types are correct along the linear path, but not the branch path. This will still catch most errors. Branch checking could be added in the future.

Differential Revision: https://reviews.llvm.org/D104945
2021-07-09 14:07:25 -07:00
Fangrui Song 47db32e542 [llvm-size] Switch command line parsing from llvm::cl to OptTable
Part of https://lists.llvm.org/pipermail/llvm-dev/2021-July/151622.html
"Binary utilities: switch command line parsing from llvm::cl to OptTable"

* `--totals=false` and `--totals=0` cannot be used. Omit the option.
* `--help-list` is removed. This is a `cl::` specific option.

OptTable avoids global option collision if we decide to support multiplexing for binary utilities.

Note: because the tool is simple, and its long options are uncommon, I just drop
the one-dash forms except `-arch <value>` (Darwin style).

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D105598
2021-07-09 10:26:53 -07:00
LLVM GN Syncbot 214f63b272 [gn build] Port 0e09a41b41 2021-07-09 17:14:37 +00:00
Fangrui Song 48de8bb0d3 [llvm-cxxfilt] Switch command line parsing from llvm::cl to OptTable
Similar to D104889. The tool is very simple and its long options are uncommon,
so just drop the one-dash form in this patch.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D105605
2021-07-09 10:10:45 -07:00
LLVM GN Syncbot 87e41cc4b6 [gn build] Port 321c2ea91c 2021-07-08 15:35:54 +00:00
Nico Weber e37dbc6e57 [gn build] (manually) port ef16c8eaa5 (MCACustomBehaviorAMDGPU) 2021-07-07 21:59:07 -04:00
Nico Weber 877e835add [gn build] (semi-manually) port 966386514b 2021-07-07 19:27:19 -04:00
Fangrui Song cae3b831f4 [llvm-nm] Switch command line parsing from llvm::cl to OptTable
Part of https://lists.llvm.org/pipermail/llvm-dev/2021-July/151622.html
"Binary utilities: switch command line parsing from llvm::cl to OptTable"

Users should generally observe no difference as long as they only use intended
option forms. Behavior changes:

* `-t=d` is removed. Use `-t d` instead.
* `--demangle=0` cannot be used. Omit the option or use `--no-demangle` instead.
* `--help-list` is removed. This is a `cl::` specific option.

Note:

* `-t` diagnostic gets improved.
* This patch avoids cl::opt collision if we decide to support multiplexing for binary utilities
* One-dash long options are still supported.
* The `-s` collision (`-s segment section` for Mach-O) is unfortunate. `-s` means `--print-armap` in GNU nm.
* This patch removes the last `cl::multi_val` use case from the `llvm/lib/Support/CommandLine.cpp` library

`-M` (`--print-armap`), `-U` (`--defined-only`), and `-W` (`--no-weak`)
are now deprecated. They could conflict with future GNU nm options.
(--print-armap has an existing alias -s, so GNU will unlikely add a new one.
--no-weak (not in GNU nm) is rarely used anyway.)

`--just-symbol-name` is now deprecated in favor of
`--format=just-symbols` and `-j`.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D105330
2021-07-07 13:34:33 -07:00
LLVM GN Syncbot 645e599e93 [gn build] Port 6829db727e 2021-07-07 10:14:59 +00:00
LLVM GN Syncbot 7a46d8f50c [gn build] Port 8517a26d44 2021-07-06 18:17:43 +00:00
Nico Weber 325a5619e4 [gn build] (manually) port 98f078324f (llvm-strings Opts.td) 2021-07-05 14:43:05 -04:00
LLVM GN Syncbot 94ff00f988 [gn build] Port 99f00635d7 2021-07-02 17:03:49 +00:00
LLVM GN Syncbot 25473d7b08 [gn build] Port bf64210fd8 2021-07-02 16:12:54 +00:00
Sam McCall 33ff8078ff Revert "[clangd] Unbreak mac build differently 0c96a92d8666b8"
This reverts commit 2f79acb7b7.

Should no longer be needed after 26e1553a10
2021-07-02 16:29:48 +02:00
LLVM GN Syncbot 5df556ac8b [gn build] Port a92964779c 2021-07-02 13:05:44 +00:00
LLVM GN Syncbot 430bfc4f3b [gn build] Port 33a7b4d9d8 2021-07-01 22:26:09 +00:00
Nico Weber 19443c13b5 [gn build] Port 050b064f15 2021-07-01 14:52:21 -04:00
Nico Weber 2f79acb7b7 [clangd] Unbreak mac build differently 0c96a92d86
This reverts b56e5f8a10 (and follow-up f6db88535c) and instead
restores the state we had before 0c96a92d8666b8: ClangdMain.cpp
includes Features.inc before including Transport.h.

This is a bit ugly, but it matches the former state and making Transport.h
include Features.h means that xpc/ needs to be able to find the generated
Features.inc, wich is also a bit ugly.
2021-07-01 10:51:27 -04:00
LLVM GN Syncbot 820ced1362 [gn build] Port 39f64c4c83 2021-07-01 08:31:00 +00:00
LLVM GN Syncbot 9184090c96 [gn build] Port 28b01c59c9 2021-07-01 04:00:13 +00:00
LLVM GN Syncbot f16029e3f7 [gn build] Port 662c55442f 2021-07-01 03:45:41 +00:00
LLVM GN Syncbot ec74192f52 [gn build] Port 381ded345b 2021-06-30 18:49:16 +00:00
Nico Weber 51c3e3f80c [gn build] (manually) port f617ab1044 (DoublerPlugin) 2021-06-30 14:49:06 -04:00
Nico Weber f6db88535c [gn build] add dep needed after b56e5f8a10 2021-06-30 12:58:59 -04:00
LLVM GN Syncbot 0596f7d828 [gn build] Port 0c96a92d86 2021-06-30 15:57:43 +00:00
LLVM GN Syncbot 2a063173c1 [gn build] Port d03aa7d6b6 2021-06-29 15:41:00 +00:00
LLVM GN Syncbot c76fe67a7b [gn build] Port 9b02a9b401 2021-06-29 09:44:27 +00:00
LLVM GN Syncbot fc6a5d85ea [gn build] Port 159024ce23 2021-06-29 09:44:26 +00:00
LLVM GN Syncbot 918bb2a978 [gn build] Port f32f3db9fc 2021-06-28 16:30:29 +00:00
LLVM GN Syncbot 9061da2748 [gn build] Port 499e39c598 2021-06-28 08:50:56 +00:00
LLVM GN Syncbot b62de20190 [gn build] Port 8b7881a084 2021-06-26 14:20:52 +00:00
LLVM GN Syncbot 2b9016745d [gn build] Port aff57ff24a 2021-06-26 11:38:00 +00:00
LLVM GN Syncbot 67a8931440 [gn build] Port 69d5a66621 2021-06-25 00:29:34 +00:00
LLVM GN Syncbot 6ca730e7cb [gn build] Port 6adbc83ee9 2021-06-24 18:02:44 +00:00
Nico Weber b1061e36d9 [gn build] Fix a comment typo and a comment copy-pasto 2021-06-24 11:06:48 -04:00
Nico Weber d57a5879ab [gn build] Remove an unneeded -I flag
Everything includes clang/Config/config.h by qualified "clang/Config/config.h"
path, so there's no need for `-Igen/clang/include/clang/Config/clang/include`.

No behavior change.
2021-06-24 10:18:49 -04:00
Peter Collingbourne 272af9c700 gn build: Build ubsan_minimal on Android. 2021-06-23 19:25:21 -07:00
Andrew Litteken 9e73f7c8d2 [IRSim] Adding basic implementation of llvm-sim.
This is a similarity visualization tool that accepts a Module and
passes it to the IRSimilarityIdentifier.  The resulting SimilarityGroups
are output in a JSON file.

Tests are found in test/tools/llvm-sim and check for the file not found,
a bad module, and that the JSON is created correctly.

Reviewers: paquette, jroelofs, MaskRay

Recommit of: 15645d044b to fix linking
errors and GN build system.

Differential Revision: https://reviews.llvm.org/D86974
2021-06-23 14:38:58 -05:00
LLVM GN Syncbot 45d5373511 [gn build] Port 560170fa2d 2021-06-23 17:11:10 +00:00
Nico Weber e8c8ce0974 [gn build] don't build ubsan_minimal on mac
It doesn't build there, see http://45.33.8.238/macm1/12180/step_4.txt
2021-06-22 22:21:20 -04:00
Peter Collingbourne 0439ba9903 gn build: Only build the TSan runtime on 64-bit platforms.
TSan only supports 64-bit platforms.

Differential Revision: https://reviews.llvm.org/D104755
2021-06-22 17:51:00 -07:00
Peter Collingbourne 6e962fcc3d gn build: Add support for building ubsan_minimal.
Differential Revision: https://reviews.llvm.org/D104754
2021-06-22 17:51:00 -07:00
Peter Collingbourne 449b179902 gn build: Rebase clang-tblgen include path against root_build_dir instead of root_out_dir.
Fixes clang cross-compilation.

Also remove some redundant include path arguments.
2021-06-22 14:32:24 -07:00
Nico Weber 356d6b7b8a [gn build] manually port c747b7d1d9 more (config.osx_sysroot) 2021-06-22 15:33:52 -04:00
LLVM GN Syncbot 805e1a5896 [gn build] Port 40d6d2c49d 2021-06-22 17:03:46 +00:00
Nico Weber 47553356ef [gn build] manually port c747b7d1d9 (config.osx_sysroot) 2021-06-22 12:50:58 -04:00
LLVM GN Syncbot 808ac8d595 [gn build] Port 208332de8a 2021-06-21 07:27:34 +00:00
LLVM GN Syncbot b746a8db84 [gn build] Port 80fd5fa526 2021-06-21 06:23:08 +00:00
Nico Weber 1605fce6c3 [gn build] (manually) port b9c05aff20 (MIRTests) 2021-06-19 13:04:09 -04:00
LLVM GN Syncbot 2ec672dcdf [gn build] Port 134723edd5 2021-06-19 11:49:56 +00:00
LLVM GN Syncbot 00553a3233 [gn build] Port f27e4548fc 2021-06-17 17:09:43 +00:00
Nico Weber a127dffc49 [gn build] (manually) port f9aba9a5af 2021-06-16 18:04:46 -04:00
LLVM GN Syncbot 35a085bfab [gn build] Port ef16c8eaa5 2021-06-16 15:57:43 +00:00
LLVM GN Syncbot e8bfeebeeb [gn build] Port 6478ef61b1 2021-06-15 20:04:02 +00:00
Vitaly Buka 6478ef61b1 [asan] Remove Asan, Ubsan support of RTEMS and Myriad
Differential Revision: https://reviews.llvm.org/D104279
2021-06-15 12:59:05 -07:00
Roman Lebedev e52364532a
[NewPM] Remove SpeculateAroundPHIs pass
Addition of this pass has been botched.
There is no particular reason why it had to be sold as an inseparable part
of new-pm transition. It was added when old-pm was still the default,
and very *very* few users were actually tracking new-pm,
so it's effects weren't measured.

Which means, some of the turnoil of the new-pm transition
are actually likely regressions due to this pass.

Likewise, there has been a number of post-commit feedback
(post new-pm switch), namely
* https://reviews.llvm.org/D37467#2787157 (regresses HW-loops)
* https://reviews.llvm.org/D37467#2787259 (should not be in middle-end, should run after LSR, not before)
* https://reviews.llvm.org/D95789 (an attempt to fix bad loop backedge metadata)
and in the half year past, the pass authors (google) still haven't found time to respond to any of that.

Hereby it is proposed to backout the pass from the pipeline,
until someone who cares about it can address the issues reported,
and properly start the process of adding a new pass into the pipeline,
with proper performance evaluation.

Furthermore, neither google nor facebook reports any perf changes
from this change, so i'm dropping the pass completely.
It can always be re-reverted should/if anyone want to pick it up again.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D104099
2021-06-15 20:35:55 +03:00
LLVM GN Syncbot ccda8c71b2 [gn build] Port 4eb9fe2e1a 2021-06-15 12:01:01 +00:00
LLVM GN Syncbot d8c5a4d6b6 [gn build] Port d0a5d86119 2021-06-15 05:56:32 +00:00
LLVM GN Syncbot bfd451a0ca [gn build] Port c820b494d6 2021-06-14 14:41:33 +00:00
LLVM GN Syncbot a67780f7db [gn build] Port 7eba4856c7 2021-06-11 18:04:01 +00:00
LLVM GN Syncbot ee98f600de [gn build] Port c54d3050f7 2021-06-11 16:57:34 +00:00
LLVM GN Syncbot 2244a0f5fe [gn build] Port 9106047ee3 2021-06-11 16:34:49 +00:00
LLVM GN Syncbot c783013b14 [gn build] Port 9907746f5d 2021-06-11 14:01:11 +00:00
LLVM GN Syncbot eac994e227 [gn build] Port c4a0969b9c 2021-06-11 08:23:07 +00:00
LLVM GN Syncbot 14097fbb08 [gn build] Port bbb3d03f93 2021-06-10 19:39:58 +00:00
Nico Weber 4d11ba38b4 [gn build] minor TODO.txt update 2021-06-10 12:50:23 -04:00
Nico Weber 055770d5bc Reland "[gn build] port d1d36f7ad (llvm-tapi-diff)"
This reverts commit d84ed15c64
The original change relanded in 5b5ab80e31.
2021-06-10 06:22:03 -04:00
Nico Weber 9ec6c3bb2f [gn build] (semi-manually) port 944b3c53ae 2021-06-08 15:21:03 -04:00
LLVM GN Syncbot 3b69318eef [gn build] Port 692d7166f7 2021-06-08 00:16:13 +00:00
Nico Weber cf29cdccbb [gn build] fix syntax error from 50bb1b930d 2021-06-07 07:27:58 -04:00
Jingu Kang a2a0ac42ab [SimpleLoopBoundSplit] Split Bound of Loop which has conditional branch with IV
This pass transforms loops that contain a conditional branch with induction
variable. For example, it transforms left code to right code:

                             newbound = min(n, c)
 while (iv < n) {            while(iv < newbound) {
   A                           A
   if (iv < c)                 B
     B                         C
   C                         }
 }                           if (iv != n) {
                               while (iv < n) {
                                 A
                                 C
                               }
                             }

Differential Revision: https://reviews.llvm.org/D102234
2021-06-07 10:55:25 +01:00
Esme-Yi 50bb1b930d [yaml2obj] Initial the support of yaml2obj for 32-bit XCOFF.
Summary: The patch implements the mapping of the Yaml
information to XCOFF object file to enable the yaml2obj
tool for XCOFF. Currently only 32-bit is supported.

Reviewed By: jhenderson, shchenz

Differential Revision: https://reviews.llvm.org/D95505
2021-06-07 04:14:44 +00:00
Vitaly Buka e3258b0894 Revert "Update and improve compiler-rt tests for -mllvm -asan_use_after_return=(never|[runtime]|always)."
Windows is still broken.

This reverts commit 927688a4cd.
2021-06-05 00:39:50 -07:00
Kevin Athey 927688a4cd Update and improve compiler-rt tests for -mllvm -asan_use_after_return=(never|[runtime]|always).
In addition:
  - optionally add global flag to capture compile intent for UAR:
    __asan_detect_use_after_return_always.
    The global is a SANITIZER_WEAK_ATTRIBUTE.

for issue: https://github.com/google/sanitizers/issues/1394

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D103304
2021-06-05 00:26:10 -07:00
Vitaly Buka c2f2c1b32c Revert "[gn build] manually port 60e5243e59 (weak asan symbol)"
Not needed after d8a4a2cb93.

This reverts commit 00542932fe.
2021-06-05 00:02:50 -07:00
Nico Weber 00542932fe [gn build] manually port 60e5243e59 (weak asan symbol) 2021-06-04 19:49:41 -04:00
Nico Weber efea1b1782 [gn build] (semi-manually) port 07c92b2e95 2021-06-04 16:41:42 -04:00
LLVM GN Syncbot a1cdd4efad [gn build] Port d31a2e7554 2021-06-04 16:41:04 +00:00
LLVM GN Syncbot bde24a114d [gn build] Port 7ed7d4ccb8 2021-06-04 16:41:03 +00:00
Nico Weber 1928bcd8bd [gn build] (manually) port de07b1e84d 2021-06-04 10:37:53 -04:00
Nico Weber d84ed15c64 Revert "[gn build] port d1d36f7ad (llvm-tapi-diff)"
This reverts commit 13155138c1.
d1d36f7ad was reverted in 5337c7550d.
2021-06-04 06:46:19 -04:00
Nico Weber 13155138c1 [gn build] port d1d36f7ad (llvm-tapi-diff) 2021-06-03 19:22:39 -04:00
LLVM GN Syncbot 01ba355268 [gn build] Port 05d164b25c 2021-06-02 19:59:40 +00:00
Nico Weber a5645513db [lld/mac] Implement -dead_strip
Also adds support for live_support sections, no_dead_strip sections,
.no_dead_strip symbols.

Chromium Framework 345MB unstripped -> 250MB stripped
(vs 290MB unstripped -> 236M stripped with ld64).

Doing dead stripping is a bit faster than not, because so much less
data needs to be processed:

    % ministat lld_*
    x lld_nostrip.txt
    + lld_strip.txt
        N           Min           Max        Median           Avg        Stddev
    x  10      3.929414       4.07692     4.0269079     4.0089678   0.044214794
    +  10     3.8129408     3.9025559     3.8670411     3.8642573   0.024779651
    Difference at 95.0% confidence
            -0.144711 +/- 0.0336749
            -3.60967% +/- 0.839989%
            (Student's t, pooled s = 0.0358398)

This interacts with many parts of the linker. I tried to add test coverage
for all added `isLive()` checks, so that some test will fail if any of them
is removed. I checked that the test expectations for the most part match
ld64's behavior (except for live-support-iterations.s, see the comment
in the test). Interacts with:
- debug info
- export tries
- import opcodes
- flags like -exported_symbol(s_list)
- -U / dynamic_lookup
- mod_init_funcs, mod_term_funcs
- weak symbol handling
- unwind info
- stubs
- map files
- -sectcreate
- undefined, dylib, common, defined (both absolute and normal) symbols

It's possible it interacts with more features I didn't think of,
of course.

I also did some manual testing:
- check-llvm check-clang check-lld work with lld with this patch
  as host linker and -dead_strip enabled
- Chromium still starts
- Chromium's base_unittests still pass, including unwind tests

Implemenation-wise, this is InputSection-based, so it'll work for
object files with .subsections_via_symbols (which includes all
object files generated by clang). I first based this on the COFF
implementation, but later realized that things are more similar to ELF.
I think it'd be good to refactor MarkLive.cpp to look more like the ELF
part at some point, but I'd like to get a working state checked in first.

Mechanical parts:
- Rename canOmitFromOutput to wasCoalesced (no behavior change)
  since it really is for weak coalesced symbols
- Add noDeadStrip to Defined, corresponding to N_NO_DEAD_STRIP
  (`.no_dead_strip` in asm)

Fixes PR49276.

Differential Revision: https://reviews.llvm.org/D103324
2021-06-02 11:09:26 -04:00
LLVM GN Syncbot e61917ce2d [gn build] Port 924ea3bb53 2021-06-02 01:47:33 +00:00
LLVM GN Syncbot 8ae7fe24c1 [gn build] Port 065cf3f9d7 2021-06-01 21:08:31 +00:00
LLVM GN Syncbot bebb802a25 [gn build] Port aaac268285 2021-06-01 20:28:25 +00:00
LLVM GN Syncbot e9f82e9e1b [gn build] Port 5671ff20d9 2021-06-01 19:37:29 +00:00
Nico Weber 1279b79c9b [gn build] make libunwind build on macOS 2021-05-31 13:17:16 -04:00
Arthur Eubanks 8815ce03e8 Remove "Rewrite Symbols" from codegen pipeline
It breaks up the function pass manager in the codegen pipeline.

With empty parameters, it looks at the -mllvm flag -rewrite-map-file.
This is likely not in use.

Add a check that we only have one function pass manager in the codegen
pipeline.

Some tests relied on the fact that we had a module pass somewhere in the
codegen pipeline.

addr-label.ll crashes on ARM due to this change. This is because a
ARMConstantPoolConstant containing a BasicBlock to represent a
blockaddress may hold an invalid pointer to a BasicBlock if the
blockaddress is invalidated by its BasicBlock getting removed. In that
case all referencing blockaddresses are RAUW a constant int. Making
ARMConstantPoolConstant::CVal a WeakVH fixes the crash, but I'm not sure
that's the right fix. As a workaround, create a barrier right before
ISel so that IR optimizations can't happen while a
ARMConstantPoolConstant has been created.

Reviewed By: rnk, MaskRay, compnerd

Differential Revision: https://reviews.llvm.org/D99707
2021-05-31 08:32:36 -07:00
LLVM GN Syncbot 42910da585 [gn build] Port b13edf6e90 2021-05-29 07:51:43 +00:00
Nico Weber 1a0e5d561c [gn build] manually port 982e3c0510 (check-lld needs dsymutil) 2021-05-28 15:39:12 -04:00
LLVM GN Syncbot b6afdbac13 [gn build] Port 9968896cd6 2021-05-28 18:57:30 +00:00
Reid Kleckner 4c6e2774d8 [gn] Make ubsan errors fatal, as in cmake
Apparently ubsan errors are non-fatal by default. If you introduce UB
into LLVM and run the tests, if errors are not fatal, the test will
still produce the expected output and the tests will pass. In order to
make ubsan errors show up as test failures, they have to be made fatal.
Pass the -fno-sanitize-recover=all flag to make it so.

Differential Revision: https://reviews.llvm.org/D103298
2021-05-28 08:05:37 -07:00
LLVM GN Syncbot 0c4f76c942 [gn build] Port 58b29a4efc 2021-05-28 14:09:31 +00:00
Nico Weber 6915a55824 [gn build] (semi-manually) port bd04d78d64 2021-05-28 08:04:52 -04:00
LLVM GN Syncbot cc3db8dbdf [gn build] Port 857fa7b7b1 2021-05-27 04:42:56 +00:00
LLVM GN Syncbot 77274258e2 [gn build] Port 0dc7fd1bc1 2021-05-27 04:42:55 +00:00
LLVM GN Syncbot e47311d888 [gn build] Port de9df3f5b9 2021-05-26 15:57:01 +00:00
LLVM GN Syncbot deb6a0f94a [gn build] Port 16342e3994 2021-05-26 15:45:57 +00:00
LLVM GN Syncbot dde123993f [gn build] Port 36d0fdf9ac 2021-05-26 04:31:12 +00:00
LLVM GN Syncbot 9ba21911db [gn build] Port 33706191d8 2021-05-25 18:58:50 +00:00
LLVM GN Syncbot e7a268f9ef [gn build] Port b510e4cf1b 2021-05-24 18:48:17 +00:00
LLVM GN Syncbot b2c70bd21a [gn build] Port a64ebb8637 2021-05-24 18:36:50 +00:00
LLVM GN Syncbot f55a733506 [gn build] Port 095e91c973 2021-05-24 17:18:43 +00:00
Nico Weber f47575f83c [gn build] (semi-manually) port 0bccdf82f7 2021-05-23 10:01:06 -04:00
LLVM GN Syncbot 9039ade209 [gn build] Port 9db55b314b 2021-05-21 18:10:35 +00:00
LLVM GN Syncbot efea813445 [gn build] Port 0af3105b64 2021-05-20 19:20:25 +00:00
Nico Weber e1ffcfcee7 [gn build] try reverting code part of f05fbb7795
Maybe aa8fe8fe6c was all that was needed to fix the build and
we can keep the code with fewer conditionals after all.
2021-05-20 15:08:39 -04:00
Nico Weber aa8fe8fe6c [gn build] attempt again to unbreak linux after fc9696130c 2021-05-20 15:01:35 -04:00
Nico Weber f3f592ac89 [gn build] use PEP-8 indents in symbol_exports.py 2021-05-20 15:00:24 -04:00
Nico Weber f05fbb7795 [gn build] attempt to unbreak linux after fc9696130c
Only emit `global:` if there are any exported symbols.

While here, `chmod +x` the symbol_exports.py script.
2021-05-20 14:55:40 -04:00
Nico Weber fc9696130c [gn build] Use .export files
Just fixing an old TODO, no dramatic behavior change.

Differential Revision: https://reviews.llvm.org/D102843
2021-05-20 14:48:12 -04:00
LLVM GN Syncbot 2d8cb8205a [gn build] Port 081c62501e 2021-05-20 10:17:56 +00:00
LLVM GN Syncbot f2c97605a0 [gn build] Port 4bf69fb52b 2021-05-19 22:27:27 +00:00
Mariusz Ceier 9383e9c1e6 Fix lld macho standalone build by including llvm/Config/llvm-config.h instead of llvm/Config/config.h
lld/MachO/Driver.cpp and lld/MachO/SyntheticSections.cpp include
llvm/Config/config.h which doesn't exist when building standalone lld.

This patch replaces llvm/Config/config.h include with llvm/Config/llvm-config.h
just like it is in lld/ELF/Driver.cpp and HAVE_LIBXAR with LLVM_HAVE_LIXAR and
moves LLVM_HAVE_LIBXAR from config.h to llvm-config.h

Also it adds LLVM_HAVE_LIBXAR to LLVMConfig.cmake and links liblldMachO2.so
with XAR_LIB if LLVM_HAVE_LIBXAR is set.

Differential Revision: https://reviews.llvm.org/D102084
2021-05-19 11:15:07 -04:00
LLVM GN Syncbot 09ac3523b6 [gn build] Port 886629a8c9 2021-05-18 23:27:42 +00:00
Arthur Eubanks 16cbc80e72 [gn build] Rename PassesBindingsTests and add it to unittests 2021-05-18 10:26:00 -07:00
Arthur Eubanks 85f8698eb9 [gn build] Add target for PassesBindingsTest 2021-05-18 10:01:19 -07:00
LLVM GN Syncbot 11c857c71d [gn build] Port 0c557db617 2021-05-17 18:56:03 +00:00
Peter Collingbourne c870e36be1 gn build: Only build the hwasan runtime in aliasing mode on x86.
The LAM mode is currently untested by check-hwasan, so we only need
to build the runtime in aliasing mode. Because LAM mode will always
need to be conditional (because only certain hardware will support
it) we can always just disable the LAM lit tests if it ever starts
being tested.
2021-05-17 11:48:49 -07:00
Nico Weber 77fa9a9b15 [gn build] reformat all gn files
$ git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format
2021-05-17 06:59:43 -04:00
Nico Weber 452e035729 [gn build] Add build file for msan runtime
Works for the examples on
https://clang.llvm.org/docs/MemorySanitizer.html

Differential Revision: https://reviews.llvm.org/D102554
2021-05-17 06:58:10 -04:00
Nico Weber 46b14dc485 [gn build] (manually) port ad7e12226f 2021-05-14 22:24:39 -04:00
Benjamin Kramer 4901199f5b GTEST_HAS_TR1_TUPLE is gone, stop defining it. 2021-05-14 21:14:32 +02:00
Nico Weber 0ca6e93a9e [gn build] (manually) merge b7d1ab75cf
No check-hwasan-lam target yet, though.
2021-05-14 13:51:10 -04:00
LLVM GN Syncbot de115c3fb2 [gn build] Port 0fda4c4745 2021-05-14 04:56:03 +00:00
Reid Kleckner 5ba4a0e890 [gn] Don't pass -fprofile-instr-generate to linker on Windows
Avoids a warning from the linker. The user still has to put the resource
directory on the linker search path, and I can't find a clean way to do
that automatically in gn.
2021-05-13 16:04:11 -07:00
Nico Weber 9310840cc2 [gn build] (manually) port 92f9852fc9, clang-repl 2021-05-13 08:53:53 -04:00
LLVM GN Syncbot 9bf1761975 [gn build] Port d8b37de8a4 2021-05-13 05:32:35 +00:00
LLVM GN Syncbot 842b162446 [gn build] Port e5d483f28a 2021-05-11 00:19:33 +00:00
LLVM GN Syncbot 0077dce361 [gn build] Port 3b8d2be527 2021-05-10 23:06:37 +00:00
Xiang1 Zhang d4bdeca576 [X86] Support AMX fast register allocation
Differential Revision: https://reviews.llvm.org/D100026
2021-05-08 14:21:11 +08:00
Xiang1 Zhang bebafe01a7 Revert "[X86] Support AMX fast register allocation"
This reverts commit 77e2e5e07d.
2021-05-08 13:43:32 +08:00
Xiang1 Zhang 77e2e5e07d [X86] Support AMX fast register allocation 2021-05-08 13:27:21 +08:00
Arthur Eubanks d82bc9e81d [gn build] Manually port 5b158093e 2021-05-07 17:54:32 -07:00
LLVM GN Syncbot 8894a4b5d7 [gn build] Port 98e5ede604 2021-05-07 09:15:50 +00:00
LLVM GN Syncbot fca10c8808 [gn build] Port 83af66e18e 2021-05-06 21:03:05 +00:00
Arthur Eubanks 642df18f14 [gn build] Support compiler-rt/profile on Windows
Reviewed By: thakis

Differential Revision: https://reviews.llvm.org/D101961
2021-05-06 10:20:52 -07:00
Nico Weber ea3777fe22 [gn build] (semi-manually) port 0b10bb7ddd more 2021-05-05 18:15:13 -04:00
Nico Weber ceccfaae14 [gn build] (semi-manually) port 0b10bb7ddd 2021-05-05 18:06:52 -04:00
LLVM GN Syncbot 72cefd50e5 [gn build] Port 600686d75f 2021-05-05 04:57:55 +00:00
LLVM GN Syncbot 88ec05b654 [gn build] Port f2018d6c16 2021-05-05 03:54:38 +00:00
LLVM GN Syncbot 6ede28c9e1 [gn build] Port 2021d272ad 2021-05-04 15:06:28 +00:00
Nico Weber d7ec48d71b [clang] accept -fsanitize-ignorelist= in addition to -fsanitize-blacklist=
Use that for internal names (including the default ignorelists of the
sanitizers).

Differential Revision: https://reviews.llvm.org/D101832
2021-05-04 10:24:00 -04:00
LLVM GN Syncbot caa8431404 [gn build] Port 1db4dbba24 2021-05-04 09:56:46 +00:00
LLVM GN Syncbot 97f4789c38 [gn build] Port ed51156084 2021-05-04 06:39:48 +00:00
LLVM GN Syncbot 47ee47e1e8 [gn build] Port 7310403e3c 2021-05-04 00:04:57 +00:00
LLVM GN Syncbot 895ba21401 [gn build] Port 1527a5e4b4 2021-05-03 12:53:10 +00:00
LLVM GN Syncbot ff7f27fe67 [gn build] Port 1977c53b2a 2021-05-02 02:55:47 +00:00
LLVM GN Syncbot 7994615ea0 [gn build] Port 02c5ba8679 2021-05-01 00:09:37 +00:00
LLVM GN Syncbot e01e9a2e31 [gn build] Port 2d28100bf2 2021-04-30 20:17:55 +00:00
LLVM GN Syncbot adf4dc0561 [gn build] Port c6f20d70a8 2021-04-30 17:30:08 +00:00
LLVM GN Syncbot 5596bc40e6 [gn build] Port 7c17731596 2021-04-30 17:00:36 +00:00
LLVM GN Syncbot 8ebbaf17f9 [gn build] Port 5a3309f825 2021-04-30 17:00:35 +00:00
LLVM GN Syncbot 4978bf65ad [gn build] Port 43bc584dc0 2021-04-30 13:48:40 +00:00
LLVM GN Syncbot 5fbea82692 [gn build] Port df323ba445 2021-04-29 16:59:58 +00:00
Benjamin Kramer df323ba445 Revert "[X86] Support AMX fast register allocation"
This reverts commit 3b8ec86fd5.

Revert "[X86] Refine AMX fast register allocation"

This reverts commit c3f95e9197.

This pass breaks using LLVM in a multi-threaded environment by
introducing global state.
2021-04-29 18:56:33 +02:00
Nico Weber 671f0e2e18 [clang] Make libBasic not depend on MC
Reduces numbers of files built for clang-format from 575 to 449.

Requires two small changes:

1. Don't use llvm::ExceptionHandling in LangOptions. This isn't
   even quite the right type since we don't use all of its values.
   Tweaks the changes made in:
   - https://reviews.llvm.org/D93215
   - https://reviews.llvm.org/D93216

2. Move section name validation code added (long ago) in commit 30ba67439 out
   of libBasic into Sema and base the check on the triple. This is a bit less
   OOP-y, but completely in line with what we do in many other places in Sema.

No behavior change.

Differential Revision: https://reviews.llvm.org/D101463
2021-04-28 12:16:22 -04:00
Nico Weber 3d974ac9fc [gn build] (port) 64bc44f5dd and f8de9aaef2 some more 2021-04-28 09:59:07 -04:00
Nico Weber 0f1137ba79 [clang/Basic] Make TargetInfo.h not use DataLayout again
Reverts parts of https://reviews.llvm.org/D17183, but keeps the
resetDataLayout() API and adds an assert that checks that datalayout string and
user label prefix are in sync.

Approach 1 in https://reviews.llvm.org/D17183#2653279
Reduces number of TUs build for 'clang-format' from 689 to 575.

I also implemented approach 2 in D100764. If someone feels motivated
to make us use DataLayout more, it's easy to revert this change here
and go with D100764 instead. I don't plan on doing more work in this
area though, so I prefer going with the smaller, more self-consistent change.

Differential Revision: https://reviews.llvm.org/D100776
2021-04-27 22:26:10 -04:00
Nico Weber c35fadceab [gn build] (manually) port 82d3c0759f 2021-04-27 22:25:55 -04:00
LLVM GN Syncbot 4cf942adab [gn build] Port 241c2da406 2021-04-27 16:56:33 +00:00
LLVM GN Syncbot 889fcb2f74 [gn build] Port 51495fd285 2021-04-27 05:57:29 +00:00
LLVM GN Syncbot 891d1e160b [gn build] Port d122d80b3d 2021-04-27 04:24:09 +00:00
LLVM GN Syncbot c6d5e6bc61 [gn build] Port 7aa3cad46a 2021-04-27 00:18:13 +00:00
LLVM GN Syncbot 5daa135a6f [gn build] Port bbddadd46e 2021-04-26 22:16:25 +00:00
LLVM GN Syncbot d7308da4a5 [gn build] Port caf1294d95 2021-04-26 21:24:36 +00:00
LLVM GN Syncbot d3a2038955 [gn build] Port 8740360093 2021-04-26 21:04:24 +00:00
Nico Weber 5529878f8e [gn build] reformat all gn files
$ git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format
2021-04-26 16:04:23 -04:00
Nico Weber 7673bd56ff [gn build] (manually) port f8de9aaef2 2021-04-26 16:03:50 -04:00
LLVM GN Syncbot 92880ab7a2 [gn build] Port 1cea7ab4ba 2021-04-25 12:00:31 +00:00
LLVM GN Syncbot c5cb5053a9 [gn build] Port a354fd56c5 2021-04-25 11:27:54 +00:00