OSDN Git Service

android-x86/external-llvm-project.git
4 years ago[analyzer][tests] Measure peak memory consumption for every project
Valeriy Savchenko [Fri, 10 Jul 2020 07:54:18 +0000 (10:54 +0300)]
[analyzer][tests] Measure peak memory consumption for every project

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

4 years ago[builtins] Optimize udivmodti4 for many platforms.
Danila Kutenin [Fri, 10 Jul 2020 07:46:57 +0000 (09:46 +0200)]
[builtins] Optimize udivmodti4 for many platforms.

Summary:
While benchmarking uint128 division we found out that it has huge latency for small divisors

https://reviews.llvm.org/D83027

```
Benchmark                                                   Time(ns)        CPU(ns)     Iterations
--------------------------------------------------------------------------------------------------
BM_DivideIntrinsic128UniformDivisor<unsigned __int128>            13.0           13.0     55000000
BM_DivideIntrinsic128UniformDivisor<__int128>                     14.3           14.3     50000000
BM_RemainderIntrinsic128UniformDivisor<unsigned __int128>         13.5           13.5     52000000
BM_RemainderIntrinsic128UniformDivisor<__int128>                  14.1           14.1     50000000
BM_DivideIntrinsic128SmallDivisor<unsigned __int128>             153            153        5000000
BM_DivideIntrinsic128SmallDivisor<__int128>                      170            170        3000000
BM_RemainderIntrinsic128SmallDivisor<unsigned __int128>          153            153        5000000
BM_RemainderIntrinsic128SmallDivisor<__int128>                   155            155        5000000
```

This patch suggests a more optimized version of the division:

If the divisor is 64 bit, we can proceed with the divq instruction on x86 or constant multiplication mechanisms for other platforms. Once both divisor and dividend are not less than 2**64, we use branch free subtract algorithm, it has at most 64 cycles. After that our benchmarks improved significantly

```
Benchmark                                                   Time(ns)        CPU(ns)     Iterations
--------------------------------------------------------------------------------------------------
BM_DivideIntrinsic128UniformDivisor<unsigned __int128>            11.0           11.0     64000000
BM_DivideIntrinsic128UniformDivisor<__int128>                     13.8           13.8     51000000
BM_RemainderIntrinsic128UniformDivisor<unsigned __int128>         11.6           11.6     61000000
BM_RemainderIntrinsic128UniformDivisor<__int128>                  13.7           13.7     52000000
BM_DivideIntrinsic128SmallDivisor<unsigned __int128>              27.1           27.1     26000000
BM_DivideIntrinsic128SmallDivisor<__int128>                       29.4           29.4     24000000
BM_RemainderIntrinsic128SmallDivisor<unsigned __int128>           27.9           27.8     26000000
BM_RemainderIntrinsic128SmallDivisor<__int128>                    29.1           29.1     25000000
```

If not using divq instrinsics, it is still much better

```
Benchmark                                                   Time(ns)        CPU(ns)     Iterations
--------------------------------------------------------------------------------------------------
BM_DivideIntrinsic128UniformDivisor<unsigned __int128>            12.2           12.2     58000000
BM_DivideIntrinsic128UniformDivisor<__int128>                     13.5           13.5     52000000
BM_RemainderIntrinsic128UniformDivisor<unsigned __int128>         12.7           12.7     56000000
BM_RemainderIntrinsic128UniformDivisor<__int128>                  13.7           13.7     51000000
BM_DivideIntrinsic128SmallDivisor<unsigned __int128>              30.2           30.2     24000000
BM_DivideIntrinsic128SmallDivisor<__int128>                       33.2           33.2     22000000
BM_RemainderIntrinsic128SmallDivisor<unsigned __int128>           31.4           31.4     23000000
BM_RemainderIntrinsic128SmallDivisor<__int128>                    33.8           33.8     21000000
```

PowerPC benchmarks:

Was
```
BM_DivideIntrinsic128UniformDivisor<unsigned __int128>            22.3           22.3     32000000
BM_DivideIntrinsic128UniformDivisor<__int128>                     23.8           23.8     30000000
BM_RemainderIntrinsic128UniformDivisor<unsigned __int128>         22.5           22.5     32000000
BM_RemainderIntrinsic128UniformDivisor<__int128>                  24.9           24.9     29000000
BM_DivideIntrinsic128SmallDivisor<unsigned __int128>             394            394        2000000
BM_DivideIntrinsic128SmallDivisor<__int128>                      397            397        2000000
BM_RemainderIntrinsic128SmallDivisor<unsigned __int128>          399            399        2000000
BM_RemainderIntrinsic128SmallDivisor<__int128>                   397            397        2000000
```

With this patch
```
BM_DivideIntrinsic128UniformDivisor<unsigned __int128>            21.7           21.7     33000000
BM_DivideIntrinsic128UniformDivisor<__int128>                     23.0           23.0     31000000
BM_RemainderIntrinsic128UniformDivisor<unsigned __int128>         21.9           21.9     33000000
BM_RemainderIntrinsic128UniformDivisor<__int128>                  23.9           23.9     30000000
BM_DivideIntrinsic128SmallDivisor<unsigned __int128>              32.7           32.6     23000000
BM_DivideIntrinsic128SmallDivisor<__int128>                       33.4           33.4     21000000
BM_RemainderIntrinsic128SmallDivisor<unsigned __int128>           31.1           31.1     22000000
BM_RemainderIntrinsic128SmallDivisor<__int128>                    33.2           33.2     22000000
```

My email: danilak@google.com, I don't have commit rights

Reviewers: howard.hinnant, courbet, MaskRay

Reviewed By: courbet

Subscribers: steven.zhang, #sanitizers

Tags: #sanitizers

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

4 years ago[BDCE] SExt -> ZExt when no sign bits is used and instruction has multiple uses
Diogo Sampaio [Fri, 10 Jul 2020 07:01:04 +0000 (08:01 +0100)]
[BDCE] SExt -> ZExt when no sign bits is used and instruction has multiple uses

Summary: This allows to convert any SExt to a ZExt when we know none of the extended bits are used, specially in cases where there are multiple uses of the value.

Reviewers: dmgreen, eli.friedman, spatel, lebedev.ri, nikic

Reviewed By: lebedev.ri, nikic

Subscribers: hiraditya, dmgreen, craig.topper, llvm-commits

Tags: #llvm

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

4 years ago[CodeGen] Replace calls to getVectorNumElements() in DAGTypeLegalizer::SetSplitVector
David Sherwood [Fri, 3 Jul 2020 12:27:21 +0000 (13:27 +0100)]
[CodeGen] Replace calls to getVectorNumElements() in DAGTypeLegalizer::SetSplitVector

In DAGTypeLegalizer::SetSplitVector I have changed calls in the assert
from getVectorNumElements() to getVectorElementCount(), since this
code path works for both fixed and scalable vectors.

This fixes up one warning in the test:

  sve-sext-zext.ll

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

4 years ago[WebAssembly][NFC] Simplify vector shift lowering and add tests
Thomas Lively [Fri, 10 Jul 2020 07:18:59 +0000 (00:18 -0700)]
[WebAssembly][NFC] Simplify vector shift lowering and add tests

This patch builds on 0d7286a652 by simplifying the code for detecting
splat values and adding new tests demonstrating the lowering of
splatted absolute value shift amounts, which are common in code
generated by Halide. The lowering is very bad right now, but
subsequent patches will improve it considerably. The tests will be
useful for evaluating the improvements in those patches.

Reviewed By: aheejin

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

4 years ago[MLIR][SPIRVToLLVM] Conversion of SPIR-V struct type without offset
George Mitenkov [Thu, 9 Jul 2020 21:53:15 +0000 (00:53 +0300)]
[MLIR][SPIRVToLLVM] Conversion of SPIR-V struct type without offset

This patch introduces type conversion for SPIR-V structs. Since
handling offset case requires thorough testing, it was left out
for now. Hence, only structs with no offset are currently
supported. Also, structs containing member decorations cannot
be translated.

Reviewed By: antiagainst

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

4 years ago[CodeGen] Replace calls to getVectorNumElements() in SelectionDAG::SplitVector
David Sherwood [Mon, 6 Jul 2020 09:17:16 +0000 (10:17 +0100)]
[CodeGen] Replace calls to getVectorNumElements() in SelectionDAG::SplitVector

This patch replaces some invalid calls to getVectorNumElements() with calls
to getVectorMinNumElements() instead, since the code paths changed in this
patch work for both fixed and scalable vector types.

Fixes warnings in this test:

  sve-sext-zext.ll

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

4 years ago[LLDB] Update AArch64 Dwarf and EH frame register numbers
Muhammad Omair Javaid [Tue, 7 Jul 2020 20:22:35 +0000 (01:22 +0500)]
[LLDB] Update AArch64 Dwarf and EH frame register numbers

This patch updates ARM64_ehframe_Registers.h and ARM64_DWARF_Registers.h
with latest register numbers in line with AArch64 SVE support.

For refernce take a look at "DWARF for the ARMĀ® 64-bit Architecture (AArch64)
with SVE support" manual from Arm.
Version used: abi_sve_aadwarf_100985_0000_00_en.pdf

4 years agoAdd diagnostic option backing field for -fansi-escape-codes
Daniel Grumberg [Tue, 30 Jun 2020 13:25:23 +0000 (14:25 +0100)]
Add diagnostic option backing field for -fansi-escape-codes

Summary:
Keep track of -fansi-escape-codes in DiagnosticOptions and move the
option to the new option parsing system.

Depends on D82860

Reviewers: Bigcheese

Subscribers: dexonsmith, cfe-commits

Tags: #clang

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

4 years ago[RISCV] Refactor FeatureRVCHints to make ProcessorModel more intuitive
Zakk Chen [Thu, 30 Apr 2020 10:24:19 +0000 (03:24 -0700)]
[RISCV] Refactor FeatureRVCHints to make ProcessorModel more intuitive

Reviewers: luismarques, asb, evandro

Reviewed By: asb, evandro

Tags: #llvm

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

4 years ago[clangd] Factor out some helper functions related to heuristic resolution in TargetFinder
Nathan Ridge [Wed, 8 Jul 2020 06:43:38 +0000 (02:43 -0400)]
[clangd] Factor out some helper functions related to heuristic resolution in TargetFinder

Summary:
Two helpers are introduced:

 * Some of the logic previously in TargetFinder::Visit*() methods is
   factored out into resolveDependentExprToDecls().

 * Some of the logic in getMembersReferencedViaDependentName() is
   factored out into resolveTypeToRecordDecl().

D82739 will build on this and use these functions in new ways.

Reviewers: hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[CodeMoverUtils] Move OrderedInstructions to CodeMoverUtils
SharmaRithik [Fri, 10 Jul 2020 05:46:06 +0000 (11:16 +0530)]
[CodeMoverUtils] Move OrderedInstructions to CodeMoverUtils
Summary: This patch moves OrderedInstructions to CodeMoverUtils as It was
the only place where OrderedInstructions is required.
Authored By: RithikSharma
Reviewer: Whitney, bmahjour, etiotto, fhahn, nikic
Reviewed By: Whitney, nikic
Subscribers: mgorny, hiraditya, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D80643

4 years ago[llvm-symbolizer][test] Fix options-from-env.test
Fangrui Song [Fri, 10 Jul 2020 05:39:56 +0000 (22:39 -0700)]
[llvm-symbolizer][test] Fix options-from-env.test

options-from-env.test (D71668) does not test it intended to test:
`llvm-symbolizer 0x20112f` prints `0x20112f` in the absence of an environment
variable.

4 years ago[NFC] Separate bitcode reading for FUNC_CODE_INST_CMPXCHG(_OLD)
Guillaume Chatelet [Fri, 10 Jul 2020 04:27:39 +0000 (04:27 +0000)]
[NFC] Separate bitcode reading for FUNC_CODE_INST_CMPXCHG(_OLD)

This is preparatory work to unable storing alignment for AtomicCmpXchgInst.
See D83136 for context and bug: https://bugs.llvm.org/show_bug.cgi?id=27168

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

4 years ago[demangler] More properly save and restore the template parameter state
Richard Smith [Fri, 10 Jul 2020 04:08:39 +0000 (21:08 -0700)]
[demangler] More properly save and restore the template parameter state
when parsing an encoding.

4 years ago[CMake][Fuchsia] Move runtimes to outer scope
Petr Hosek [Fri, 10 Jul 2020 04:07:44 +0000 (21:07 -0700)]
[CMake][Fuchsia] Move runtimes to outer scope

This is needed for runtimes to be properly configured, addressing an
issue introduced in 53e38c85.

4 years agoAdd Python bindings guide.
Stella Laurenzo [Fri, 10 Jul 2020 00:35:05 +0000 (17:35 -0700)]
Add Python bindings guide.

Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, Kayjukh, jurahul, msifontes

Tags: #mlir

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

4 years ago[demangler] Don't allow the template parameters from the <encoding> in a
Richard Smith [Fri, 10 Jul 2020 03:36:04 +0000 (20:36 -0700)]
[demangler] Don't allow the template parameters from the <encoding> in a
<local-name> to leak out into later parts of the name.

This caused us to fail to demangle certain constructs involving generic
lambdas.

4 years agoCrashTracer: clang at clang: llvm::BitstreamWriter::ExitBlock
Oliver Hunt [Fri, 10 Jul 2020 03:27:03 +0000 (20:27 -0700)]
CrashTracer: clang at clang: llvm::BitstreamWriter::ExitBlock

Add a guard for re-entering an SDiagsWriter's HandleDiagnostics
method after we've started finalizing. This is a generic catch
all for unexpected fatal errors so we don't recursive crash inside
the generic llvm error handler.

We also add logic to handle the actual error case in
llvm::~raw_fd_ostream caused by failing to clear errors before
it is destroyed.

<rdar://problem/63335596>

4 years ago[SCEV][IndVarSimplify] insert point should not be block front.
Chen Zheng [Fri, 10 Jul 2020 00:01:32 +0000 (20:01 -0400)]
[SCEV][IndVarSimplify] insert point should not be block front.

The block front may be a PHI node, inserting a cast instructions like
BitCast, PtrToInt, IntToPtr among PHIs is not right.

Reviewed By: lebedev.ri

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

4 years ago[lldb] Declare extern template instantiation to fix linking issues.
Jordan Rupprecht [Fri, 10 Jul 2020 01:38:49 +0000 (18:38 -0700)]
[lldb] Declare extern template instantiation to fix linking issues.

NativeProcessELF::GetELFImageInfoAddress<...>() is declared in NativeProcessELF.h, but only defined in NativeProcessELF.cpp. Via some optimized builds (e.g. thinlto), this instantiation may be removed when it is used in a different TU (NativeProcessELFTest.cpp).

4 years ago[StackSafety,NFC] Reduce FunctionSummary size
Vitaly Buka [Fri, 10 Jul 2020 01:00:44 +0000 (18:00 -0700)]
[StackSafety,NFC] Reduce FunctionSummary size

Most compiler infocations will not need ParamAccess,
so we can optimize memory usage there with smaller unique_ptr
instead of empty vector.
Suggested in D80908 review.

Reviewed By: tejohnson

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

4 years ago[Sanitizer] Update macOS version checking
Julian Lettner [Tue, 30 Jun 2020 20:19:25 +0000 (13:19 -0700)]
[Sanitizer] Update macOS version checking

Support macOS 11 in our runtime version checking code and update
`GetMacosAlignedVersionInternal()` accordingly.  This follows the
implementation of `Triple::getMacOSXVersion()` in the Clang driver.

Reviewed By: delcypher

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

4 years agoPR46648: Do not eagerly instantiate default arguments for a generic
Richard Smith [Thu, 9 Jul 2020 21:11:21 +0000 (14:11 -0700)]
PR46648: Do not eagerly instantiate default arguments for a generic
lambda when instantiating a call operator specialization.

We previously incorrectly thought that such substitution was happening
in the context of substitution into a local scope, which is a context
where we should perform eager default argument instantiation.

4 years agoPush parameters into the local instantiation scope before instantiating
Richard Smith [Thu, 9 Jul 2020 21:57:30 +0000 (14:57 -0700)]
Push parameters into the local instantiation scope before instantiating
a default argument.

Default arguments can (after recent language changes) refer to
parameters of the same function. Make sure they're added to the local
instantiation scope before transforming a default argument so that we
can remap such references to them properly.

4 years agoMove default argument instantiation to SemaTemplateInstantiateDecl.cpp.
Richard Smith [Thu, 9 Jul 2020 21:31:19 +0000 (14:31 -0700)]
Move default argument instantiation to SemaTemplateInstantiateDecl.cpp.

No functionality change intended.

4 years ago[MLIR][SPIRV] Support two memory access attributes in OpCopyMemory.
ergawy [Thu, 9 Jul 2020 23:08:51 +0000 (19:08 -0400)]
[MLIR][SPIRV] Support two memory access attributes in OpCopyMemory.

This commit augments spv.CopyMemory's implementation to support 2 memory
access operands. Hence, more closely following the spec. The following
changes are introduces:

- Customize logic for spv.CopyMemory serialization and deserialization.
- Add 2 additional attributes for source memory access operand.

Reviewed By: antiagainst

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

4 years ago[AArch64][GlobalISel] Add more specific debug info tests for 613f12dd8e2403f5630ab299...
Amara Emerson [Fri, 10 Jul 2020 00:04:09 +0000 (17:04 -0700)]
[AArch64][GlobalISel] Add more specific debug info tests for 613f12dd8e2403f5630ab299d2a1bb2cb111ead1.

As requested, these tests check for specific debug locs on the output of the
legalizer. The only one that I couldn't write was for moreElementsVector, which
AFAICT we don't trigger on AArch64.

4 years ago[NFC] Derive from PassInfoMixin for no-op/printing passes
Arthur Eubanks [Thu, 9 Jul 2020 23:49:48 +0000 (16:49 -0700)]
[NFC] Derive from PassInfoMixin for no-op/printing passes

PassInfoMixin should be used for all NPM passes, rater than a custom
`name()`.

This caused ambiguous references in LegacyPassManager.cpp, so had to
remove "using namespace llvm::legacy" and move some things around.

The passes had to be moved to the llvm namespace, or else they would get
printed as "(anonymous namespace)::FooPass".

Reviewed By: ychen, asbirlea

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

4 years ago[NFC] Change getEntryForPercentile to be a static function in ProfileSummaryBuilder.
Wei Mi [Wed, 8 Jul 2020 18:19:59 +0000 (11:19 -0700)]
[NFC] Change getEntryForPercentile to be a static function in ProfileSummaryBuilder.

Change file static function getEntryForPercentile to be a static member function
in ProfileSummaryBuilder so it can be used by other files.

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

4 years ago[NFC] Extract the code to write instr profile into function writeInstrProfile
Wei Mi [Thu, 9 Jul 2020 23:12:43 +0000 (16:12 -0700)]
[NFC] Extract the code to write instr profile into function writeInstrProfile

So that the function writeInstrProfile can be used in other places.

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

4 years agoInitial boiler-plate for python bindings.
Stella Laurenzo [Tue, 7 Jul 2020 06:05:46 +0000 (23:05 -0700)]
Initial boiler-plate for python bindings.

Summary:
* Native '_mlir' extension module.
* Python mlir/__init__.py trampoline module.
* Lit test that checks a message.
* Uses some cmake configurations that have worked for me in the past but likely needs further elaboration.

Subscribers: mgorny, mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, Kayjukh, jurahul, msifontes

Tags: #mlir

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

4 years ago[AArch64][SVE] Add lowering for llvm.fma.
Eli Friedman [Thu, 9 Jul 2020 00:05:56 +0000 (17:05 -0700)]
[AArch64][SVE] Add lowering for llvm.fma.

This is currently bare-bones; we aren't taking advantage of any of the
FMA variant instructions.  But it's enough to at least generate
code.

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

4 years ago[flang] ifdef to avoid warning about supposedly dead function
Eric Schweitz [Thu, 9 Jul 2020 23:08:45 +0000 (16:08 -0700)]
[flang] ifdef to avoid warning about supposedly dead function

4 years ago[flang] Fix frontend build with -DBUILD_SHARED_LIBS=On
peter klausler [Thu, 9 Jul 2020 18:08:41 +0000 (11:08 -0700)]
[flang] Fix frontend build with -DBUILD_SHARED_LIBS=On

Fix fronted shared library builds by eliminating dependences of
the parser on other component libraries, moving some code around that
wasn't in the right library, and making some dependences
explicit in the CMakeLists.txt files.  The lowering library
does not yet build as a shared library due to some undefined
names.

Reviewed By: tskeith

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

4 years agoRevert "[Lexer] Fix missing coverage line after #endif"
Zequan Wu [Thu, 9 Jul 2020 22:49:56 +0000 (15:49 -0700)]
Revert "[Lexer] Fix missing coverage line after #endif"

This reverts commit 672ae621e91ff5cdefb2535bdd530641536685ea.

4 years ago[flang] Fix a crash when creating generics from a copy
Pete Steinfeld [Thu, 9 Jul 2020 16:38:22 +0000 (09:38 -0700)]
[flang] Fix a crash when creating generics from a copy

Summary:
When a program unit creates a generic based on one defined in a module, the
function `CopyFrom()` is called to create the `GenericDetails`.  This function
copied the `specificProcs_` but failed to copy the `bindingNames_`.  If the
function `CheckGeneric()` then gets called, it tries to index into the empty
binding names and causes the crash.

I fixed this by adding code to `CopyFrom()` to copy the binding names.

I also added a test that causes the crash.

Reviewers: klausler, tskeith, DavidTruby

Subscribers: llvm-commits

Tags: #llvm, #flang

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

4 years agoSwitch to using -debug-info-kind=constructor as default (from =limited)
Amy Huang [Wed, 29 Apr 2020 23:21:05 +0000 (16:21 -0700)]
Switch to using -debug-info-kind=constructor as default (from =limited)

Summary:
-debug-info-kind=constructor reduces the amount of class debug info that
is emitted; this patch switches to using this as the default.

Constructor homing emits the complete type info for a class only when the
constructor is emitted, so it is expected that there will be some classes that
are not defined in the debug info anymore because they are never constructed,
and we shouldn't need debug info for these classes.

I compared the PDB files for clang, and there are 273 class types that are defined with `=limited`
but not with `=constructor` (out of ~60,000 total class types).
We've looked at a number of the types that are no longer defined with =constructor. The vast
majority of cases are something like class A is used as a parameter in a member function of
some other class B, which is emitted. But the function that uses class A is never called, and class A
is never constructed, and therefore isn't emitted in the debug info.

Bug: https://bugs.llvm.org/show_bug.cgi?id=46537

Subscribers: aprantl, cfe-commits, lldb-commits

Tags: #clang, #lldb

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

4 years ago[Lexer] Fix missing coverage line after #endif
Zequan Wu [Thu, 9 Jul 2020 21:56:06 +0000 (14:56 -0700)]
[Lexer] Fix missing coverage line after #endif

Summary: bug reported here: https://bugs.llvm.org/show_bug.cgi?id=46660

Reviewers: vsk, efriedma, arphaman

Reviewed By: vsk

Subscribers: dexonsmith, cfe-commits

Tags: #clang

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

4 years ago[PowerPC][Power10] Add Instruction definition/MC Tests for Load/Store Rightmost VSX...
Albion Fung [Thu, 9 Jul 2020 22:03:41 +0000 (17:03 -0500)]
[PowerPC][Power10] Add Instruction definition/MC Tests for Load/Store Rightmost VSX Vector

This patch adds the instruction definitions and the assembly/disassembly
tests for the Load/Store VSX Vector Rightmose instructions.

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

4 years ago[FileCheck] Improve -dump-input documentation
Joel E. Denny [Thu, 9 Jul 2020 21:31:31 +0000 (17:31 -0400)]
[FileCheck] Improve -dump-input documentation

Document the default of `fail` in `-help`.  Extend `-dump-input=help`
to help users find related command-line options, but let `-help`
provide their full documentation.

Reviewed By: probinson

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

4 years agoRecommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T bits in X86TargetParser...
Craig Topper [Thu, 9 Jul 2020 21:52:16 +0000 (14:52 -0700)]
Recommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T bits in X86TargetParser.def."

This time without the change to make operator| use operator&=.
That seems to be the source of the gcc 5.3 miscompile.

Original commit message:
These represent the same thing but 64BIT only showed up from
getHostCPUFeatures providing a list of featuers to clang. While
EM64T showed up from getting the features for a named CPU.

EM64T didn't have a string specifically so it would not be passed
up to clang when getting features for a named CPU. While 64bit
needed a name since that's how it is index.

Merge them by filtering 64bit out before sending features to clang
for named CPUs.

4 years ago[AMDGPU] Return restricted number of regs from TTI
Stanislav Mekhanoshin [Thu, 18 Jun 2020 23:32:17 +0000 (16:32 -0700)]
[AMDGPU] Return restricted number of regs from TTI

This is practically NFC at the moment because nothing really
asks the real number or does anything useful with it.

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

4 years ago[DAGCombiner] convert if-chain in store merging to switch; NFC
Sanjay Patel [Thu, 9 Jul 2020 15:53:51 +0000 (11:53 -0400)]
[DAGCombiner] convert if-chain in store merging to switch; NFC

4 years ago[DAGCombiner] add helper function for store merging of loaded values; NFC
Sanjay Patel [Thu, 9 Jul 2020 15:42:52 +0000 (11:42 -0400)]
[DAGCombiner] add helper function for store merging of loaded values; NFC

4 years ago[DAGCombiner] add helper function for store merging of extracts; NFC
Sanjay Patel [Thu, 9 Jul 2020 14:33:31 +0000 (10:33 -0400)]
[DAGCombiner] add helper function for store merging of extracts; NFC

4 years ago[DAGCombiner] add helper function for store merging of constants; NFC
Sanjay Patel [Thu, 9 Jul 2020 14:02:16 +0000 (10:02 -0400)]
[DAGCombiner] add helper function for store merging of constants; NFC

4 years ago[DAGCombiner] add helper function to manage list of consecutive stores; NFC
Sanjay Patel [Wed, 8 Jul 2020 21:09:58 +0000 (17:09 -0400)]
[DAGCombiner] add helper function to manage list of consecutive stores; NFC

4 years ago[PredicateInfo] Print RenamedOp (NFC)
Nikita Popov [Thu, 9 Jul 2020 20:58:45 +0000 (22:58 +0200)]
[PredicateInfo] Print RenamedOp (NFC)

Make it easier to debug renaming issues.

4 years agoRevert "[CallGraph] Ignore callback uses"
Roman Lebedev [Thu, 9 Jul 2020 21:00:26 +0000 (00:00 +0300)]
Revert "[CallGraph] Ignore callback uses"

This likely has broken test/Transforms/Attributor/IPConstantProp/ tests.
http://45.33.8.238/linux/22502/step_12.txt

This reverts commit 205dc0922d5f7305226f7457fcbcb4224c92530c.

4 years agoTemporarily Revert "Fix [-Werror,-Wsign-compare] warnings arising from subsection...
Eric Christopher [Thu, 9 Jul 2020 20:46:59 +0000 (13:46 -0700)]
Temporarily Revert "Fix [-Werror,-Wsign-compare] warnings arising from subsection symbols patch."
as it's causing build errors with another clang so I'll need to approach
this differently.

This reverts commit c2827083166cd5150232d8fd3ada3cf8fa8c9ac3.

4 years agoTemporarily Revert "[PowerPC] Split s34imm into two types"
Eric Christopher [Thu, 9 Jul 2020 20:28:22 +0000 (13:28 -0700)]
Temporarily Revert "[PowerPC] Split s34imm into two types"
as it was failing in Release+Asserts mode with an assert.

This reverts commit bd2068031121adf5a0e28d9306a1741d6f0bbd87.

4 years agoRevert D83013 "[LPM] Port CGProfilePass from NPM to LPM"
Fangrui Song [Thu, 9 Jul 2020 20:34:04 +0000 (13:34 -0700)]
Revert D83013 "[LPM] Port CGProfilePass from NPM to LPM"

This reverts commit c92a8c0a0f68fbbb23e3fdde071007e63a552e82.

It breaks builds and has unaddressed review comments.

4 years ago[CallGraph] Ignore callback uses
Giorgis Georgakoudis [Wed, 8 Jul 2020 05:43:24 +0000 (22:43 -0700)]
[CallGraph] Ignore callback uses

Summary:
Ignore callback uses when adding a callback function
in the CallGraph. Callback functions are typically
created when outlining, e.g. for OpenMP, so they have
internal scope and linkage. They should not be added
to the ExternalCallingNode since they are only callable
by the specified caller function at creation time.

A CGSCC pass, such as OpenMPOpt, may need to update
the CallGraph by adding a new outlined callback function.
Without ignoring callback uses, adding breaks CGSCC
pass restrictions and results to a broken CallGraph.

Reviewers: jdoerfert

Subscribers: hiraditya, sstefan1, llvm-commits

Tags: #llvm

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

4 years ago[llvm-reduce] Reducing attributes
Roman Lebedev [Thu, 9 Jul 2020 20:06:59 +0000 (23:06 +0300)]
[llvm-reduce] Reducing attributes

Summary:
This handles all three places where attributes could currently be - `GlobalVariable`, `Function` and `CallBase`.
For last two, it correctly handles all three possible attribute locations (return value, arguments and function itself)

There was a previous attempt at it D73853,
which was committed in rGfc62b36a000681c01e993242b583c5ec4ab48a3c,
but then reverted all the way back in rGb12176d2aafa0ccb2585aa218fc3b454ba84f2a9
due to some (osx?) test failures.

Reviewers: nickdesaulniers, dblaikie, diegotf, george.burgess.iv, jdoerfert, Tyker, arsenm

Reviewed By: nickdesaulniers

Subscribers: wdng, MaskRay, arsenm, llvm-commits, mgorny

Tags: #llvm

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

4 years ago[NFC][llvm-reduce] Purify for_each usage in Operand Bundles into range-based for...
Roman Lebedev [Thu, 9 Jul 2020 20:06:49 +0000 (23:06 +0300)]
[NFC][llvm-reduce] Purify for_each usage in Operand Bundles into range-based for loop

Summary:
As per lengthy/heated disscussion in D83351,
and CodingStandards D83431.

Reviewers: dblaikie, nickdesaulniers

Reviewed By: nickdesaulniers

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[NFCI][llvm-reduce] OperandBundleCounter: drop pointless constructor
Roman Lebedev [Thu, 9 Jul 2020 20:06:30 +0000 (23:06 +0300)]
[NFCI][llvm-reduce] OperandBundleCounter: drop pointless constructor

Reviewers: nickdesaulniers, dblaikie

Reviewed By: nickdesaulniers

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[Docs] CodingStandards: for_each is discouraged
Roman Lebedev [Thu, 9 Jul 2020 20:06:20 +0000 (23:06 +0300)]
[Docs] CodingStandards: for_each is discouraged

Summary:
As per disscussion in D83351, using `for_each` is potentially confusing,
at least in regards to inconsistent style (there's less than 100 `for_each`
usages in LLVM, but ~100.000 `for` range-based loops

Therefore, it should be avoided.

Reviewers: dblaikie, nickdesaulniers

Reviewed By: dblaikie, nickdesaulniers

Subscribers: hubert.reinterpretcast, llvm-commits

Tags: #llvm

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

4 years agoRevert "[InstCombine] Lower infinite combine loop detection thresholds"
Roman Lebedev [Thu, 9 Jul 2020 20:04:26 +0000 (23:04 +0300)]
Revert "[InstCombine] Lower infinite combine loop detection thresholds"

And just after 3 days, we have a hit in `InstCombiner::mergeStoreIntoSuccessor()`:
https://bugs.llvm.org/show_bug.cgi?id=46661

To be recommitted once that is addressed.

This reverts commit cd7f8051ac7b6f08734102446482c1e5d951bfcc.

4 years ago[CMake][Fuchsia] Support for building with MSVC
Petr Hosek [Fri, 31 Jan 2020 22:42:22 +0000 (14:42 -0800)]
[CMake][Fuchsia] Support for building with MSVC

This change adds the necessary flags for building the full Fuchsia
toolchain on Windows with MSVC.

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

4 years ago[LPM] Port CGProfilePass from NPM to LPM
Zequan Wu [Wed, 8 Jul 2020 19:30:28 +0000 (12:30 -0700)]
[LPM] Port CGProfilePass from NPM to LPM

Reviewers: hans, chandlerc!, asbirlea, nikic

Reviewed By: hans, nikic

Subscribers: steven_wu, dexonsmith, nikic, echristo, void, zhizhouy, cfe-commits, aeubanks, MaskRay, jvesely, nhaehnle, hiraditya, kerbowa, llvm-commits

Tags: #llvm, #clang

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

4 years ago[SVE] Remove calls to VectorType::getNumElements from CodeGen
Christopher Tetreault [Thu, 9 Jul 2020 18:51:03 +0000 (11:51 -0700)]
[SVE] Remove calls to VectorType::getNumElements from CodeGen

Reviewers: efriedma, fpetrogalli, sdesmalen, RKSimon, arsenm

Reviewed By: RKSimon

Subscribers: wdng, tschuett, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

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

4 years ago[InstSimplify] Re-enable select ?, undef, X -> X transform when X is provably not...
Craig Topper [Thu, 9 Jul 2020 19:20:50 +0000 (12:20 -0700)]
[InstSimplify] Re-enable select ?, undef, X -> X transform when X is provably not poison

Follow up from the transform being removed in D83360. If X is probably not poison, then the transform is safe.

Still plan to remove or adjust the code from ConstantFolding after this.

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

4 years ago[libc++] Get rid of the %{libcxx_src_root} substitution
Louis Dionne [Thu, 9 Jul 2020 19:15:26 +0000 (15:15 -0400)]
[libc++] Get rid of the %{libcxx_src_root} substitution

This reduces the set of substitutions required to run the test suite.

4 years ago[Clang][Driver] Recognize the AIX OBJECT_MODE environment setting
David Tenty [Thu, 9 Jul 2020 19:10:19 +0000 (15:10 -0400)]
[Clang][Driver] Recognize the AIX OBJECT_MODE environment setting

Summary:
AIX uses an environment variable called OBJECT_MODE to indicate to
utilities in the toolchain whether they should be operating in 32-bit or
64-bit mode. This patch makes the clang driver recognize the current
OBJECT_MODE setting when we are operating with an AIX target and adds a
custom diagnostic for invalid settings.

For more details about OBJECT_MODE on AIX see:

https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.3/com.ibm.xlc1313.aix.doc/compiler_ref/tusetenv1.html
https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.3/com.ibm.xlc1313.aix.doc/compiler_ref/opt_3264.html

Reviewers: stevewan, hubert.reinterpretcast, ShuhongL, jasonliu

Reviewed By: hubert.reinterpretcast, jasonliu

Subscribers: jasonliu, cfe-commits

Tags: #clang

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

4 years ago[MLIR] IR changes to add yield semantics for affine.if and affine.parallel
Jeremy Bruestle [Thu, 9 Jul 2020 19:02:20 +0000 (12:02 -0700)]
[MLIR] IR changes to add yield semantics for affine.if and affine.parallel

Reviewed By: bondhugula, flaub

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

4 years ago[AST][test] Add regression test forPointerExprEvaluator::VisitCXXNewExpr
Jan Korous [Thu, 9 Jul 2020 19:06:01 +0000 (12:06 -0700)]
[AST][test] Add regression test forPointerExprEvaluator::VisitCXXNewExpr

This assert was failing:
assert(CAT && "unexpected type for array initializer");

until this patch landed:
9a7eda1bece887ca9af085d79fe6e4fb8826dcda
PR45350: Handle unsized array CXXConstructExprs in constant evaluation

4 years ago[NFC][AArch64] Refactor getArgumentPopSize
Kyungwoo Lee [Thu, 9 Jul 2020 18:42:50 +0000 (11:42 -0700)]
[NFC][AArch64] Refactor getArgumentPopSize

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

4 years ago[LLDB/Reproducers] Add flag to avoid installing the signal handler.
Jonas Devlieghere [Thu, 9 Jul 2020 18:47:56 +0000 (11:47 -0700)]
[LLDB/Reproducers] Add flag to avoid installing the signal handler.

There are bugs where you don't want the signal handler to trigger, most
notably when that will cause another crash. Examples of this are lldb
running out of memory or a bug in the reproducer generation code. This
adds an escape hatch trough a (developer oriented) flag to not install
the signal handler.

rdar://problem/65149595

Differential revision: https://reviews.llvm.org/D83496

4 years ago[lldb/Reproducers] Rename developer-oriented reproducer flags.
Jonas Devlieghere [Thu, 9 Jul 2020 17:35:16 +0000 (10:35 -0700)]
[lldb/Reproducers] Rename developer-oriented reproducer flags.

This is a preparatory rename of the developer facing reproducer flags.

reproducer-skip-version-check -> reproducer-no-version-check
reproducer-auto-generate      -> reproducer-generate-on-quit

4 years ago[NFC][test] Adding fastcc test case for promoted 16-bit integer bitcasts.
Puyan Lotfi [Thu, 9 Jul 2020 18:35:00 +0000 (11:35 -0700)]
[NFC][test] Adding fastcc test case for promoted 16-bit integer bitcasts.

The following: https://reviews.llvm.org/D82552

fixed an assert in the SelectionDag ISel legalizer for some CCs on armv7.

I noticed that this fix also fixes the assert when using fastcc, so I am
adding a fastcc regression test here.

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

4 years ago[OPENMP50] extend array section for stride (Parsing/Sema/AST)
cchen [Thu, 9 Jul 2020 18:27:32 +0000 (13:27 -0500)]
[OPENMP50] extend array section for stride (Parsing/Sema/AST)

Reviewers: ABataev, jdoerfert

Reviewed By: ABataev

Subscribers: yaxunl, guansong, arphaman, sstefan1, cfe-commits, sandoval, dreachem

Tags: #clang

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

4 years ago[libc++] The enable_experimental Lit feature should be False by default
Louis Dionne [Thu, 9 Jul 2020 18:21:24 +0000 (14:21 -0400)]
[libc++] The enable_experimental Lit feature should be False by default

This preserves existing behavior before f5f58f1f733b.

4 years agoFix [-Werror,-Wsign-compare] warnings arising from subsection symbols patch.
Eric Christopher [Thu, 9 Jul 2020 18:13:03 +0000 (11:13 -0700)]
Fix [-Werror,-Wsign-compare] warnings arising from subsection symbols patch.

4 years ago[InstSimplify] Don't fold vectors of partial undef in SimplifySelectInst if the non...
Craig Topper [Thu, 9 Jul 2020 18:01:11 +0000 (11:01 -0700)]
[InstSimplify] Don't fold vectors of partial undef in SimplifySelectInst if the non-undef element value might produce poison

We can't fold to the non-undef value unless we know it isn't poison. So check each element with isGuaranteedNotToBeUndefOrPoison. This currently rules out all constant expressions.

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

4 years ago[libc++] Move the enable_experimental Lit param to the DSL
Louis Dionne [Thu, 9 Jul 2020 17:42:32 +0000 (13:42 -0400)]
[libc++] Move the enable_experimental Lit param to the DSL

4 years ago[X86] Immediately call LowerShift from lowerBuildVectorToBitOp.
Craig Topper [Thu, 9 Jul 2020 17:41:03 +0000 (10:41 -0700)]
[X86] Immediately call LowerShift from lowerBuildVectorToBitOp.

If we don't immediately lower the vector shift, the splat
constant vector we created may get turned into a constant pool
load before we get around to lowering the shift. This makes it
a lot more difficult to create a shift by constant. Sometimes we
fail to see through the constant pool at all and end up trying
to lower as if it was a variable shift. This requires custom
handling and may create an unsupported vselect on pre-sse-4.1
targets. Since we're after LegalizeVectorOps we are unable to
legalize the unsupported vselect as that code is in LegalizeVectorOps
rather than LegalizeDAG.

So calling LowerShift immediately ensures that we get see the
splat constant.

Fixes PR46527.

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

4 years agoRemove unnecessary 'rm' in llvm-reduce tests
David Blaikie [Thu, 9 Jul 2020 17:48:10 +0000 (10:48 -0700)]
Remove unnecessary 'rm' in llvm-reduce tests

These were initially added to cleanup some transient/leftover files in
r372054. Now that's all cleaned up, these are no longer needed.

4 years ago[PGO][PGSO] Add profile guided size optimization to X86 ISel Lowering.
Hiroshi Yamauchi [Thu, 9 Jul 2020 17:19:00 +0000 (10:19 -0700)]
[PGO][PGSO] Add profile guided size optimization to X86 ISel Lowering.

4 years ago[X86] Directly emit X86ISD::BLENDV instead of VSELECT in a few places that were emitt...
Craig Topper [Thu, 9 Jul 2020 17:28:42 +0000 (10:28 -0700)]
[X86] Directly emit X86ISD::BLENDV instead of VSELECT in a few places that were emitting sign bit tests.

Technically a VSELECT expects a vector of all 1s or 0s elements
for its condition. But we aren't guaranteeing that the sign bit
and the non sign bits match in these locations. So we should use
BLENDV which is more relaxed.

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

4 years ago[PowerPC] Fix test case from beb52b12cb17
Stefan Pintilie [Thu, 9 Jul 2020 17:26:53 +0000 (12:26 -0500)]
[PowerPC] Fix test case from beb52b12cb17

Forgot to add the REQUIRES ppc line to the test.

4 years ago[libc++] Clean up some outdated documentation about running libc++ tests
Louis Dionne [Thu, 9 Jul 2020 17:35:01 +0000 (13:35 -0400)]
[libc++] Clean up some outdated documentation about running libc++ tests

The documentation is still awfully outdated, but it's a bit better at least.

4 years ago[lldb/Function] Reflow doxygen comments for member variables, NFC
Vedant Kumar [Thu, 9 Jul 2020 17:36:48 +0000 (10:36 -0700)]
[lldb/Function] Reflow doxygen comments for member variables, NFC

As suggested in the review for https://reviews.llvm.org/D83359.

4 years ago[Function] Lock the function when parsing call site info
Vedant Kumar [Tue, 7 Jul 2020 23:54:09 +0000 (16:54 -0700)]
[Function] Lock the function when parsing call site info

Summary:
DWARF-parsing methods in SymbolFileDWARF which update module state
typically take the module lock. ParseCallEdgesInFunction doesn't do
this, but higher-level locking within lldb::Function (which owns the
storage for parsed call edges) is necessary.

The lack of locking could explain some as-of-yet unreproducible crashes
which occur in Function::GetTailCallingEdges(). In these crashes, the
`m_call_edges` vector is non-empty but contains a nullptr, which
shouldn't be possible. (If this vector is non-empty, it _must_ contain a
non-null unique_ptr.)

This may address rdar://55622443 and rdar://65119458.

Reviewers: jasonmolenda, friss, jingham

Subscribers: aprantl, lldb-commits

Tags: #lldb

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

4 years ago[ValueLattice] Simplify canTrackGlobalVariableInterprocedurally (NFC).
Florian Hahn [Thu, 9 Jul 2020 17:31:23 +0000 (18:31 +0100)]
[ValueLattice] Simplify canTrackGlobalVariableInterprocedurally (NFC).

using all_of and checking for valid users in the lambda seems more
straight forward. Also adds a comment explaining what we are checking.

4 years agoMerge TableGen files used for clang options
Daniel Grumberg [Thu, 25 Jun 2020 12:34:22 +0000 (13:34 +0100)]
Merge TableGen files used for clang options

Summary:
Putting all the options in the same file is needed so they can be
ordered based on the dependencies between them.

Reviewers: Bigcheese, jdoerfert

Subscribers: dexonsmith, sstefan1, cfe-commits

Tags: #clang

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

4 years ago[libc++] Move the long_tests Lit feature to the DSL
Louis Dionne [Thu, 9 Jul 2020 17:25:27 +0000 (13:25 -0400)]
[libc++] Move the long_tests Lit feature to the DSL

4 years ago[libc++] Move the stdlib Lit parameter to the DSL
Louis Dionne [Thu, 9 Jul 2020 17:18:24 +0000 (13:18 -0400)]
[libc++] Move the stdlib Lit parameter to the DSL

4 years ago[libc++] Fix test failure in C++03 mode
Louis Dionne [Thu, 9 Jul 2020 17:03:00 +0000 (13:03 -0400)]
[libc++] Fix test failure in C++03 mode

4 years ago[PGO][PGSO] Add profile guided size optimization tests to X86 ISel Lowering.
Hiroshi Yamauchi [Wed, 8 Jul 2020 21:00:15 +0000 (14:00 -0700)]
[PGO][PGSO] Add profile guided size optimization tests to X86 ISel Lowering.

4 years ago[compiler-rt] [test] Allow expanding lit substitutions recursively
Sergej Jaskiewicz [Thu, 9 Jul 2020 16:46:20 +0000 (19:46 +0300)]
[compiler-rt] [test] Allow expanding lit substitutions recursively

Summary:
This allows using lit substitutions in the `COMPILER_RT_EMULATOR` variable.

(For reference, the ability to expand substitutions recursively has been introduced in https://reviews.llvm.org/D76178.)

Reviewers: phosek, compnerd

Reviewed By: compnerd

Subscribers: dberris, #sanitizers

Tags: #sanitizers

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

4 years ago[runtimes] Allow passing Lit parameters through CMake
Louis Dionne [Thu, 9 Jul 2020 15:54:09 +0000 (11:54 -0400)]
[runtimes] Allow passing Lit parameters through CMake

This allows passing parameters to the test suites without using
LLVM_LIT_ARGS. The problem is that we sometimes want to set some
Lit arguments on the CMake command line, but the Lit parameters in
a CMake cache file. If the only knob to do that is LLVM_LIT_ARGS,
the command-line entry overrides the cache one, and the parameters
set by the cache are ignored.

This fixes a current issue with the build bots that they completely
ignore the 'std' param set by Lit, because other Lit arguments are
provided via LLVM_LIT_ARGS on the CMake command-line.

4 years ago[compiler-rt] [test] Use the parent process env as base env in tests
Sergej Jaskiewicz [Thu, 9 Jul 2020 16:42:08 +0000 (19:42 +0300)]
[compiler-rt] [test] Use the parent process env as base env in tests

Summary:
Right now the lit config builds up an environment that the tests will be run in. However, it does it from scratch instead of adding new variables to the parent process environment. This may (and does) result in strange behavior when running tests with an executor (i. e. with the `COMPILER_RT_EMULATOR` CMake variable set to something), since the executor may need some of the parent process's environment variables.

Here this is fixed.

Reviewers: compnerd, phosek

Reviewed By: compnerd

Subscribers: dberris, #sanitizers

Tags: #sanitizers

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

4 years ago[lldb] Use enum constant instead of raw value
Fred Riss [Thu, 9 Jul 2020 16:43:02 +0000 (09:43 -0700)]
[lldb] Use enum constant instead of raw value

4 years ago[compiler-rt] Better Windows support for running tests in external shell
Sergej Jaskiewicz [Thu, 9 Jul 2020 16:36:15 +0000 (19:36 +0300)]
[compiler-rt] Better Windows support for running tests in external shell

Summary:
These changes are necessary to support remote running compiler-rt tests
that were compiled on Windows.

Most of the code here has been copy-pasted from other lit configs.

Why do we remove the conversions to ASCII in the crt config?

We set the `universal_newlines` argument to `True` in `Popen` instead.
This is supported in both Python 2.7 and 3, is easier
(no need to do the `str(dir.decode('ascii'))` dance) and less
error prone.

Also, this is necessary because if the config is executed on Windows,
and `execute_external` is `True`, we take the branch
`if sys.platform in ['win32'] and execute_external`,
and if we use Python 3, then the `dir` variable is a byte-like object,
not str, but the ``replace method on byte-like objects requires its
arguments to also be byte-like objects, which is incompatible with
Python 2 etc etc.

It is a lot simpler to just work with strings in the first place, which
is achieved by setting `universal_newlines` to `True`. As far as
I understand, this way wasn't taken because of the need to support
Python <2.7, but this is not the case now.

Reviewers: compnerd, phosek, weimingz

Reviewed By: compnerd

Subscribers: dberris, #sanitizers

Tags: #sanitizers

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

4 years ago[AliasSetTracker] More precise AAInfo intersection check
Nikita Popov [Wed, 8 Jul 2020 20:28:29 +0000 (22:28 +0200)]
[AliasSetTracker] More precise AAInfo intersection check

The code currently checks whether the intersection has one of TBAA,
Scope or NoAlias unset -- however, those might have already been
unset in the first place, in which case we will unnecessarily
report a change. Instead, compare the intersection result to the
original AAInfo.

This makes for a 0.5% geomean compile-time saving on CTMark.

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

4 years ago[PowerPC] Split s34imm into two types
Stefan Pintilie [Thu, 9 Jul 2020 16:28:32 +0000 (11:28 -0500)]
[PowerPC] Split s34imm into two types

Currently the instruction paddi always takes s34imm as the type for the
34 bit immediate. However, the PC Relative form of the instruction should
not produce the same fixup as the non PC Relative form.
This patch splits the s34imm type into s34imm and s34imm_pcrel so that two
different fixups can be emitted.

Reviewed By: kamaub, nemanjai

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

4 years ago[SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC).
Florian Hahn [Thu, 9 Jul 2020 16:12:17 +0000 (17:12 +0100)]
[SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC).

Some of the tests in the llvm/test/Transforms/IPConstantProp directory
actually only use -ipsccp. Those tests belong to the other (IP)SCCP
tests in llvm/test/Transforms/SCCP/ and this commits moves them there to
avoid confusion with IPConstantProp.

4 years agoRevert 51b0da73 "Recommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T bits in...
Hans Wennborg [Thu, 9 Jul 2020 15:47:35 +0000 (17:47 +0200)]
Revert 51b0da73 "Recommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T bits in X86TargetParser.def.""

It gets miscompiled with GCC 5.3, causing Clang to crash with
"error: unknown target CPU 'x86-64'"

See the llvm-commits thread for reproduction steps.

This reverts commit 51b0da731af75c68dd521e04cc576d5a611b1612.

4 years agoRefactored NumericLiteralParser to not require a Preprocessor
Dmitri Gribenko [Thu, 9 Jul 2020 15:09:57 +0000 (17:09 +0200)]
Refactored NumericLiteralParser to not require a Preprocessor

Summary:
We would like to use NumericLiteralParser in the implementation of the
syntax tree builder, and plumbing a preprocessor there seems
inconvenient and superfluous.

Reviewers: eduucaldas

Reviewed By: eduucaldas

Subscribers: gribozavr2, cfe-commits

Tags: #clang

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