platform/upstream/llvm.git
3 years agoGlobalISel: Add helper function for getting EVT from LLT
Matt Arsenault [Sat, 31 Jul 2021 16:05:33 +0000 (12:05 -0400)]
GlobalISel: Add helper function for getting EVT from LLT

This can only give an imperfect approximation, but is enough to avoid
crashing in places where we call into EVT functions starting from LLTs.

3 years ago[RISCV] Support RISCVISD::SELECT_CC in ComputeNumSignBitsForTargetNode.
Craig Topper [Sat, 14 Aug 2021 00:39:52 +0000 (17:39 -0700)]
[RISCV] Support RISCVISD::SELECT_CC in ComputeNumSignBitsForTargetNode.

3 years agoAMDGPU: Stop attributor adding attributes to intrinsic declarations
Matt Arsenault [Thu, 12 Aug 2021 19:19:54 +0000 (15:19 -0400)]
AMDGPU: Stop attributor adding attributes to intrinsic declarations

3 years agoAMDGPU: Add indirect and extern calls to attributor test
Matt Arsenault [Wed, 11 Aug 2021 23:01:30 +0000 (19:01 -0400)]
AMDGPU: Add indirect and extern calls to attributor test

3 years agoAMDGPU: Respect compute ABI attributes with unknown OS
Matt Arsenault [Fri, 13 Aug 2021 13:20:17 +0000 (09:20 -0400)]
AMDGPU: Respect compute ABI attributes with unknown OS

Unfortunately Mesa is still using amdgcn-- as the triple for OpenGL,
so we still have the awkward unknown OS case to deal with. Previously
if the HSA ABI intrinsics appeared, we we would not add the ABI
registers to the function. We would emit an error later, but we still
need to produce some compile result. Start adding the registers to any
compute function, regardless of the OS. This keeps the internal state
more consistent, and will help avoid numerous test crashes in a future
patch which starts assuming the ABI inputs are present on functions by
default.

3 years ago[NFC] One more AttributeList::getAttribute(FunctionIndex) -> getFnAttr()
Arthur Eubanks [Fri, 13 Aug 2021 23:56:42 +0000 (16:56 -0700)]
[NFC] One more AttributeList::getAttribute(FunctionIndex) -> getFnAttr()

3 years ago[CallPromotion] Check for inalloca/byval mismatch
Arthur Eubanks [Sat, 7 Aug 2021 07:28:19 +0000 (00:28 -0700)]
[CallPromotion] Check for inalloca/byval mismatch

Previously we would allow promotion even if the byval/inalloca
attributes on the call and the callee didn't match.

It's ok if the byval/inalloca types aren't the same. For example, LTO
importing may rename types.

Fixes PR51397.

Reviewed By: rnk

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

3 years ago[NFC] One more AttributeList::getAttribute(FunctionIndex) -> getFnAttr()
Arthur Eubanks [Fri, 13 Aug 2021 23:49:05 +0000 (16:49 -0700)]
[NFC] One more AttributeList::getAttribute(FunctionIndex) -> getFnAttr()

3 years ago[NFC] Make AttributeList::hasAttribute(AttributeList::ReturnIndex) its own method
Arthur Eubanks [Fri, 13 Aug 2021 21:35:48 +0000 (14:35 -0700)]
[NFC] Make AttributeList::hasAttribute(AttributeList::ReturnIndex) its own method

AttributeList::hasAttribute() is confusing. In an attempt to change the
name to something that suggests using other methods, fix up some
existing uses.

3 years ago[NFC] Cleanup calls to AttributeList::getAttribute(FunctionIndex)
Arthur Eubanks [Fri, 13 Aug 2021 21:16:44 +0000 (14:16 -0700)]
[NFC] Cleanup calls to AttributeList::getAttribute(FunctionIndex)

getAttribute() is confusing, use a clearer method.

3 years ago[libcxx][ranges] Move `namespace views` into `namespace ranges` and add an alias.
zoecarver [Fri, 13 Aug 2021 18:36:55 +0000 (11:36 -0700)]
[libcxx][ranges] Move `namespace views` into `namespace ranges` and add an alias.

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

3 years ago[lldb] skip host build for lldb_tblgen with LLDB_TABLEGEN_EXE set
Manoj Gupta [Fri, 13 Aug 2021 20:25:14 +0000 (13:25 -0700)]
[lldb] skip host build for lldb_tblgen with LLDB_TABLEGEN_EXE set

When cross compiling lldb-server, do not create a host build
for building lldb-tblgeb when LLDB_TABLEGEN_EXE is already
provided. This avoids an expensive and time-consuming build step
if lldb-tblgen was already built previously for host.

Reviewed By: JDevlieghere

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

3 years ago[x86] add tests for fcmps with logic ops; NFC
Sanjay Patel [Fri, 13 Aug 2021 21:03:22 +0000 (17:03 -0400)]
[x86] add tests for fcmps with logic ops; NFC

3 years ago[mlir] Add support for moving reductions to outer most dimensions in vector.multi_red...
harsh-nod [Fri, 13 Aug 2021 19:54:30 +0000 (12:54 -0700)]
[mlir] Add support for moving reductions to outer most dimensions in vector.multi_reduction

The approach for handling reductions in the outer most
dimension follows that for inner most dimensions, outlined
below

First, transpose to move reduction dims, if needed
Convert reduction from n-d to 2-d canonical form
Then, for outer reductions, we emit the appropriate op
(add/mul/min/max/or/and/xor) and combine the results.

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

3 years ago[NFC] Cleanup callers of AttributeList::hasAttributes()
Arthur Eubanks [Fri, 13 Aug 2021 19:07:05 +0000 (12:07 -0700)]
[NFC] Cleanup callers of AttributeList::hasAttributes()

AttributeList::hasAttributes() is confusing, use clearer methods like
hasFnAttrs().

3 years ago[NFC] Clean up users of AttributeList::hasAttribute()
Arthur Eubanks [Fri, 13 Aug 2021 18:59:18 +0000 (11:59 -0700)]
[NFC] Clean up users of AttributeList::hasAttribute()

AttributeList::hasAttribute() is confusing, use clearer methods like
hasParamAttr()/hasRetAttr().

Add hasRetAttr() since it was missing from AttributeList.

3 years ago[NFC] Remove public uses of AttributeList::getAttributes()
Arthur Eubanks [Fri, 13 Aug 2021 18:37:26 +0000 (11:37 -0700)]
[NFC] Remove public uses of AttributeList::getAttributes()

Use methods that better convey the intent.

3 years ago[gn build] Port df324bba5c4c
LLVM GN Syncbot [Fri, 13 Aug 2021 18:34:09 +0000 (18:34 +0000)]
[gn build] Port df324bba5c4c

3 years ago[gn build] Port 7b20e05c714e
LLVM GN Syncbot [Fri, 13 Aug 2021 18:34:09 +0000 (18:34 +0000)]
[gn build] Port 7b20e05c714e

3 years ago[libcxx][ranges] Add `ranges::join_view`.
zoecarver [Fri, 6 Aug 2021 22:33:46 +0000 (15:33 -0700)]
[libcxx][ranges] Add `ranges::join_view`.

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

3 years ago[libcxx][ranges] Add `ranges::iota_view`.
zoecarver [Tue, 3 Aug 2021 20:05:20 +0000 (13:05 -0700)]
[libcxx][ranges] Add `ranges::iota_view`.

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

3 years agoAdd missed rename of getFnAttributes() -> getFnAttrs()
Arthur Eubanks [Fri, 13 Aug 2021 18:29:20 +0000 (11:29 -0700)]
Add missed rename of getFnAttributes() -> getFnAttrs()

3 years ago[NFC] Rename AttributeList::getParam/Ret/FnAttributes() -> get*Attributes()
Arthur Eubanks [Fri, 13 Aug 2021 18:16:52 +0000 (11:16 -0700)]
[NFC] Rename AttributeList::getParam/Ret/FnAttributes() -> get*Attributes()

This is more consistent with similar methods.

3 years ago[NFC] Rename AttributeList::hasFnAttribute() -> hasFnAttr()
Arthur Eubanks [Fri, 13 Aug 2021 18:09:18 +0000 (11:09 -0700)]
[NFC] Rename AttributeList::hasFnAttribute() -> hasFnAttr()

This is more consistent with similar methods.

3 years ago[NFC] Remove AttributeList::hasParamAttribute()
Arthur Eubanks [Fri, 13 Aug 2021 17:57:15 +0000 (10:57 -0700)]
[NFC] Remove AttributeList::hasParamAttribute()

It's the same as AttributeList::hasParamAttr().

3 years ago[Polly] Rename CodeGen -> generateCode. NFC.
Michael Kruse [Fri, 13 Aug 2021 17:39:23 +0000 (12:39 -0500)]
[Polly] Rename CodeGen -> generateCode. NFC.

To conform to function naming convention: camelCase and start with a
verb.

3 years ago[Polly] Decompose object construction and detection algorithm. NFC.
Michael Kruse [Fri, 13 Aug 2021 17:26:35 +0000 (12:26 -0500)]
[Polly] Decompose object construction and detection algorithm. NFC.

Avoid doing the detection work inside the constructor. In addition to
polymorphism being unintuitive in constructors and other design problems
such as if an exception is thrown, the ScopDetection class is usable
without detection in the sense of "no Scop found" or "function skipped".

3 years ago[PowerPC] Disable CTR Loop generate for fma with the PPC double double type.
Amy Kwan [Fri, 13 Aug 2021 16:22:38 +0000 (11:22 -0500)]
[PowerPC] Disable CTR Loop generate for fma with the PPC double double type.

It is possible to generate the llvm.fmuladd.ppcf128 intrinsic, and there is no actual
FMA instruction that corresponds to this intrinsic call for ppcf128. Thus, this
intrinsic needs to remain as a call as it cannot be lowered to any instruction, which
also means we need to disable CTR loop generation for fma involving the ppcf128 type.
This patch accomplishes this behaviour.

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

3 years ago[IFS] Fix the copy constructor warning in IFSStub.cpp
Haowei Wu [Thu, 12 Aug 2021 21:33:47 +0000 (14:33 -0700)]
[IFS] Fix the copy constructor warning in IFSStub.cpp

This change fixes the gcc warning on copy constructor in IFSStub.cpp
file.

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

3 years ago[Flang] Fix for CI failure, Remove default case
Kiran Chandramohan [Fri, 13 Aug 2021 17:05:35 +0000 (18:05 +0100)]
[Flang] Fix for CI failure, Remove default case

Remove default case when all the enum values are covered in switch
statements.

3 years ago[sanitizer_common] disable format errors.
Florian Mayer [Fri, 13 Aug 2021 15:24:11 +0000 (16:24 +0100)]
[sanitizer_common] disable format errors.

This broke https://lab.llvm.org/buildbot/#/builders/37/builds/6061/steps/32/logs/stdio

Reviewed By: dvyukov

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

3 years ago[Clang] Add an explicit makeArrayRef to appease gcc 5.4.
Craig Topper [Fri, 13 Aug 2021 16:42:06 +0000 (09:42 -0700)]
[Clang] Add an explicit makeArrayRef to appease gcc 5.4.

3 years ago[X86] Add parentheses around casts in some of the X86 intrinsic headers.
Craig Topper [Fri, 13 Aug 2021 16:22:43 +0000 (09:22 -0700)]
[X86] Add parentheses around casts in some of the X86 intrinsic headers.

This covers the SSE and AVX/AVX2 headers. AVX512 has a lot more macros
due to rounding mode.

Fixes part of PR51324.

Reviewed By: pengfei

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

3 years ago[AsmWriter][NFC] Simplify writeDIGenericSubrange
Alfonso Gregory [Fri, 13 Aug 2021 16:31:13 +0000 (09:31 -0700)]
[AsmWriter][NFC] Simplify writeDIGenericSubrange

Reviewed By: MaskRay

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

3 years ago[AArch64][GlobalISel] Legalize scalar G_SSUBSAT + G_SADDSAT
Jessica Paquette [Mon, 9 Aug 2021 18:41:52 +0000 (11:41 -0700)]
[AArch64][GlobalISel] Legalize scalar G_SSUBSAT + G_SADDSAT

These are lowered, matching SDAG behaviour. (See
llvm/test/CodeGen/AArch64/ssub_sat.ll and llvm/test/CodeGen/AArch64/sadd_sat.ll)

These fall back ~159 times on a build of clang with GISel enabled.

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

3 years ago[MLIR][Linalg] Fix typo
Lorenzo Chelini [Fri, 13 Aug 2021 16:00:14 +0000 (18:00 +0200)]
[MLIR][Linalg] Fix typo

3 years agotsan/dd: fix format strings
Dmitry Vyukov [Fri, 13 Aug 2021 15:16:27 +0000 (17:16 +0200)]
tsan/dd: fix format strings

Reviewed By: melver

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

3 years agoRevert "[clang-format] Distinguish K&R C function definition and attribute"
David Spickett [Fri, 13 Aug 2021 15:25:32 +0000 (16:25 +0100)]
Revert "[clang-format] Distinguish K&R C function definition and attribute"

This reverts commit de763c4037157e60551ba227ccd0ed02e109c317.

Causing test failures on the Arm/AArch64 quick bots:
https://lab.llvm.org/buildbot/#/builders/188/builds/2202

3 years agoFix bad assert in print-changed code
Jamie Schmeiser [Fri, 13 Aug 2021 14:53:24 +0000 (10:53 -0400)]
Fix bad assert in print-changed code

Summary:
The assertion that both functions were not missing was incorrect and would
fail when one of the functions was missing. Fixed it and moved the
assertion earlier to check the input parameters to better capture
first-failure.  Added lit test.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>
Reviewed By: aeubanks (Arthur Eubanks)
Differential Revision: https://reviews.llvm.org/D107989

3 years agoRevert "[SCEV] Remove premature assert. PR46786"
Roman Lebedev [Fri, 13 Aug 2021 14:38:36 +0000 (17:38 +0300)]
Revert "[SCEV] Remove premature assert. PR46786"

Since then, the SCEV pointer handling as been improved,
so the assertion should now hold.

This reverts commit b96114c1e1fc4448ea966bce013706359aee3fa9,
relanding the assertion from commit 141e845da5dda6743a09f858b4aec0133a931453.

3 years ago[flang][OpenMP] Add semantic check for teams nesting
Peixin Qiao [Fri, 13 Aug 2021 14:20:38 +0000 (10:20 -0400)]
[flang][OpenMP] Add semantic check for teams nesting

This patch implements the following check for TEAMS construct:
```
OpenMP Version 5.0 Teams construct restriction: A teams region can
only be strictly nested within the implicit parallel region or a target
region. If a teams construct is nested within a target construct, that
target construct must contain no statements, declarations or directives
outside of the teams construct.
```

Also add one test case for the check.

Reviewed By: kiranchandramohan, clementval

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

3 years agotsan: fix latent bug in shadow computation
Dmitry Vyukov [Fri, 13 Aug 2021 13:24:23 +0000 (15:24 +0200)]
tsan: fix latent bug in shadow computation

We use kShadowCnt (number of shadow cells per application granule)
when computing shadow, but it's wrong. We need the ratio
between shadow and app memory (how much shadow is larger than app memory),
which is kShadowMultiplier.
Currently both are equal to 4, so it works fine.
Use the correct constant.

Reviewed By: melver

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

3 years ago[analyzer][NFC] Make test/Analysis/self-assign.cpp readable
Kristóf Umann [Fri, 13 Aug 2021 13:46:32 +0000 (15:46 +0200)]
[analyzer][NFC] Make test/Analysis/self-assign.cpp readable

3 years ago[flang][OpenMP] Add semantic checks for cancellation nesting
Peixin Qiao [Fri, 13 Aug 2021 12:19:01 +0000 (08:19 -0400)]
[flang][OpenMP] Add semantic checks for cancellation nesting

This patch implements the following semantic checks for cancellation constructs:
```
OpenMP Version 5.0 Section 2.18.1: CANCEL construct restriction:
If construct-type-clause is taskgroup, the cancel construct must be
closely nested inside a task or a taskloop construct and the cancel
region must be closely nested inside a taskgroup region. If
construct-type-clause is sections, the cancel construct must be closely
nested inside a sections or section construct. Otherwise, the cancel
construct must be closely nested inside an OpenMP construct that matches
the type specified in construct-type-clause of the cancel construct.

OpenMP Version 5.0 Section 2.18.2: CANCELLATION POINT restriction:
A cancellation point construct for which construct-type-clause is
taskgroup must be closely nested inside a task or taskloop construct,
and the cancellation point region must be closely nested inside a
taskgroup region. A cancellation point construct for which
construct-type-clause is sections must be closely nested inside a
sections or section construct. A cancellation point construct for which
construct-type-clause is neither sections nor taskgroup must be closely
nested inside an OpenMP construct that matches the type specified in
construct-type-clause.
```

Also add test cases for the check.

Reviewed By: kiranchandramohan

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

3 years ago[NFC] Drop idle compiler option from the test.
Alexey Bader [Fri, 13 Aug 2021 06:04:09 +0000 (09:04 +0300)]
[NFC] Drop idle compiler option from the test.

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

3 years ago[OpenCL] Clang diagnostics allow reporting C++ for OpenCL version.
Justas Janickas [Fri, 6 Aug 2021 12:50:13 +0000 (13:50 +0100)]
[OpenCL] Clang diagnostics allow reporting C++ for OpenCL version.

Some Clang diagnostics could only report OpenCL C version. Because
C++ for OpenCL can be used as an alternative to OpenCL C, the text
for diagnostics should reflect that.

Desrciptions modified for these diagnostics:
`err_opencl_unknown_type_specifier`
`warn_option_invalid_ocl_version`
`err_attribute_requires_opencl_version`
`warn_opencl_attr_deprecated_ignored`
`ext_opencl_ext_vector_type_rgba_selector`

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

3 years agoReland "[NFCI][SimplifyCFG] simplifyCondBranch(): assert that branch is non-tautologi...
Roman Lebedev [Fri, 13 Aug 2021 12:08:10 +0000 (15:08 +0300)]
Reland "[NFCI][SimplifyCFG] simplifyCondBranch(): assert that branch is non-tautological""

The commit originally unearthed a problem, reported as
https://reviews.llvm.org/rGf30a7dff8a5b32919951dcbf92e4a9d56c4679ff#1019890
Now that the problem has been fixed, and the assertion no longer fires,
let's see if there are other cases it fires on.

This reverts commit 5c8c24d2decae4a76047777271d60411fc3316eb,
relanding commit f30a7dff8a5b32919951dcbf92e4a9d56c4679ff.

3 years ago[SimplifyCFG] Restart if `removeUndefIntroducingPredecessor()` made changes
Roman Lebedev [Fri, 13 Aug 2021 12:35:01 +0000 (15:35 +0300)]
[SimplifyCFG] Restart if `removeUndefIntroducingPredecessor()` made changes

It might changed the condition of a branch into a constant,
so we should restart and constant-fold terminator,
instead of continuing with the tautological "conditional" branch.
This fixes the issue reported at https://reviews.llvm.org/rGf30a7dff8a5b32919951dcbf92e4a9d56c4679ff

3 years ago[NFC][SimplifyCFG] Add test for failed assertion
Roman Lebedev [Fri, 13 Aug 2021 12:08:00 +0000 (15:08 +0300)]
[NFC][SimplifyCFG] Add test for failed assertion

This would trigger an assertion that was added in rGf30a7dff8a5b.
Need to fix that before relanding.

Reduced from https://reviews.llvm.org/rGf30a7dff8a5b#1019890

3 years ago[MC][ELF] Mark Solaris objects as ELFOSABI_SOLARIS
Rainer Orth [Fri, 13 Aug 2021 12:31:32 +0000 (14:31 +0200)]
[MC][ELF] Mark Solaris objects as ELFOSABI_SOLARIS

Prompted by D107747 <https://reviews.llvm.org/D107747>, it seems prudent to
mark objects as `ELFOSABI_SOLARIS` on Solaris.

Tested on `amd64-pc-solaris2.11`, `sparcv9-sun-solaris2.11`, and
`x86_64-pc-linux-gnu`.

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

3 years ago[clang-format] Distinguish K&R C function definition and attribute
Owen [Thu, 12 Aug 2021 13:12:25 +0000 (06:12 -0700)]
[clang-format] Distinguish K&R C function definition and attribute

This is a follow-up to https://reviews.llvm.org/D107950 which
missed user-defined types in K&R C.

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

3 years ago[mlir] Remove unused header include.
Adrian Kuegel [Fri, 13 Aug 2021 11:43:58 +0000 (13:43 +0200)]
[mlir] Remove unused header include.

Also adjust BUILD.bazel and remove an unused dependency.

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

3 years agoscudo/standalone: prepare for enabling format string checking
Dmitry Vyukov [Fri, 13 Aug 2021 05:29:41 +0000 (07:29 +0200)]
scudo/standalone: prepare for enabling format string checking

Move __attribute__((format)) to the function declarations in the header file.
It's almost pointless in the source file.
But disable the warning  with -Wno-format for now
since there is a number of existing warnings.

Depends on D107984.

Reviewed By: vitalybuka

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

3 years agoubsan: fix few format string bugs
Dmitry Vyukov [Thu, 12 Aug 2021 18:00:16 +0000 (20:00 +0200)]
ubsan: fix few format string bugs

This fixes just a few of the warnings.
Ubsan is not completely clean yet,
but these somehow pop up while I was
fixing other sanitizers.

Depends on D107983.

Reviewed By: vitalybuka

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

3 years agotsan: clean up and enable format string checking
Dmitry Vyukov [Thu, 12 Aug 2021 17:57:31 +0000 (19:57 +0200)]
tsan: clean up and enable format string checking

Depends on D107982.

Reviewed By: vitalybuka

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

3 years agomsan: clean up and enable format string checking
Dmitry Vyukov [Thu, 12 Aug 2021 17:55:59 +0000 (19:55 +0200)]
msan: clean up and enable format string checking

Depends on D107981.

Reviewed By: vitalybuka

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

3 years agosanitizer_common: enable format string checking
Dmitry Vyukov [Thu, 12 Aug 2021 17:52:24 +0000 (19:52 +0200)]
sanitizer_common: enable format string checking

Enable -Wformat in sanitizer_common now that it's
cleaned up from existing warnings.
But disable it in all sanitizers for now since
they are not cleaned up yet, but inherit sanitizer_common CFLAGS.

Depends on D107980.

Reviewed By: vitalybuka

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

3 years agosanitizer_common: fix format strings
Dmitry Vyukov [Thu, 12 Aug 2021 17:47:23 +0000 (19:47 +0200)]
sanitizer_common: fix format strings

Fix existing -Wformat warnings.

Depends on D107979.

Reviewed By: vitalybuka

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

3 years agosanitizer_common: declare vars more locally in VSNPrintf
Dmitry Vyukov [Fri, 13 Aug 2021 05:36:56 +0000 (07:36 +0200)]
sanitizer_common: declare vars more locally in VSNPrintf

No point in declaring variables separately before use.

Depends on D107979.

Reviewed By: vitalybuka

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

3 years agoRevert "sanitizer_common: support printing __m128i type"
Dmitry Vyukov [Thu, 12 Aug 2021 18:07:05 +0000 (20:07 +0200)]
Revert "sanitizer_common: support printing __m128i type"

This reverts commits
"sanitizer_common: support printing __m128i type"
and "[sanitizer] Fix VSNPrintf %V on Windows".

Unfortunately, custom "%V" is inherently incompatible with -Wformat,
it produces both:
warning: invalid conversion specifier 'V' [-Wformat-invalid-specifier]
warning: data argument not used by format string [-Wformat-extra-args]
If we disable both of these warnings we lose lots of useful warnings as well.

Depends on D107978.

Reviewed By: vitalybuka

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

3 years agoscudo: fix __attribute__((format))
Dmitry Vyukov [Thu, 12 Aug 2021 17:59:12 +0000 (19:59 +0200)]
scudo: fix __attribute__((format))

The attribute should be in the header on declaration.
It's almost pointless in the source file.

Depends on D107977.

Reviewed By: vitalybuka

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

3 years agosanitizer_common: prepare for enabling format string checking
Dmitry Vyukov [Thu, 12 Aug 2021 17:37:29 +0000 (19:37 +0200)]
sanitizer_common: prepare for enabling format string checking

The __attribute__((format)) was added somewhere in 2012,
the lost during refactoring, then re-added in 2014 but
to te source files, which is a no-op.
Move it back to header files so that it actually takes effect.
But over the past 7 years we've accumulated whole lot of
format string bugs of different types, so disable the warning
with -Wno-format for now for incremental clean up.

Among the bugs that it warns about are all kinds of bad things:
 - wrong sizes of arguments
 - missing/excessive arguments
 - printing wrong things (e.g. *ptr instead of ptr)
 - completely messed up format strings
 - security issues where external string is used as format

Reviewed By: vitalybuka

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

3 years ago[hwasan] Fix wild free tests on x86.
Florian Mayer [Fri, 13 Aug 2021 10:50:52 +0000 (11:50 +0100)]
[hwasan] Fix wild free tests on x86.

3 years ago[clang][deps] Move `SingleCommandCompilationDatabase` to a header
Jan Svoboda [Fri, 13 Aug 2021 10:48:14 +0000 (12:48 +0200)]
[clang][deps] Move `SingleCommandCompilationDatabase` to a header

This makes `SingleCommandCompilationDatabase` reusable.

3 years agoRevert "[NFCI][SimplifyCFG] simplifyCondBranch(): assert that branch is non-tautological"
Roman Lebedev [Fri, 13 Aug 2021 10:15:24 +0000 (13:15 +0300)]
Revert "[NFCI][SimplifyCFG] simplifyCondBranch(): assert that branch is non-tautological"

The assertion does not hold on a provided reproducer.
Reverting until after fixing the problem.

This reverts commit f30a7dff8a5b32919951dcbf92e4a9d56c4679ff.

3 years ago[SVE] Add folds for truncation of vscale
Dylan Fleming [Fri, 13 Aug 2021 08:36:31 +0000 (09:36 +0100)]
[SVE] Add folds for truncation of vscale

Reviewed By: david-arm

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

3 years ago[LoopFlatten] Fix assertion failure in checkOverflow
Rosie Sumpter [Mon, 9 Aug 2021 11:51:17 +0000 (12:51 +0100)]
[LoopFlatten] Fix assertion failure in checkOverflow

There is an assertion failure in computeOverflowForUnsignedMul
(used in checkOverflow) due to the inner and outer trip counts
having different types. This occurs when the IV has been widened,
but the loop components are not successfully rediscovered.
This is fixed by some refactoring of the code in findLoopComponents
which identifies the trip count of the loop.

3 years ago[NFC] Add commas in code comments.
Alexey Bader [Mon, 24 May 2021 08:38:16 +0000 (11:38 +0300)]
[NFC] Add commas in code comments.

3 years ago[clangd] Guard against null Attrs in the AST
Sam McCall [Fri, 13 Aug 2021 08:38:42 +0000 (10:38 +0200)]
[clangd] Guard against null Attrs in the AST

3 years ago[flang][nfc] Remove `flang-new-driver` from LIT
Andrzej Warzynski [Thu, 12 Aug 2021 19:17:39 +0000 (19:17 +0000)]
[flang][nfc] Remove `flang-new-driver` from LIT

After merging https://reviews.llvm.org/D105811, `flang-new-driver` is no
longer required.

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

3 years ago[AMDGPU][OpenMP] Use llvm-link to link ocml libraries
Pushpinder Singh [Thu, 12 Aug 2021 08:46:24 +0000 (14:16 +0530)]
[AMDGPU][OpenMP] Use llvm-link to link ocml libraries

This fixes the 'unused linker option: -lm' warning when compiling
program with -c.

Reviewed By: JonChesterfield

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

3 years ago[hwasan] Add report for wild frees.
Florian Mayer [Thu, 5 Aug 2021 16:03:09 +0000 (17:03 +0100)]
[hwasan] Add report for wild frees.

Reviewed By: eugenis

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

3 years ago[clang] Adjust BUILD.bazel file to also generate AttrDocTable.
Adrian Kuegel [Fri, 13 Aug 2021 06:22:19 +0000 (08:22 +0200)]
[clang] Adjust BUILD.bazel file to also generate AttrDocTable.

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

3 years ago[JITLink] Update ELF_x86_64 's edge kind to generic edge kind
luxufan [Fri, 13 Aug 2021 04:40:34 +0000 (12:40 +0800)]
[JITLink] Update ELF_x86_64 's edge kind to generic edge kind

This patch uses a switch statement to map the ELF_x86_64's edge kind to generic edge kind, and merge the ELF_x86_64 's applyFixup function to the x86_64 's applyFixup function. Some edge kinds were not have corresponding generic edge kinds, so I added three generic edge kinds asa follows:
1. RequestGOTAndTransformToDelta64, which is similar to RequestGOTAndTransformToDelta32.

2. GOTDelta64. This generic kind is similar to Delta64, except the GOTDelta64 computes the delta relative to GOTSymbol

3. RequestGOTAndTransformToGOTDelta64. This edge kind was used to deal with ELF_x86_64's GOT64 edge kind, it request the fixGOTEdge function to change the target to GOT entry, and set the edge kind to generic edge kind GOTDelta64.

These added generic edge kinds may named haphazardly, or can't express its meaning well.

Reviewed By: lhames

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

3 years ago[clang][Arm] Fix the default floating point ABI for
Sarah Purohit [Fri, 13 Aug 2021 04:41:35 +0000 (21:41 -0700)]
[clang][Arm] Fix the default floating point ABI for
'armv7-pc-win32-macho'

It is incorrect to select the hardware floating point ABI on Mach-O
platforms using the Windows triple if the ABI is "apcs-gnu".

rdar://81810554

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

3 years ago[AVR] Enable machine verifier
Shivam Gupta [Fri, 13 Aug 2021 04:10:39 +0000 (12:10 +0800)]
[AVR] Enable machine verifier

Reviewed By: mhjacobson, benshi001

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

3 years agoPre-commit two-way clamp tests
Qiu Chaofan [Fri, 13 Aug 2021 04:02:32 +0000 (12:02 +0800)]
Pre-commit two-way clamp tests

3 years agoAdd PowerPC AIX triple to indirect call VP testcase.
Wael Yehia [Fri, 13 Aug 2021 02:02:10 +0000 (02:02 +0000)]
Add PowerPC AIX triple to indirect call VP testcase.

3 years ago[OMPIRBuilder] Clarify CanonicalLoopInfo. NFC.
Michael Kruse [Fri, 13 Aug 2021 01:07:55 +0000 (20:07 -0500)]
[OMPIRBuilder] Clarify CanonicalLoopInfo. NFC.

Add in-source documentation on how CanonicalLoopInfo is intended to be used. In particular, clarify what parts of a CanonicalLoopInfo is considered part of the loop, that those parts must be side-effect free, and that InsertPoints to instructions outside those parts can be expected to be preserved after method calls implementing loop-associated directives.

CanonicalLoopInfo are now invalidated after it does not describe canonical loop anymore and asserts when trying to use it afterwards.

In addition, rename `createXYZWorkshareLoop` to `applyXYZWorkshareLoop` and remove the update location to avoid that the impression that they insert something from scratch at that location where in reality its InsertPoint is ignored. createStaticWorkshareLoop does not return a CanonicalLoopInfo anymore. First, it was not a canonical loop in the clarified sense (containing side-effects in form of calls to the OpenMP runtime). Second, it is ambiguous which of the two possible canonical loops it should actually return. It will not be needed before a feature expected to be introduced in OpenMP 6.0

Also see discussion in D105706.

Reviewed By: ftynse

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

3 years ago[mailmap] Add entry for the GN LLVM syncbot
Nico Weber [Fri, 13 Aug 2021 01:59:54 +0000 (21:59 -0400)]
[mailmap] Add entry for the GN LLVM syncbot

The bot did its first 43 commits under the name "GN Syncbot" before
it switched to "LLVM GN Syncbot". Use the latter as canonical name.

3 years ago[gn build] Port 2ff7ca98a99b
LLVM GN Syncbot [Fri, 13 Aug 2021 01:31:18 +0000 (01:31 +0000)]
[gn build] Port 2ff7ca98a99b

3 years ago[gn build] manually port 18f9e25ce1fa43 (AttrDocTable)
Nico Weber [Fri, 13 Aug 2021 01:29:12 +0000 (21:29 -0400)]
[gn build] manually port 18f9e25ce1fa43 (AttrDocTable)

Also clang ClangAttrEmitter for -gen-clang-attr-doc-table to be
like all other tablegen: Produce a .inc file with the generated bits
and put the static parts into a regular .cpp file that includes the
.inc file.

3 years ago[OpenMP][Fix] Fix disable spmdization option
Giorgis Georgakoudis [Thu, 12 Aug 2021 21:47:24 +0000 (14:47 -0700)]
[OpenMP][Fix] Fix disable spmdization option

Besides SPMDization, other analysis and optimization for original, frontend-generated SPMD regions uses information from the AAKernelInfoFunction attribute. This fix makes sure disabling SPMDization through the corresponding option applies only to generic mode regions, which should not be SPMDized, while it leaves unaffected the attribute state of original SPMD regions.

Reviewed By: jdoerfert

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

3 years agoSplitKit: Don't further split subrange mask in buildCopy
Ruiling Song [Tue, 10 Aug 2021 07:59:44 +0000 (15:59 +0800)]
SplitKit: Don't further split subrange mask in buildCopy

We may use several COPY instructions to copy the needed sub-registers
during split. But the way we split the lanes during the COPYs may be
different from the subranges of the old register. This would fail when we
extend the subranges of the new register because the LaneMasks do not
match exactly between subranges of new register and old register.
Since we are bundling the COPYs, I think there is no need to further refine the
subranges of the new register based on the set of LaneMasks of the inserted COPYs.

I am not sure if there will be further breaking cases. But as the subranges of
new register are created based on the LaneMasks of the subranges of old register,
it will be highly possible we will always find an exact LaneMask match.
We can think about how to make the extendPHIKillRanges() work for
subrange mask mismatch case if we meet more such cases in the future.

The test case was from D105065 by @arsenm.

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

3 years ago[Clang] add btf_tag attribute
Yonghong Song [Mon, 19 Jul 2021 05:58:37 +0000 (22:58 -0700)]
[Clang] add btf_tag attribute

A new attribute btf_tag is added. The syntax looks like
  __attribute__((btf_tag(<string>)))

Users may tag a particular structure/member/function/func_parameter/variable
declaration with an arbitrary string and the intention is
that this string is passed to dwarf so it is available for
post-compilation analysis. The string will be also passed
to .BTF section if the target is BPF. For each permitted
declaration, multiple btf_tag's are allowed.
For detailed use cases, please see
  https://lists.llvm.org/pipermail/llvm-dev/2021-June/151009.html

In case that there exist redeclarations, the btf_tag attributes
will be accumulated along with different declarations, and the
last declaration will contain all attributes.

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

3 years ago[WebAssembly] Fix leak in Emscripten SjLj
Heejin Ahn [Mon, 9 Aug 2021 04:16:55 +0000 (21:16 -0700)]
[WebAssembly] Fix leak in Emscripten SjLj

For SjLj, we allocate a table to record setjmp buffer info in the entry
of each setjmp-calling function by inserting a `malloc` call, and insert
a `free` call to free the buffer before each `ret` instruction.

But this is not sufficient; we have to free the buffer before we throw.
In SjLj handling, normal functions that can possibly throw or longjmp
are wrapped with an invoke and caught within the function so they don't
end up escaping the function. But three functions throw and escape the
function:
- `__resumeException` (Emscripten library function used for Emscripten
  EH)
- `emscripten_longjmp` (Emscripten library function used for Emscripten
  SjLj)
- `__cxa_throw` (libc++abi function called when for C++ `throw` keyword)

The first two functions are used to rethrow the current
exception/longjmp when the caught exception/longjmp is not for the
current function. `__cxa_throw` is used for exception, and because we
consider that a function that cannot longjmp, it escapes the function
right away, before which we should free the buffer.

Currently `lsan.test_longjmp3` and `lsan.test_exceptions_longjmp3` fail
in Emscripten; this CL fixes these.

Reviewed By: dschuff

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

3 years ago[WebAssembly] Error out when Emscripten SjLj setjmp is used with Wasm EH
Heejin Ahn [Sat, 7 Aug 2021 04:43:55 +0000 (21:43 -0700)]
[WebAssembly] Error out when Emscripten SjLj setjmp is used with Wasm EH

Currently, when Wasm EH is used with Emscripten SjLj, Emscripten SjLj
cannot handle `invoke` instructions - it assumes all `invoke`s have been
lowered away with Emscripten EH. But in Wasm EH they are lowered in
instruction selection, so they are still present in the IR stage. This
happens when
1. Wasm EH and Emscripten SjLj are used together
2. A function that calls `setjmp` uses exceptions, i.e., has `invoke`s

We were already erroring out with an assertion failure in this case, but
this CL makes it error out more properly with a valid error message.

Wasm EH + Wasm SjLj will not have this restrictions. (it will have
another restriction though, e.g., `setjmp` cannot be called within
`catch`. But why would anyone do that..)

Reviewed By: dschuff

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

3 years ago[sanitizer] Fix the test on Solaris
Vitaly Buka [Thu, 12 Aug 2021 22:37:07 +0000 (15:37 -0700)]
[sanitizer] Fix the test on Solaris

On Solaris sem_open on the same name returns the same pointer, and
then sem_close fails the call.

3 years agoFrontend: Add -f{,no-}implicit-modules-uses-lock and -Rmodule-lock
Duncan P. N. Exon Smith [Thu, 28 Jan 2021 02:50:54 +0000 (18:50 -0800)]
Frontend: Add -f{,no-}implicit-modules-uses-lock and -Rmodule-lock

Add -cc1 flags `-fmodules-uses-lock` and `-fno-modules-uses-lock` to
allow the lock manager to be turned off when building implicit modules.

Add `-Rmodule-lock` so that we can see when it's being used.

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

3 years ago[mlir][tosa] Fix depthwise_conv2D strides/dilation and name
natashaknk [Thu, 12 Aug 2021 22:37:34 +0000 (15:37 -0700)]
[mlir][tosa] Fix depthwise_conv2D strides/dilation and name

Reviewed By: rsuderman

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

3 years ago[clangd] Avoid "expected one compiler job" by picking the first eligible job.
Sam McCall [Fri, 6 Aug 2021 10:07:13 +0000 (12:07 +0200)]
[clangd] Avoid "expected one compiler job" by picking the first eligible job.

This happens in createInvocationWithCommandLine but only clangd currently passes
ShouldRecoverOnErorrs (sic).

One cause of this (with correct command) is several -arch arguments for mac
multi-arch support.

Fixes https://github.com/clangd/clangd/issues/827

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

3 years agoclangd: Make documentation property of completion items more similar
Christian Kandeler [Thu, 12 Aug 2021 22:15:03 +0000 (00:15 +0200)]
clangd: Make documentation property of completion items more similar

... to the one of signature hints.
In particular, completion items now also carry annotations, which client
code might be interested in.

Reviewed By: sammccall

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

3 years agoFrontend: Refactor compileModuleAndReadAST, NFC
Duncan P. N. Exon Smith [Thu, 28 Jan 2021 02:16:51 +0000 (18:16 -0800)]
Frontend: Refactor compileModuleAndReadAST, NFC

This renames `compileModuleAndReadAST`, adding a `BehindLock` suffix,
and refactors it to significantly reduce nesting.

- Split out helpers `compileModuleAndReadASTImpl` and
  `readASTAfterCompileModule` which have straight-line code that doesn't
  worry about locks.
- Use `break` in the interesting cases of `switch` statements to reduce
  nesting.
- Use early `return`s to reduce nesting.

Detangling the compile-and-read logic from the check-for-locks logic
should be a net win for readability, although I also have a side
motivation of making the locks optional in a follow-up.

No functionality change here.

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

3 years agoclangd: Provide hover info for include directives
Christian Kandeler [Thu, 12 Aug 2021 22:04:19 +0000 (00:04 +0200)]
clangd: Provide hover info for include directives

It's quite useful to be able to hover over an #include and see the full
path to the header file.

Reviewed By: sammccall

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

3 years ago[CodeComplete] Basic code completion for attribute names.
Sam McCall [Sat, 7 Aug 2021 15:36:26 +0000 (17:36 +0200)]
[CodeComplete] Basic code completion for attribute names.

Only the bare name is completed, with no args.
For args to be useful we need arg names. These *are* in the tablegen but
not currently emitted in usable form, so left this as future work.

C++11, C2x, GNU, declspec, MS syntax is supported, with the appropriate
spellings of attributes suggested.
`#pragma clang attribute` is supported but not terribly useful as we
only reach completion if parens are balanced (i.e. the line is not truncated)

There's no filtering of which attributes might make sense in this
grammatical context (e.g. attached to a function). In code-completion context
this is hard to do, and will only work in few cases :-(

There's also no filtering by langopts: this is because currently the
only way of checking is to try to produce diagnostics, which requires a
valid ParsedAttr which is hard to get.
This should be fairly simple to fix but requires some tablegen changes
to expose the logic without the side-effect.

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

3 years ago[Attributes]: refactor to expose ParsedAttrInfo::acceptsLangOpts. NFC
Sam McCall [Tue, 10 Aug 2021 15:56:32 +0000 (17:56 +0200)]
[Attributes]: refactor to expose ParsedAttrInfo::acceptsLangOpts. NFC

We will use this function to filter code completion of attributes.

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

3 years ago[clangd] Overload bundles are only deprecated if each overloads is.
Sam McCall [Tue, 2 Mar 2021 21:26:29 +0000 (22:26 +0100)]
[clangd] Overload bundles are only deprecated if each overloads is.

Fixes https://github.com/clangd/clangd/issues/705

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

3 years agoSymbolicate aarch64 adrp+add pc-relative addr in disass
Jason Molenda [Thu, 12 Aug 2021 21:29:30 +0000 (14:29 -0700)]
Symbolicate aarch64 adrp+add pc-relative addr in disass

On aarch64 a two instruction sequence is used to calculate a
pc-relative address, add some state to the DisassemblerLLVMC
symbolicator so it can track the necessary data across the
two instructions and compute the address being calculated.

Differential Revision: https://reviews.llvm.org/D107213
rdar://49119253

3 years ago[PowerPC] Implement XL compatibility builtin __addex
Lei Huang [Wed, 28 Jul 2021 20:34:17 +0000 (15:34 -0500)]
[PowerPC] Implement XL compatibility builtin __addex

Add builtin and intrinsic for `__addex`.

This patch is part of a series of patches to provide builtins for
compatibility with the XL compiler.

Reviewed By: stefanp, nemanjai, NeHuang

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

3 years ago[libc][nfc] add CPP Limits.h for numeric_limits
Michael Jones [Thu, 12 Aug 2021 18:29:58 +0000 (18:29 +0000)]
[libc][nfc] add CPP Limits.h for numeric_limits

Add an implementation of numeric_limits for use in str_conv_utils.
It currently only supports the basic integer types, with more types
coming as needed.

Reviewed By: sivachandra

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