| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
| |
If there are two pointers passed to an atomic Builtin,
Clang doesn't allow the second (non-atomic) one to be qualified
with an address space.
Remove this restriction by recording the address space of passed pointers
in atomics type diagnostics.
llvm-svn: 256243
|
| |
|
|
| |
llvm-svn: 256242
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit adds SHF_ALLOC and SHF_EXECINSTR section flags to
`.text.__cxa_end_cleanup` section. This fixes a link error when we are
using integrated-as and `ld.gold` (with `-Wl,--gc-sections` and
`-Wl,--fatal-warnings`.)
Detailed Explanation:
1. There might be some problem with LLVM integrated-as. It is not
emitting any section flags for text sections. (This will be fixed in
an independent commit.)
2. `ld.gold` will skip the external symbols in the section without
SHF_ALLOC. This is the reason why `.text.__cxa_end_cleanup_impl`
section is discarded even though it is referenced by
`__cxa_end_cleanup()`.
This commit workaround the problem by specifying the section flags
explicitly.
Fix http://llvm.org/PR21292
llvm-svn: 256241
|
| |
|
|
|
|
|
| |
This fixes the 'pure virtual function called' failure with ThreadPool in a
clang-built clang. This fixes the llvm-mips-linux builder.
llvm-svn: 256240
|
| |
|
|
| |
llvm-svn: 256239
|
| |
|
|
|
|
| |
OpenMP 4.5 adds 'depend(sink:vec)' in 'ordered' directive for doacross loop synchronization. Patch adds parsing and semantic analysis for this clause.
llvm-svn: 256238
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D15414
llvm-svn: 256237
|
| |
|
|
|
|
|
|
| |
In r256077, I added printing for DIExpressions in DEBUG_VALUE comments,
but neglected to handle DW_OP_bit_piece operands. Thanks to
Mikael Holmen and Joerg Sonnenberger for spotting this.
llvm-svn: 256236
|
| |
|
|
|
|
| |
function and use for the targets that can easily support it.
llvm-svn: 256230
|
| |
|
|
| |
llvm-svn: 256229
|
| |
|
|
| |
llvm-svn: 256228
|
| |
|
|
| |
llvm-svn: 256227
|
| |
|
|
|
|
|
|
|
|
|
| |
InitMCObjectFileInfo was trying to override the triple in awkward ways.
For example, a triple specifying COFF but not Windows was forced as ELF.
This makes it easy for internal invariants to get violated, such as
those which triggered PR25912.
This fixes PR25912.
llvm-svn: 256226
|
| |
|
|
| |
llvm-svn: 256225
|
| |
|
|
|
|
|
|
| |
Use an iterator that handles an empty subprogram list.
Fixes PR25915.
llvm-svn: 256224
|
| |
|
|
| |
llvm-svn: 256223
|
| |
|
|
|
|
|
|
|
|
| |
This uses the same criteria used in CFE's CodeGenPGO to identify hot and cold
callees and uses values of inlinehint-threshold and inlinecold-threshold
respectively as the thresholds for such callees.
Differential Revision: http://reviews.llvm.org/D15245
llvm-svn: 256222
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds an option, -safe-stack-no-tls, for using normal
storage instead of thread-local storage for the unsafe stack pointer.
This can be useful when SafeStack is applied to an operating system
kernel.
http://reviews.llvm.org/D15673
Patch by Michael LeMay.
llvm-svn: 256221
|
| |
|
|
|
|
|
|
|
|
|
| |
The linker requires that a comdat section must be associated
with a another comdat section that precedes it. This
means the comdat section's name needs to use the profile name
var's name.
Patch tested by Johan Engelen.
llvm-svn: 256220
|
| |
|
|
| |
llvm-svn: 256219
|
| |
|
|
| |
llvm-svn: 256217
|
| |
|
|
|
|
|
|
| |
This flag isn't needed, or permitted, with the "ld" flavor of lld.
Also, add a basic ld commandline test.
llvm-svn: 256216
|
| |
|
|
| |
llvm-svn: 256215
|
| |
|
|
|
|
|
| |
This commit adds the 'AVRMachineFunctionInfo' class, which simply stores
basic properties about generated machine functions.
llvm-svn: 256213
|
| |
|
|
| |
llvm-svn: 256212
|
| |
|
|
| |
llvm-svn: 256211
|
| |
|
|
|
|
|
|
| |
We clarify that certain code is only executed if LSchedule is != nullptr.
Previously some of these functions have been executed, but they only passed
a nullptr through. This caused some confusion when reading the code.
llvm-svn: 256209
|
| |
|
|
|
|
|
|
| |
Besides improving the documentation and the code we now assert in case the input
is invalid (N < 0) and also do not any more return a nullptr in case USet is
empty. This should make the code more readable.
llvm-svn: 256208
|
| |
|
|
|
|
|
| |
ASan does not really do anything interesting with mincore, but this
test verifies that the function still works correctly.
llvm-svn: 256207
|
| |
|
|
| |
llvm-svn: 256206
|
| |
|
|
|
|
|
| |
This code attempts to truncate IntPtrTy to i32, which may be the same
type.
llvm-svn: 256205
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The /Brepro flag controls whether or not the compiler should embed
timestamps into the object file. Object files which do not embed
timestamps are not suitable for incremental linking but are suitable for
hermetic build systems and staged self-hosts of clang.
A normal clang spelling of this flag has been added,
-mincremental-linker-compatible.
llvm-svn: 256204
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Today, we always take into account the possibility that object files
produced by MC may be consumed by an incremental linker. This results
in us initialing fields which vary with time (TimeDateStamp) which harms
hermetic builds (e.g. verifying a self-host went well) and produces
sub-optimal code because we cannot assume anything about the relative
position of functions within a section (call sites can get redirected
through incremental linker thunks).
Let's provide an MCTargetOption which controls this behavior so that we
can disable this functionality if we know a-priori that the build will
not rely on /incremental.
llvm-svn: 256203
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is recommit of r256028 with minor fixes in unittests:
CodeGen/Mips/eh.ll
CodeGen/Mips/insn-zero-size-bb.ll
Original commit message:
When identifying blocks post-dominated by an unreachable-terminated block
in BranchProbabilityInfo, consider only the edge to the normal destination
block if the terminator is InvokeInst and let calcInvokeHeuristics() decide
edge weights for the InvokeInst.
llvm-svn: 256202
|
| |
|
|
| |
llvm-svn: 256201
|
| |
|
|
| |
llvm-svn: 256200
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a loop has a sufficiently large amount of compute instruction in its loop
body, it is unlikely that our rewrite of the loop iterators introduces large
performance changes. As Polly can also apply beneficical optimizations (such
as parallelization) to such loop nests, we mark them as profitable.
This option is currently "disabled" by default, but can be used to run
experiments. If enabled by setting it e.g. to 40 instructions, we currently
see some compile-time increases on LNT without any significant run-time
changes.
llvm-svn: 256199
|
| |
|
|
| |
llvm-svn: 256198
|
| |
|
|
| |
llvm-svn: 256197
|
| |
|
|
| |
llvm-svn: 256196
|
| |
|
|
|
|
|
| |
They have a tendency to get out of date and obscure where the value/type
is from.
llvm-svn: 256195
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X86ISD::PACKUS/PACKSS operations during DAG combine.
This patch transforms truncation between vectors of integers into
X86ISD::PACKUS/PACKSS operations during DAG combine. We don't do it in
lowering phase because after type legalization, the original truncation
will be turned into a BUILD_VECTOR with each element that is extracted
from a vector and then truncated, and from them it is difficult to do
this optimization. This greatly improves the performance of truncations
on some specific types.
Cost table is updated accordingly.
Differential revision: http://reviews.llvm.org/D14588
llvm-svn: 256194
|
| |
|
|
|
|
|
|
|
|
|
| |
When targeting COFF, it is required that a comdat section to
have a global obj with the same name as the comdat (except for
comdats with select kind to be associative). This fix makes
sure that the comdat is keyed on the data variable for COFF.
Also improved test coverage for this.
llvm-svn: 256193
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: apilipenko, reames, sanjoy, hfinkel
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D15597
llvm-svn: 256192
|
| |
|
|
|
|
|
| |
The test failed when run on a SPARC host, since it was finding the
native gcc installation by accident.
llvm-svn: 256191
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When using blocks, a byref structure is created to represent the
closure. The "byref.layout" field of this structure is an i8*. However,
some 'inline' layouts are represented as i64's, not i8*'s.
Prior to r246985 we cast the i64 'inline' layout to an i8* before
assigning it into the byref structure. This patch brings the cast back
and adds a regression test.
The original version of this patch was too invasive. This version only adds the
cast to BuildByrefLayout.
Differential Revision: http://reviews.llvm.org/D15674
rdar://23713871
llvm-svn: 256190
|
| |
|
|
| |
llvm-svn: 256189
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LiveDebugVariables unconditionally propagates all DBG_VALUE down the
dominator tree, which happens to work fine if there already is another
DBG_VALUE or the DBG_VALUE happends to describe a single-assignment vreg
but is otherwise wrong if the DBG_VALUE is coming from only one of the
predecessors.
In r255759 we introduced a proper data flow analysis scheduled after
LiveDebugVariables that correctly propagates DBG_VALUEs across basic block
boundaries. With the new pass in place, the incorrect propagation in
LiveDebugVariables can be retired witout loosing any of the benefits
where LiveDebugVariables happened to do the right thing.
llvm-svn: 256188
|
| |
|
|
|
|
|
| |
NFC
PR24563
llvm-svn: 256187
|
| |
|
|
|
|
| |
This reverts commit r256185. It breaks CodeGenObjC/fragile-arc.m.
llvm-svn: 256186
|