Commit Graph

10488 Commits

Author SHA1 Message Date
Vitaly Buka 76b7784bcd [NFC][sanitizer] Rename ByteMap to Map 2021-10-10 22:23:48 -07:00
LLVM GN Syncbot 816e9d81e2 [gn build] Port f341161689 2021-10-11 02:15:38 +00:00
LLVM GN Syncbot 98c9b3362f [gn build] Port 3df094d31e 2021-10-11 02:15:37 +00:00
Nico Weber e2a2e5475c Revert "Reland "[gn build] (manually) port 6fe2beba7d (ExceptionTests)""
This reverts commit 842035d8bd.
1dba6b3 was reverted yet again in 04aff39504.
2021-10-09 10:18:52 -04:00
Reid Kleckner 89b57061f7 Move TargetRegistry.(h|cpp) from Support to MC
This moves the registry higher in the LLVM library dependency stack.
Every client of the target registry needs to link against MC anyway to
actually use the target, so we might as well move this out of Support.

This allows us to ensure that Support doesn't have includes from MC/*.

Differential Revision: https://reviews.llvm.org/D111454
2021-10-08 14:51:48 -07:00
Vitaly Buka 05d46f627c [NFC][sanitizer] Remove sanitizer_persistent_allocator.cpp
We need to make it a template
2021-10-08 13:43:28 -07:00
LLVM GN Syncbot 708c267d7d [gn build] Port 30caca39f4 2021-10-08 11:24:14 +00:00
Nico Weber 842035d8bd Reland "[gn build] (manually) port 6fe2beba7d (ExceptionTests)"
This reverts commit 98d0f8f2ff.
6fe2beba7d relanded in 1dba6b37bd.
2021-10-08 07:17:04 -04:00
LLVM GN Syncbot a34dffb548 [gn build] Port 7fb9f99f3b 2021-10-07 15:19:45 +00:00
LLVM GN Syncbot 2cb4f53612 [gn build] Port 49e736d845 2021-10-07 15:19:44 +00:00
LLVM GN Syncbot 6c8e80c3c2 [gn build] Port 3e9689d72c 2021-10-07 15:11:38 +00:00
LLVM GN Syncbot c50162b271 [gn build] Port d550930afc 2021-10-07 15:03:32 +00:00
LLVM GN Syncbot ae4c0c7cfc [gn build] Port ccfb0555f7 2021-10-06 22:24:38 +00:00
LLVM GN Syncbot 9f5c70c7ad [gn build] Port 67231650e6 2021-10-06 20:22:05 +00:00
Nico Weber 07e5394c63 [gn build] (manually) port 77d5ccdc6f
(similar to 64f623d4c3)
2021-10-06 15:41:38 -04:00
LLVM GN Syncbot 665662a71e [gn build] Port 10f16bc7b2 2021-10-06 17:59:12 +00:00
LLVM GN Syncbot 1e013f112e [gn build] Port a30a36f66a 2021-10-06 11:59:40 +00:00
LLVM GN Syncbot a67b1220f5 [gn build] Port fc36fb4d23 2021-10-06 08:40:14 +00:00
Markus Lavin 91d15aa0b8 [NPM] Automatic 'opt' pipeline reducer script.
Script for automatic 'opt' pipeline reduction for when using the new
pass-manager (NPM). Based around the '-print-pipeline-passes' option.

The reduction algorithm consists of several phases (steps).

Step #0: Verify that input fails with the given pipeline and make note of the
error code.

Step #1: Split pipeline in two starting from front and move forward as long as
first pipeline exits normally and the second pipeline fails with the expected
error code. Move on to step #2 with the IR from the split point and the
pipeline from the second invocation.

Step #2: Remove passes from end of the pipeline as long as the pipeline fails
with the expected error code.

Step #3: Make several sweeps over the remaining pipeline trying to remove one
pass at a time. Repeat sweeps until unable to remove any more passes.

Usage example:
./utils/reduce_pipeline.py --opt-binary=./build-all-Debug/bin/opt --input=input.ll --output=output.ll --passes=PIPELINE [EXTRA-OPT-ARGS ...]

Differential Revision: https://reviews.llvm.org/D110908
2021-10-06 09:09:33 +02:00
Simon Pilgrim 3ca232feb3 [TableGen] CodeEmitterGen - emit report_fatal_error(const char*) instead of report_fatal_error(std::string&)
As described on D111049, we're trying to remove the <string> dependency from error handling. In most cases the plan is to use the Twine() variant directly but to reduce introducing additional headers for the generated files, I'm using the const char* variant here instead.
2021-10-05 17:03:18 +01:00
LLVM GN Syncbot 8b2d6fd6cb [gn build] Port 214054f78a 2021-10-05 10:41:33 +00:00
LLVM GN Syncbot e66121b68e [gn build] Port cfef1803dd 2021-10-05 04:34:07 +00:00
LLVM GN Syncbot 72abda418e [gn build] Port 811b1736d9 2021-10-04 15:13:27 +00:00
Jay Foad a9bceb2b05 [APInt] Stop using soft-deprecated constructors and methods in llvm. NFC.
Stop using APInt constructors and methods that were soft-deprecated in
D109483. This fixes all the uses I found in llvm, except for the APInt
unit tests which should still test the deprecated methods.

Differential Revision: https://reviews.llvm.org/D110807
2021-10-04 08:57:44 +01:00
Dávid Bolvanský b1fcca3884 Fixed warnings in LLVM produced by -Wbitwise-instead-of-logical 2021-10-03 13:04:18 +02:00
LLVM GN Syncbot e420164f40 [gn build] Port 657f02d458 2021-10-02 00:21:42 +00:00
LLVM GN Syncbot 4cdee8de6b [gn build] Port c8c2b4629f 2021-10-01 20:14:30 +00:00
LLVM GN Syncbot 06cea95a5a [gn build] Port 33dd98e9e4 2021-10-01 18:18:21 +00:00
LLVM GN Syncbot 9c49587cc1 [gn build] Port 47d6274d4c 2021-10-01 14:57:31 +00:00
LLVM GN Syncbot 4f0a39b9b4 [gn build] Port fb99424a6f 2021-10-01 14:29:37 +00:00
LLVM GN Syncbot fcdefc8575 [gn build] Port 3077bc90de 2021-10-01 00:43:50 +00:00
LLVM GN Syncbot 0337e228c1 [gn build] Port 050edef853 2021-09-30 19:35:12 +00:00
Nico Weber e31899c708 Reland "[clang-cl] Accept `#pragma warning(disable : N)` for some N"
This reverts commit 0cd9d8a48b and
adds the changes described in https://reviews.llvm.org/D110668#3034461.
2021-09-30 15:03:23 -04:00
LLVM GN Syncbot 4db00342e5 [gn build] Port 13f3c39f36 2021-09-30 08:28:24 +00:00
Amy Huang 0cd9d8a48b Revert "[clang-cl] Accept `#pragma warning(disable : N)` for some N"
because it causes `error: error reading '/wd4091'` errors in
compiler-rt builds.
2021-09-29 18:46:55 -07:00
LLVM GN Syncbot 9ad17fe0de [gn build] Port 969359e3b8 2021-09-29 20:09:08 +00:00
Nico Weber b2de52bec1 [clang-cl] Accept `#pragma warning(disable : N)` for some N
clang-cl maps /wdNNNN to -Wno-flags for a few warnings that map
cleanly from cl.exe concepts to clang concepts.

This patch adds support for the same numbers to
`#pragma warning(disable : NNNN)`. It also lets
`#pragma warning(push)` and `#pragma warning(pop)` have an effect,
since these are used together with `warning(disable)`.

The optional numeric argument to `warning(push)` is ignored,
as are the other non-`disable` `pragma warning()` arguments.
(Supporting `error` would be easy, but we also don't support
`/we`, and those should probably be added together.)

The motivating example is that a bunch of code (including in LLVM)
uses this idiom to locally disable warnings about calls to deprecated
functions in Windows-only code, and 4996 maps nicely to
-Wno-deprecated-declarations:

    #pragma warning(push)
    #pragma warning(disable: 4996)
      f();
    #pragma warning(pop)

Implementation-wise:
- Move `/wd` flag handling from Options.td to actual Driver-level code
- Extract the function mapping cl.exe IDs to warning groups to the
  new file clang/lib/Basic/CLWarnings.cpp
- Create a diag::Group enum so that CLWarnings.cpp can refer to
  existing groups by ID (and give DllexportExplicitInstantiationDecl
  a named group), and add a function to map a diag::Group to the
  spelling of it's associated commandline flag
- Call that new function from PragmaWarningHandler

Differential Revision: https://reviews.llvm.org/D110668
2021-09-29 13:14:23 -04:00
LLVM GN Syncbot fd9a5b911d [gn build] Port c07f709969 2021-09-29 01:03:11 +00:00
Arthur Eubanks aa53785f23 Reland [clang] Rework dontcall attributes
To avoid using the AST when emitting diagnostics, split the "dontcall"
attribute into "dontcall-warn" and "dontcall-error", and also add the
frontend attribute value as the LLVM attribute value. This gives us all
the information to report diagnostics we need from within the IR (aside
from access to the original source).

One downside is we directly use LLVM's demangler rather than using the
existing Clang diagnostic pretty printing of symbols.

Previous revisions didn't properly declare the new dependencies.

Reviewed By: nickdesaulniers

Differential Revision: https://reviews.llvm.org/D110364
2021-09-28 15:31:30 -07:00
Alex Richardson a28177035b [UpdateTestChecks][NFC] Drop a python2 workaround 2021-09-28 17:57:36 +01:00
Alex Richardson 547e5e4ae6 [update_llc_test_checks.py] Fix MIPS ASM regex for functions with EH
On MIPS, functions with exception handling code emits an additional
temporary label at the start of the function (due to UseAssignmentForEHBegin):

    _Z8do_catchv:                           # @_Z8do_catchv
    .Ltmp3:
    .set .Lfunc_begin0, .Ltmp3
    .cfi_startproc
    .cfi_personality 128, DW.ref.__gxx_personality_v0
    .cfi_lsda 0, .Lexception0
    .frame	$c11,48,$c17
    .mask 	0x00000000,0
    .fmask	0x00000000,0
    .set	noreorder
    .set	nomacro
    .set	noat
    # %bb.0:                                # %entry

The `[^:]*` regex was terminating the search after .Ltmp<N>: and therefore
not detecting functions with exception handling.

Reviewed By: atanasyan, MaskRay

Differential Revision: https://reviews.llvm.org/D100027
2021-09-28 17:57:36 +01:00
LLVM GN Syncbot 5aa4c74c9a [gn build] Port 864b206796 2021-09-28 10:58:48 +00:00
LLVM GN Syncbot 57cd7b018c [gn build] Port 6cfb4d46ba 2021-09-27 21:56:39 +00:00
LLVM GN Syncbot e2eb651cfc [gn build] Port 9da2fa277e 2021-09-27 12:33:13 +00:00
LLVM GN Syncbot a44b122ade [gn build] Port 6498b0e991 2021-09-26 17:25:08 +00:00
Konrad Kleine 6deaebe5fe [llvm] Improve export.sh with help and snapshot
This change adds the ability to create source tarballs for unreleased or untagged code by providing the `--git-ref <GIT_REF>` flag to the `llvm/utils/release/export.sh` script. This is useful for creating daily snapshot tarballs that can easily be consumed by packagers who want to build a daily snapshot.

The default behavior of `export.sh` hasn't changed.

You may also provide a `--template` argument to say how the artifacts
are supposed to be named (as suggested by @hans).

The `-help` output of `export.sh` was changed quite significantly to look like this:

```
Export the Git sources and build tarballs from them.

Usage: export.sh [-release|--release <major>.<minor>.<patch>]
                      [-rc|--rc <num>]
                      [-final|--final]
                      [-git-ref|--git-ref <git-ref>]
                      [-template|--template <template>]

Flags:

  -release  | --release <major>.<minor>.<patch>    The version number of the release
  -rc       | --rc <num>                           The release candidate number
  -final    | --final                              When provided, this option will disable the rc flag
  -git-ref  | --git-ref <git-ref>                  (optional) Use <git-ref> to determine the release and don't export the test-suite files
  -template | --template <template>                (optional) Possible placeholders: $PROJECT $YYYYMMDD $GIT_REF $RELEASE $RC.
                                                   Defaults to '${PROJECT}-${RELEASE}${RC}.src.tar.xz'.

The following list shows the filenames (with <placeholders>) for the artifacts
that are being generated (given that you don't touch --template).

  * llvm-<RELEASE><RC>.src.tar.xz
  * clang-<RELEASE><RC>.src.tar.xz
  * compiler-rt-<RELEASE><RC>.src.tar.xz
  * libcxx-<RELEASE><RC>.src.tar.xz
  * libcxxabi-<RELEASE><RC>.src.tar.xz
  * libclc-<RELEASE><RC>.src.tar.xz
  * clang-tools-extra-<RELEASE><RC>.src.tar.xz
  * polly-<RELEASE><RC>.src.tar.xz
  * lldb-<RELEASE><RC>.src.tar.xz
  * lld-<RELEASE><RC>.src.tar.xz
  * openmp-<RELEASE><RC>.src.tar.xz
  * libunwind-<RELEASE><RC>.src.tar.xz
  * flang-<RELEASE><RC>.src.tar.xz

Additional files being generated:

  * llvm-project-<RELEASE><RC>.src.tar.xz    (the complete LLVM source project)
  * test-suite-<RELEASE><RC>.src.tar.xz      (only when not using --git-ref)

To ease the creation of snapshot builds, we also provide these files

  * llvm-release-<YYYYMMDD>.txt        (contains the <RELEASE> as a text)
  * llvm-rc-<YYYYMMDD>.txt             (contains the rc version passed to the invocation of export.sh)
  * llvm-git-revision-<YYYYMMDD>.txt   (contains the current git revision sha1)

Example values for the placeholders:

  * <RELEASE>  -> 13.0.0
  * <YYYYMMDD> -> 20210414
  * <RC>       -> rc4        (will be empty when using --git-ref)

In order to generate snapshots of the upstream main branch you could do this for example:

  export.sh --git-ref upstream/main --template '${PROJECT}-${YYYYMMDD}.src.tar.xz'

```

Reviewed By: tstellar

Differential Revision: https://reviews.llvm.org/D101446
2021-09-25 00:38:19 +02:00
LLVM GN Syncbot 70a48697d5 [gn build] Port c0d889995e 2021-09-24 20:30:26 +00:00
LLVM GN Syncbot 5f98024011 [gn build] Port a9ae2436fc 2021-09-24 20:30:25 +00:00
Christudasan Devadasan 40ddde5d1f [TableGen] Allow targets to entirely ignore Psets for registers
Tablegen currently expects targets to have at least one
pressure set for every broader register category. AMDGPU's
VGPR or AGPR, for instance, seemed to work correctly without
any pset, though we have forced one for each type to avoid
the assertion in computeRegUnitSets. However, psets can not
be entirely empty. At least one set is mandatory for every
target. This patch bypasses the assertion for the classes
when GeneratePressureSet is zero while ensuring the
RegUnitSets are not empty.

Reviewed By: arsenm, rampitec

Differential Revision: https://reviews.llvm.org/D110305
2021-09-23 23:07:35 -04:00
LLVM GN Syncbot 58d9ed2c93 [gn build] Port a2c1cf09df 2021-09-24 03:01:20 +00:00