| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
invalid.
This fixes use-after-free bugs that will arise with any interesting use
of SCEV.
I've added a dedicated test that works diligently to trigger these kinds
of bugs in the new pass manager and also checks for them explicitly as
well as triggering ASan failures when things go squirly.
llvm-svn: 291426
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This issue clarifies how deduction proceeds past a non-trailing function
parameter pack. Essentially, the pack itself is skipped and consumes no
arguments (except for those implied by an explicitly-specified template
arguments), and nothing is deduced from it. As a small fix to the standard's
rule, we do not allow subsequent deduction to change the length of the function
parameter pack (by preventing extension of the explicitly-specified pack if
present, and otherwise deducing all contained packs to empty packs).
llvm-svn: 291425
|
| |
|
|
| |
llvm-svn: 291424
|
| |
|
|
|
|
|
| |
computeInterleaveCount() is not defined/used and is therefore removed.
Review: Davide Italiano
llvm-svn: 291423
|
| |
|
|
|
|
|
| |
Bots seem happy with `diagnose_if` so far, so I'm optimistically adding
release notes for it.
llvm-svn: 291422
|
| |
|
|
|
|
|
| |
not excluding ourselves when checking if any equivalent stores
exist.
llvm-svn: 291421
|
| |
|
|
| |
llvm-svn: 291420
|
| |
|
|
|
|
| |
A future patch will conver it back to BLENDM if its beneficial to register allocation.
llvm-svn: 291419
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`diagnose_if` can be used to have clang emit either warnings or errors
for function calls that meet user-specified conditions. For example:
```
constexpr int foo(int a)
__attribute__((diagnose_if(a > 10, "configurations with a > 10 are "
"expensive.", "warning")));
int f1 = foo(9);
int f2 = foo(10); // warning: configuration with a > 10 are expensive.
int f3 = foo(f2);
```
It currently only emits diagnostics in cases where the condition is
guaranteed to always be true. So, the following code will emit no
warnings:
```
constexpr int bar(int a) {
foo(a);
return 0;
}
constexpr int i = bar(10);
```
We hope to support optionally emitting diagnostics for cases like that
(and emitting runtime checks) in the future.
Release notes will appear shortly. :)
Differential Revision: https://reviews.llvm.org/D27424
llvm-svn: 291418
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
By default, darwin requires a definition for weak interface functions at
link time. Adding the '-U' link flag with each weak function allows these
weak interface functions to be used without definitions, which mirrors
behavior on linux and windows.
Reviewers: compnerd, eugenis
Subscribers: kubabrecka, mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D28203
llvm-svn: 291417
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lambda expressions.
Add a visitor for lambda expressions to RecordExprEvaluator in ExprConstant.cpp that creates an empty APValue of Struct type to represent the closure object. Additionally, add a LambdaExpr visitor to the TemporaryExprEvaluator that forwards constant evaluation of immediately-called-lambda-expressions to the one in RecordExprEvaluator through VisitConstructExpr.
This patch supports:
constexpr auto ID = [] (auto a) { return a; };
static_assert(ID(3.14) == 3.14);
static_assert([](auto a) { return a + 1; }(10) == 11);
Lambda captures are still not supported for constexpr lambdas.
llvm-svn: 291416
|
| |
|
|
|
|
|
|
| |
vselects of all ones and all zeros.
Previously we emitted a VPTERNLOG and a separate masked move.
llvm-svn: 291415
|
| |
|
|
|
|
|
|
| |
This patch moves convertToUnixPathSeparator from LLD to LLVM.
Differential Revision: https://reviews.llvm.org/D28444
llvm-svn: 291414
|
| |
|
|
|
|
|
|
| |
Previously, files added using INCLUDE directive weren't added
to reproduce archives. In this patch, I defined a function to
open a file and use that from Driver and LinkerScript.
llvm-svn: 291413
|
| |
|
|
|
|
| |
The test-suite bots are still failing even after r291410's fix.
llvm-svn: 291412
|
| |
|
|
|
|
| |
long', not 'long'.
llvm-svn: 291411
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Check for implicit conversion sequences for non-dependent function
template parameters between deduction and substitution. The idea is to accept
as many cases as possible, on the basis that substitution failure outside the
immediate context is much more common during substitution than during implicit
conversion sequence formation.
This re-commits r290808, reverted in r290811, with a fix for handling of
explicitly-specified template argument packs.
llvm-svn: 291410
|
| |
|
|
|
|
| |
Initially reports if a constructor symbol is a copy or move constructor.
llvm-svn: 291409
|
| |
|
|
|
|
|
|
| |
This fixes ObjC exceptions on Win64 (which uses SEH), among others.
Patch by Jonathan Schleifer!
llvm-svn: 291408
|
| |
|
|
|
|
|
|
|
|
|
| |
deduction in partial ordering.
This prevents us from crashing due to attempting to instantiate the same class
template specialization definition multiple times. (Debug builds also appear to
sometimes hit the stack limit before hitting the instantiation depth limit in
this case.)
llvm-svn: 291407
|
| |
|
|
|
|
|
|
|
| |
empty string
This is used in LDC for custom boolean commandline options, setArgStr
is called with an empty string before using AddLiteralOption.
llvm-svn: 291406
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
By using stripPointerCasts we can get to the root
value and then walk down the bitcast graph
Reviewers: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28181
llvm-svn: 291405
|
| |
|
|
| |
llvm-svn: 291404
|
| |
|
|
|
|
|
|
|
|
|
|
| |
constructor.
The rule we use is that a construction of a class type T from an argument of
type U cannot use an inherited constructor if U is the same as T or is derived
from T (or if the initialization would first convert it to such a type). This
(approximately) matches the rule in use by GCC, and matches the current proposed
DR resolution.
llvm-svn: 291403
|
| |
|
|
|
|
| |
of zeroes/ones when handling sign extends of i1 without VLX.
llvm-svn: 291402
|
| |
|
|
|
|
|
|
| |
test.
This is preparation for improving a case with avx512dq.
llvm-svn: 291401
|
| |
|
|
| |
llvm-svn: 291400
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
handlers, make abandonPendingResults public API.
This should make installing asynchronous result handlers thread safe.
The abandonPendingResults method is made public so that clients can disconnect
from a remote even if they have asynchronous handlers awaing results from that
remote. The asynchronous handlers will all receive "abandoned result" errors as
their argument.
llvm-svn: 291399
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Running a Debug build of objdump -objc-meta-data with a large Mach-O file is
currently unnecessarily slow.
With some local test input, this change reduces the run time from 75-85s down
to 15-20s.
The two changes are:
Assert on pointer equality not array equality
Replace vector<pair<address, symbol>> with DenseMap<address, symbol>
Additionally, use a std::unique_ptr rather than handling the memory manually.
Patch by Dave Lee!
llvm-svn: 291398
|
| |
|
|
|
|
|
|
|
|
|
|
| |
expression-evaluator to evaluate the static-invoker.
This patch has been sitting in review hell since july 2016 and our lack of constexpr lambda support is getting embarrassing (given that I've had a branch that implements the feature (modulo *this capture) for over a year. While in Issaquah I was enjoying shamelessly trying to convince folks of the lie that this was Richard's fault ;) I won't be able to do so in Kona since I won't be attending - so I'm going to aim to have this feature be implemented by then.
I'm quite confident of the approach in this patch, which simply maps the static-invoker 'thunk' back to the corresponding call-operator (specialization).
Thanks!
llvm-svn: 291397
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Mainly translate IT block into cmp/branch for functions in comparesf2.S
Reviewers: rengolin, compnerd
Subscribers: aemerson, llvm-commits
Differential Revision: https://reviews.llvm.org/D28016
llvm-svn: 291396
|
| |
|
|
| |
llvm-svn: 291395
|
| |
|
|
|
|
| |
Silences a warning from gcc:6. NFC
llvm-svn: 291394
|
| |
|
|
| |
llvm-svn: 291393
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I noticed this problem as part of the ongoing attempt to canonicalize min/max ops in IR.
The debug output shows nodes like this:
t4: i32 = xor t2, Constant:i32<-1>
t21: i8 = setcc t4, Constant:i32<0>, setlt:ch
t14: i32 = select t21, t4, Constant:i32<-1>
And because the select is holding onto the t4 (xor) node while EmitTest creates a new
x86-specific xor node, the lowering results in:
t4: i32 = xor t2, Constant:i32<-1>
t25: i32,i32 = X86ISD::XOR t2, Constant:i32<-1>
t28: i32,glue = X86ISD::CMOV Constant:i32<-1>, t4, Constant:i8<15>, t25:1
Differential Revision: https://reviews.llvm.org/D28374
llvm-svn: 291392
|
| |
|
|
|
|
|
|
|
|
| |
The 'fast' costs should only work for shifts by uniform constants (uniform non-constant are lowered using the slow default implementation).
Logical shifts were not taking into account that we must mask the psrlw result, so the costs needed to be doubled.
Added missing AVX2/AVX512BW costs as well.
llvm-svn: 291391
|
| |
|
|
|
|
| |
XOP was prematurely matching, doubling the cost of ashr/lshr uniform shifts.
llvm-svn: 291390
|
| |
|
|
|
|
|
|
|
| |
I originally requested this to be tested in D25263 but in the end
forgot to make sure that it was done.
Differential Revision: https://reviews.llvm.org/D28289
llvm-svn: 291389
|
| |
|
|
| |
llvm-svn: 291388
|
| |
|
|
| |
llvm-svn: 291387
|
| |
|
|
| |
llvm-svn: 291386
|
| |
|
|
| |
llvm-svn: 291385
|
| |
|
|
| |
llvm-svn: 291384
|
| |
|
|
|
|
| |
masking for patterns that already use the aligned form. NFC
llvm-svn: 291383
|
| |
|
|
|
|
|
| |
This should allow clang to successfully compile libstdc++4.8's headers in C++14
mode.
llvm-svn: 291382
|
| |
|
|
| |
llvm-svn: 291381
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
APICalls allows groups of functions to be composed into an API that can be
registered as a unit with an RPC endpoint. Doing registration on a-whole API
basis (rather than per-function) allows missing API functions to be detected
early.
APICalls also allows Function membership to be tested at compile-time. This
allows clients to write static assertions that functions to be called are
members of registered APIs.
llvm-svn: 291380
|
| |
|
|
|
|
|
|
|
|
|
| |
behind
The change in r291362 was too agressive. We still need to flush at the
end of the block because function local metadata can introduce fwd
ref as well.
(Bootstrap with ThinLTO was broken)
llvm-svn: 291379
|
| |
|
|
|
|
|
|
|
| |
Tests targets will now be enabled by default when building libcxxabi out of tree
(unless turned off with LIBCXXABI_INCLUDE_TESTS=OFF).
Differential Revision: https://reviews.llvm.org/D28450
llvm-svn: 291378
|
| |
|
|
| |
llvm-svn: 291377
|