Duncan P. N. Exon Smith [Wed, 2 Jul 2014 17:26:39 +0000 (17:26 +0000)]
AArch64: Merge isa with dyn_cast
llvm-svn: 212194
David Majnemer [Wed, 2 Jul 2014 17:26:04 +0000 (17:26 +0000)]
Update the MSVC Compatibility document
It hasn't been updated to reflect the progress we've made. We've fuzz
tested VFTables, VBTables, layout, and RTTI data. We support lambdas
that are compatible with their scheme.
llvm-svn: 212193
Zachary Turner [Wed, 2 Jul 2014 17:24:07 +0000 (17:24 +0000)]
Start converting usages of off_t to other types.
off_t is a type which is used for file offsets. Even more
specifically, it is only used by a limited number of C APIs that
deal with files. Any usage of off_t where the variable is not
intended to be used with one of these APIs is a bug, by definition.
This patch corrects some easy mis-uses of off_t, generally by
converting them to lldb::offset_t, but sometimes by using other
types such as size_t, when appropriate.
The use of off_t to represent these offsets has worked fine in
practice on linux-y platforms, since we used _FILE_OFFSET_64 to
guarantee that off_t was a uint64. On Windows, however,
_FILE_OFFSET_64 is unrecognized, and off_t will always be 32-bit.
So the usage of off_t on Windows actually leads to legitimate bugs.
Reviewed by: Greg Clayton
Differential Revision: http://reviews.llvm.org/D4358
llvm-svn: 212192
Alp Toker [Wed, 2 Jul 2014 17:08:00 +0000 (17:08 +0000)]
ARCMigrate: simplify diagnostic handling
Recent enhancements in the diagnostics engine mean that
TransformActions::report() no longer needs to duplicate this suppression logic.
That's great because the old code was flawed and would have attached notes to
the wrong primary diagnostic in non-trivial use.
With these changes it becomes safe to use reportNote() freely in the migration
tool.
llvm-svn: 212191
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 17:07:03 +0000 (17:07 +0000)]
XFAIL the test to go with r202189
llvm-svn: 212190
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 17:03:16 +0000 (17:03 +0000)]
AArch64: Temporarily disable AArch64AddressTypePromotion
Temporarily disable AArch64AddressTypePromotion, which was effectively
re-enabled in r212073 and r212075, while I look into PR20188.
llvm-svn: 212189
Alexey Samsonov [Wed, 2 Jul 2014 16:54:41 +0000 (16:54 +0000)]
[ASan] Print exact source location of global variables in error reports.
See https://code.google.com/p/address-sanitizer/issues/detail?id=299 for the
original feature request.
Introduce llvm.asan.globals metadata, which Clang (or any other frontend)
may use to report extra information about global variables to ASan
instrumentation pass in the backend. This metadata replaces
llvm.asan.dynamically_initialized_globals that was used to detect init-order
bugs. llvm.asan.globals contains the following data for each global:
1) source location (file/line/column info);
2) whether it is dynamically initialized;
3) whether it is blacklisted (shouldn't be instrumented).
Source location data is then emitted in the binary and can be picked up
by ASan runtime in case it needs to print error report involving some global.
For example:
0x... is located 4 bytes to the right of global variable 'C::array' defined in '/path/to/file:17:8' (0x...) of size 40
These source locations are printed even if the binary doesn't have any
debug info.
This is an ABI-breaking change. ASan initialization is renamed to
__asan_init_v4(). Pre-built libraries compiled with older Clang will not work
with the fresh runtime.
llvm-svn: 212188
Chad Rosier [Wed, 2 Jul 2014 16:46:08 +0000 (16:46 +0000)]
Revert "Revert "MachineScheduler: better book-keeping for asserts.""
This reverts commit r212109, which reverted r212088.
However, disable the assert as it's not necessary for correctness. There are
several corner cases that the assert needed to handle better for in-order
scheduling, but none of them are incorrect scheduler behavior. The assert is
mainly there to collect good unit tests like this and ensure that the
target-independent scheduler is working as expected with the various machine
models.
llvm-svn: 212187
Tobias Grosser [Wed, 2 Jul 2014 16:26:47 +0000 (16:26 +0000)]
Use arguments of user statements to perform induction variable substitution
To translate the old induction variables as they exist before Polly to new
new induction variables introduced during AST code generation we need to
generate code that computes the new values from the old ones. We can do this
by just looking at the arguments isl generates in each scheduled statement.
Example:
// Old
for i
S(i)
// New
for c0
for c1
S(c0 + c1)
To get the value of i, we need to compute 'c0 + c1'. This expression is readily
available in the user statements generated by isl and just needs to be
translated to LLVM-IR.
This replaces an old confusing construct that constructed during ast generation
an isl multi affine expression that described this relation and which was then
again ast generated for each statement and argument when translating the isl ast
to LLVM-IR. This approach was difficult to understand and the additional ast
generation calls where entirely redundant as isl provides the relevant
expressions as arguments of the generated user statements.
llvm-svn: 212186
Marshall Clow [Wed, 2 Jul 2014 15:45:57 +0000 (15:45 +0000)]
Minor cleanup for string_view; mostly from suggestions by Richard Smith. Also, make the tests pass under c++03
llvm-svn: 212185
Sylvestre Ledru [Wed, 2 Jul 2014 15:25:25 +0000 (15:25 +0000)]
Also document the 'arc commit' commands in the 'Committing a change' section of the Phabricator doc
llvm-svn: 212184
Yaron Keren [Wed, 2 Jul 2014 15:25:03 +0000 (15:25 +0000)]
Added standard macro guard. In case __GNUC_VA_LIST was not
defined or defined identically before there will not be any
change in functionality.
MinGW-w64 defines __GNUC_VA_LIST as
#define __GNUC_VA_LIST
which is different than the definition here, causing
a warning without the guard.
llvm-svn: 212183
Daniel Sanders [Wed, 2 Jul 2014 15:21:50 +0000 (15:21 +0000)]
[mips] Added additional test cases for passing -mabi to the assembler.
Summary:
This patch adds minimal coverage for each -mcpu value to ensure that none of them can pass an empty string in -mabi.
Prior to r212176, many -mcpu values would trigger this.
Differential Revision: http://reviews.llvm.org/D4272
llvm-svn: 212182
Benjamin Kramer [Wed, 2 Jul 2014 15:09:44 +0000 (15:09 +0000)]
X86: When combining shuffles just remove shuffles that are completely redundant.
CombineTo doesn't allow replacing a node with itself so this would crash if the
combined shuffle is the same as the input shuffle.
llvm-svn: 212181
Alexander Kornienko [Wed, 2 Jul 2014 15:05:04 +0000 (15:05 +0000)]
Consistently handle clang-tidy check names in ClangTidyError.
Summary:
This patch removes " [check-name]" from the end of
ClangTidyMessage::Message. The " [check-name]" part is only appended when
printing diagnostics on the console. Clang errors are now marked with
"clang-diagnostic-error" check name, remarks and unknown warnings are marked
with "clang-diagnostic-unknown".
Reviewers: djasper
Reviewed By: djasper
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4356
llvm-svn: 212180
Axel Naumann [Wed, 2 Jul 2014 14:40:35 +0000 (14:40 +0000)]
Undefine R2, R4, R6 after use.
llvm-svn: 212179
Elena Demikhovsky [Wed, 2 Jul 2014 14:11:05 +0000 (14:11 +0000)]
AVX-512: dec/inc instructions are slow on KNL
After Alexey Volkov, I'm adding the same property for KNL, that prefers ADD/SUB instead of INC/DEC.
Added a test.
llvm-svn: 212178
Daniel Sanders [Wed, 2 Jul 2014 13:21:52 +0000 (13:21 +0000)]
[mips] Make FileCheck prefixes match the CPU they check
Summary:
For example: s/MIPS32-EB-AS/MIPS32R2-EB-AS/ since it is for MIPS32r2 not MIPS32.
This reduces the noise in my next Clang patch.
Differential Revision: http://reviews.llvm.org/D4271
llvm-svn: 212177
Simon Atanasyan [Wed, 2 Jul 2014 13:20:36 +0000 (13:20 +0000)]
[Driver][Mips] If ABI name is not provided deduce it from the target triple
not from the CPU name. This approach is closer to the method used by gcc driver.
llvm-svn: 212176
Tim Northover [Wed, 2 Jul 2014 12:56:02 +0000 (12:56 +0000)]
ARM: add support for v8 ldaex/stlex builtins.
ARMv8 adds (to both AArch32 and AArch64) acquiring and releasing
variants of the exclusive operations, in line with the C++11 memory
model.
This adds support for two new intrinsics to expose them to C & C++
developers directly: __builtin_arm_ldaex and __builtin_arm_stlex, in
direct analogy with the versions with no implicit barrier.
rdar://problem/
15885451
llvm-svn: 212175
Alp Toker [Wed, 2 Jul 2014 12:55:58 +0000 (12:55 +0000)]
Make FunctionDecl::getReturnTypeSourceRange() support non-builtin types
Also document that the function is a "best-effort" facility to extract source
ranges from limited AST type location info.
llvm-svn: 212174
Tim Northover [Wed, 2 Jul 2014 10:25:45 +0000 (10:25 +0000)]
X86: inline all atomic operations up to 128-bits.
The backend *can* cope with all of these now, so Clang should give it the
chance. On CPUs without cmpxchg16b (e.g. the original athlon64) LLVM can reform
the libcalls.
rdar://problem/
13496295
llvm-svn: 212173
Jean-Daniel Dupas [Wed, 2 Jul 2014 09:51:28 +0000 (09:51 +0000)]
Replace uint32_t by lldb::RegisterKing in register context API.
llvm-svn: 212172
Alp Toker [Wed, 2 Jul 2014 07:07:20 +0000 (07:07 +0000)]
Don't accept qualified 'int' main return types in C++ or standard C mode
C++ [basic.start.main]p1: "It shall have a return type of type int"
ISO C is also clear about this, so only accept 'int' with qualifiers in GNUMode
C.
llvm-svn: 212171
Alexey Bataev [Wed, 2 Jul 2014 07:05:22 +0000 (07:05 +0000)]
Added test for capturing VLA types if the captured variable is a function parameter.
llvm-svn: 212170
Matt Arsenault [Wed, 2 Jul 2014 06:50:48 +0000 (06:50 +0000)]
Move operator[] to DomTreeNodeBase
The comment in base even refers to it, but it was only defined
in the subclass.
llvm-svn: 212169
Matt Arsenault [Wed, 2 Jul 2014 06:45:26 +0000 (06:45 +0000)]
Fix missing const
llvm-svn: 212168
David Majnemer [Wed, 2 Jul 2014 06:42:13 +0000 (06:42 +0000)]
InstCombine: Optimize x/INT_MIN to x==INT_MIN
The result of x/INT_MIN is either 0 or 1, we can just use an icmp
instead.
llvm-svn: 212167
Chandler Carruth [Wed, 2 Jul 2014 06:23:34 +0000 (06:23 +0000)]
[cleanup] Hoist an if-else chain on ISD opcodes (really designed for
switches) into a switch, and sink them into a dispatch function that can
return the result rather than awkward variable setting with breaks.
llvm-svn: 212166
David Majnemer [Wed, 2 Jul 2014 06:14:13 +0000 (06:14 +0000)]
InstCombine: Add a vector variant test for PR20186
No functional change, just adding more test coverage that was meant to
go in with r212164.
llvm-svn: 212165
David Majnemer [Wed, 2 Jul 2014 06:07:09 +0000 (06:07 +0000)]
InstCombine: Don't turn -(x/INT_MIN) -> x/INT_MIN
It is not safe to negate the smallest signed integer, doing so yields
the same number back.
This fixes PR20186.
llvm-svn: 212164
Owen Anderson [Wed, 2 Jul 2014 05:32:13 +0000 (05:32 +0000)]
Add range for-loop iterator adapter for cases in SwitchInst.
Patch by Marcello Maggioni, reviewed by Reid Kleckner.
llvm-svn: 212163
Alexey Bataev [Wed, 2 Jul 2014 05:15:00 +0000 (05:15 +0000)]
[OPENMP, C++11] Improve code of InitVLACaptures function.
llvm-svn: 212162
Saleem Abdulrasool [Wed, 2 Jul 2014 04:50:23 +0000 (04:50 +0000)]
aarch64: support target-specific .req assembler directive
Based on the support for .req on ARM. The aarch64 variant has to keep track if
the alias register was a vector register (v0-31) or a general purpose or
VFP/Advanced SIMD ([bhsdq]0-31) register.
Patch by Janne Grunau!
llvm-svn: 212161
Richard Trieu [Wed, 2 Jul 2014 04:39:38 +0000 (04:39 +0000)]
Prevent Clang from crashing on template code.
Fixes PR20110, where Clang hits an assertion failure when it expects that the
sub-expression of a bit cast to pointer to also be a pointer, but gets a value
instead.
Differential Revision: http://reviews.llvm.org/D4280
llvm-svn: 212160
Chandler Carruth [Wed, 2 Jul 2014 04:39:34 +0000 (04:39 +0000)]
[cleanup] Remove dead 'break;' statements that I meant to nuke in
r212158 but missed.
Thanks to Craig for spotting the goof!
llvm-svn: 212159
Chandler Carruth [Wed, 2 Jul 2014 03:07:15 +0000 (03:07 +0000)]
[cleanup] Hoist the promotion dispatch logic into the promote function
so that we can use return to express it more cleanly and avoid so many
nested switch statements.
llvm-svn: 212158
Chandler Carruth [Wed, 2 Jul 2014 03:07:11 +0000 (03:07 +0000)]
[cleanup] Nuke the 'VectorOp' bit of the promote method names.
This doesn't add any information for methods in the VectorLegalizer
class that clearly take SDAG operations to legalize.
llvm-svn: 212157
Alexey Bataev [Wed, 2 Jul 2014 03:04:53 +0000 (03:04 +0000)]
[OPENMP] Fixed error message reporting for nesting of regions
llvm-svn: 212156
Chandler Carruth [Wed, 2 Jul 2014 02:16:57 +0000 (02:16 +0000)]
[x86] Clean up and modernize the doxygen and API comments for the vector
operation legalization code.
llvm-svn: 212155
Alp Toker [Wed, 2 Jul 2014 01:47:15 +0000 (01:47 +0000)]
Introduce a FunctionDecl::getReturnTypeSourceRange() utility
This source range is useful for all kinds of diagnostic QOI and refactoring
work, so let's make it more discoverable.
This commit also makes use of the new function to enhance various diagnostics
relating to return types and resolves an old FIXME.
llvm-svn: 212154
Eric Christopher [Wed, 2 Jul 2014 01:14:43 +0000 (01:14 +0000)]
Break out subtarget initialization that dependent variables need into
a separate function and clean up calling convention for helper function.
llvm-svn: 212153
Eric Christopher [Wed, 2 Jul 2014 01:02:28 +0000 (01:02 +0000)]
Unify these two lines.
llvm-svn: 212152
Eric Christopher [Wed, 2 Jul 2014 00:54:12 +0000 (00:54 +0000)]
Move MipsJITInfo to the subtarget rather than the target machine.
llvm-svn: 212151
Eric Christopher [Wed, 2 Jul 2014 00:54:10 +0000 (00:54 +0000)]
Remove unnecessary include.
llvm-svn: 212150
Eric Christopher [Wed, 2 Jul 2014 00:54:07 +0000 (00:54 +0000)]
Remove the cached InstrItineraryData on the TargetMachine, it's unnecessary.
llvm-svn: 212149
Reid Kleckner [Wed, 2 Jul 2014 00:42:07 +0000 (00:42 +0000)]
Remove the recommendation against using std::function
Clang-cl supports MSVC-style RTTI now, and we can even compile
typeid(...) with /GR-. Just don't instantiate std::function with a
polymorphic type, or bad things will happen.
llvm-svn: 212148
Eric Christopher [Wed, 2 Jul 2014 00:10:09 +0000 (00:10 +0000)]
Move the subtarget dependent features from XCoreTargetMachine
down to the subtarget.
llvm-svn: 212147
Eric Christopher [Wed, 2 Jul 2014 00:10:05 +0000 (00:10 +0000)]
Make XCoreSelectionDAGInfo take a DataLayout since it only needs
that information.
llvm-svn: 212146
Todd Fiala [Tue, 1 Jul 2014 23:33:32 +0000 (23:33 +0000)]
Add Kalimba support to ArchSpec.
See http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-
20140630/011508.html
for more details.
Change by Matthew Gardiner.
llvm-svn: 212145
NAKAMURA Takumi [Tue, 1 Jul 2014 23:33:03 +0000 (23:33 +0000)]
clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp: Relax an expression for -Asserts.
llvm-svn: 212144
Kevin Enderby [Tue, 1 Jul 2014 22:44:51 +0000 (22:44 +0000)]
Also run clang-format on llvm-nm.cpp to tidy things up. No functional changes.
llvm-svn: 212143
David Majnemer [Tue, 1 Jul 2014 22:37:08 +0000 (22:37 +0000)]
CodeGen: Add some comments describing VFTable CG
No functionality change, just some comments to describe what is going
on.
llvm-svn: 212142
Kevin Enderby [Tue, 1 Jul 2014 22:26:31 +0000 (22:26 +0000)]
Run clang-format on llvm-size.cpp to tidy things up. No functional changes.
llvm-svn: 212141
Juergen Ributzka [Tue, 1 Jul 2014 22:25:49 +0000 (22:25 +0000)]
[FastISel] Factor out stackmap intrinsic selection code into a dedicated helper method. NFCI.
llvm-svn: 212140
David Majnemer [Tue, 1 Jul 2014 22:25:00 +0000 (22:25 +0000)]
CodeGenCXX: Add tests for RTTI in VFTables
This test was supposed to go in with r212125.
llvm-svn: 212139
David Majnemer [Tue, 1 Jul 2014 22:24:56 +0000 (22:24 +0000)]
Driver: Handle /GR- in a compatible way with MSVC
There are slight differences between /GR- and -fno-rtti which made
mapping one to the other inappropriate.
-fno-rtti disables dynamic_cast, typeid, and does not emit RTTI related
information for the v-table.
/GR- does not generate complete object locators and thus will not
reference them in vftables. However, constructs like dynamic_cast and
typeid are permitted.
This should bring our implementation of RTTI up to semantic parity with
MSVC modulo bugs.
llvm-svn: 212138
Reid Kleckner [Tue, 1 Jul 2014 22:23:54 +0000 (22:23 +0000)]
Win64: Disable uwtable until we fix .pdata emission in LLVM
LLVM r211399 started emitting .pdata for win64 by default.
Unfortunately, it produces invalid object files. I plan to fix that
Soon. For now, don't request unwind tables. This fixes the clang-cl
self-host on win64.
llvm-svn: 212137
Tim Northover [Tue, 1 Jul 2014 22:10:30 +0000 (22:10 +0000)]
X86: remove atomic instructions *after* we've iterated through them.
Otherwise they get freed and the implicit "isa<XYZ>" tests following
turn out badly (at least under sanitizers).
Also corrects the ordering of unordered atomic stores.
llvm-svn: 212136
Juergen Ributzka [Tue, 1 Jul 2014 22:01:54 +0000 (22:01 +0000)]
[DAG] Pass the argument list to the CallLoweringInfo via move semantics. NFCI.
The argument list vector is never used after it has been passed to the
CallLoweringInfo and moving it to the CallLoweringInfo is cleaner and
pretty much as cheap as keeping a pointer to it.
llvm-svn: 212135
Tim Northover [Tue, 1 Jul 2014 21:44:59 +0000 (21:44 +0000)]
X86: delegate expanding atomic libcalls to generic code.
On targets without cmpxchg16b or cmpxchg8b, the borderline atomic
operations were slipping through the gaps.
X86AtomicExpand.cpp was delegating to ISelLowering. Generic
ISelLowering was delegating to X86ISelLowering and X86ISelLowering was
asserting. The correct behaviour is to expand to a libcall, preferably
in generic ISelLowering.
This can be achieved by X86ISelLowering deciding it doesn't want the
faff after all.
llvm-svn: 212134
Reid Kleckner [Tue, 1 Jul 2014 21:36:20 +0000 (21:36 +0000)]
Optimize InstCombine stack memory consumption
This patch reduces the stack memory consumption of the InstCombine
function "isOnlyCopiedFromConstantGlobal() ", that in certain conditions
could overflow the stack because of excessive recursiveness.
For example, in a case like this:
%0 = alloca [50025 x i32], align 4
%1 = getelementptr inbounds [50025 x i32]* %0, i64 0, i64 0
store i32 0, i32* %1
%2 = getelementptr inbounds i32* %1, i64 1
store i32 1, i32* %2
%3 = getelementptr inbounds i32* %2, i64 1
store i32 2, i32* %3
%4 = getelementptr inbounds i32* %3, i64 1
store i32 3, i32* %4
%5 = getelementptr inbounds i32* %4, i64 1
store i32 4, i32* %5
%6 = getelementptr inbounds i32* %5, i64 1
store i32 5, i32* %6
...
This piece of code crashes llvm when trying to apply instcombine on
desktop. On embedded devices this could happen with a much lower limit
of recursiveness. Some instructions (getelementptr and bitcasts) make
the function recursively call itself on their uses, which is what makes
the example above consume so much stack (it becomes a recursive
depth-first tree visit with a very big depth).
The patch changes the algorithm to be semantically equivalent, but
iterative instead of recursive and the visiting order to be from a
depth-first visit to a breadth-first visit (visit all the instructions
of the current level before the ones of the next one).
Now if a lot of memory is required a heap allocation is done instead of
the the stack allocation, avoiding the possible crash.
Reviewed By: rnk
Differential Revision: http://reviews.llvm.org/D4355
Patch by Marcello Maggioni! We don't generally commit large stress test
that look for out of memory conditions, so I didn't request that one be
added to the patch.
llvm-svn: 212133
Bruce Mitchener [Tue, 1 Jul 2014 21:22:11 +0000 (21:22 +0000)]
Fix typos.
llvm-svn: 212132
Bruce Mitchener [Tue, 1 Jul 2014 21:19:25 +0000 (21:19 +0000)]
Terminate italics tag.
llvm-svn: 212131
Alp Toker [Tue, 1 Jul 2014 21:19:13 +0000 (21:19 +0000)]
Move remaining LLVM_ENABLE_DUMP conditionals out of the headers
This macro is sometimes defined manually but isn't (and doesn't need to be) in
llvm-config.h so shouldn't appear in the headers, likewise NDEBUG.
Instead switch them over to LLVM_DUMP_METHOD on the definitions.
llvm-svn: 212130
Bruce Mitchener [Tue, 1 Jul 2014 21:18:35 +0000 (21:18 +0000)]
Minumum -> Minimum.
llvm-svn: 212129
David Blaikie [Tue, 1 Jul 2014 21:13:37 +0000 (21:13 +0000)]
DebugInfo: Keep track of subprograms who's arguments have been promoted.
Matching behavior with DeadArgumentElimination (and leveraging some
now-common infrastructure), keep track of the function from debug info
metadata if arguments are promoted.
This may produce interesting debug info - since the arguments may be
missing or of different types... but at least backtraces, inlining, etc,
will be correct.
llvm-svn: 212128
David Majnemer [Tue, 1 Jul 2014 21:10:07 +0000 (21:10 +0000)]
AST: Small simplification in VTableBuilder
Stash whether or not we have an RTTI component away instead of
recomputing it.
llvm-svn: 212127
Johannes Doerfert [Tue, 1 Jul 2014 20:52:51 +0000 (20:52 +0000)]
Introduce reduction types
This change is particularly useful in the code generation as we need
to know which binary operator/identity element we need to combine/initialize
the privatization locations.
+ Print the reduction type for each memory access
+ Adjusted the test cases to comply with the new output format and
to test for the right reduction type
llvm-svn: 212126
David Majnemer [Tue, 1 Jul 2014 20:30:31 +0000 (20:30 +0000)]
MS ABI: Reference MSVC RTTI from the VFTable
The pointer for a class's RTTI data comes right before the VFTable but
has no name. To be properly compatible with this, we do the following:
* Create a single GlobalVariable which holds the contents of the VFTable
_and_ the pointer to the RTTI data.
* Create a GlobalAlias, with appropriate linkage/visibility, that points
just after the RTTI data pointer. This ensures that the VFTable
symbol will always refer to VFTable data.
* Create a Comdat with a "Largest" SelectionKind and stick the private
GlobalVariable in it. By transitivity, the GlobalAlias will be a
member of the Comdat group. Using "Largest" ensures that foreign
definitions without an RTTI data pointer will _not_ be chosen in the
final linked image.
Whether or not we emit RTTI data depends on several things:
* The -fno-rtti flag implies that we should never not emit a pointer to
RTTI data before the VFTable.
* __declspec(dllimport) brings in the VFTable from a remote DLL. Use an
available_externally GlobalVariable to provide a local definition of
the VFTable. This means that we won't have any available_externally
definitions of things like complete object locators. This is
acceptable because they are never directly referenced.
To my knowledge, this completes the implementation of MSVC RTTI code
generation.
Further semantic work should be done to properly support /GR-.
llvm-svn: 212125
Eric Christopher [Tue, 1 Jul 2014 20:19:02 +0000 (20:19 +0000)]
Move the subtarget dependent features from SystemZTargetMachine
down to the subtarget. Add an initialization routine to assist.
llvm-svn: 212124
Eric Christopher [Tue, 1 Jul 2014 20:18:59 +0000 (20:18 +0000)]
Remove the use and initialization of the target machine and subtarget
from SystemZFrameLowering.
llvm-svn: 212123
David Blaikie [Tue, 1 Jul 2014 20:05:26 +0000 (20:05 +0000)]
DebugInfo: Provide a utility for building a mapping from llvm::Function*s to llvm::DISubprograms
Update DeadArgumentElimintation to use this, with the intent of reusing
the functionality for ArgumentPromotion as well.
llvm-svn: 212122
Alexey Samsonov [Tue, 1 Jul 2014 19:58:41 +0000 (19:58 +0000)]
[MSan] Fixup r212082: enable tests for _mm_ intrinsics if and only if the
unit test source file is compiled with Clang.
llvm-svn: 212121
Tim Northover [Tue, 1 Jul 2014 19:47:09 +0000 (19:47 +0000)]
AArch64: fix comment typo
llvm-svn: 212120
Tim Northover [Tue, 1 Jul 2014 18:53:31 +0000 (18:53 +0000)]
X86: expand atomics in IR instead of as MachineInstrs.
The logic for expanding atomics that aren't natively supported in
terms of cmpxchg loops is much simpler to express at the IR level. It
also allows the normal optimisations and CodeGen improvements to help
out with atomics, instead of using a limited set of possible
instructions..
rdar://problem/
13496295
llvm-svn: 212119
Reid Kleckner [Tue, 1 Jul 2014 18:27:02 +0000 (18:27 +0000)]
clang-cl: Ignore /Zc:inline and /Zc:rvalueCast
These flags enable behavior in MSVC that Clang has by default.
/Zc:inline essentially marks all COMDATs as discardable. In LLVM
parlance, this means using linkonce_odr linkage, which is what we
already do.
llvm-svn: 212117
Sean Silva [Tue, 1 Jul 2014 18:22:32 +0000 (18:22 +0000)]
[docs] Fix a mangled sentence.
Fixes PR20169
llvm-svn: 212116
Sean Silva [Tue, 1 Jul 2014 18:15:00 +0000 (18:15 +0000)]
[docs] Remove stray HTML tag.
Fixes PR20167
llvm-svn: 212115
Adam Nemet [Tue, 1 Jul 2014 18:03:45 +0000 (18:03 +0000)]
[X86] AVX512: Allow writemasks with vpcmp
For now I only updated the _alt variants. The main variants are used by
codegen and that will need a bit more work to trigger.
<rdar://problem/
17492620>
llvm-svn: 212114
Adam Nemet [Tue, 1 Jul 2014 18:03:43 +0000 (18:03 +0000)]
[X86] AVX512: Factor generating the AsmString into avx512_icmp_cc
Adding a writemask variant would require a third asm string to be passed to
the template. Generate the AsmString in the template instead.
No change in X86.td.expanded.
llvm-svn: 212113
Alexey Samsonov [Tue, 1 Jul 2014 18:01:20 +0000 (18:01 +0000)]
[TSan] Equalize the behavior of __tsan_get_allocated_size and user_alloc_usable_size.
The former used to crash with a null deref if it was given a not owned pointer,
while the latter returned 0. Now they both return 0. This is still not the best possible
behavior: it is better to print an error report with a stack trace, pointing
to the error in user code, as we do in ASan.
llvm-svn: 212112
Deepak Panickal [Tue, 1 Jul 2014 17:57:19 +0000 (17:57 +0000)]
This creates a valid Python API for Windows, pending some issues. The changes included are -
- Ported the SWIG wrapper shell scripts to Python so that they would work on Windows too along with other platforms
- Updated CMake handling to fix SWIG errors and manage sym-linking on Windows to liblldb.dll
- More build fixes for Windows
The pending issues are that two Python modules, termios and pexpect are not available on Windows.
These are currently required for the Python command interpreter to be used from within LLDB.
llvm-svn: 212111
Sylvestre Ledru [Tue, 1 Jul 2014 17:24:27 +0000 (17:24 +0000)]
GCC compatibility: Ignore -finput_charset=UTF-8 argument. It is the default in Clang.
Currently, we fail with an error.
Reviewers: rafael
Reviewed By: rafael
Subscribers: rnk, cfe-commits
Differential Revision: http://reviews.llvm.org/D4347
llvm-svn: 212110
Chad Rosier [Tue, 1 Jul 2014 17:23:11 +0000 (17:23 +0000)]
Revert "MachineScheduler: better book-keeping for asserts."
This reverts commit r212088, which is causing a number of spec
failures. Will provide reduced test cases shortly.
PR20057
llvm-svn: 212109
Kevin Enderby [Tue, 1 Jul 2014 17:19:10 +0000 (17:19 +0000)]
Add the -arch flag support to llvm-size like what was done to llvm-nm
to select the slice out of a Mach-O universal file. This also includes
support for -arch all, selecting the host architecture by default from
a universal file and checking if -arch is used with a standard Mach-O
it matches that architecture.
llvm-svn: 212108
Todd Fiala [Tue, 1 Jul 2014 16:30:53 +0000 (16:30 +0000)]
Use native ::pid_t in Linux ProcessMonitor (local debugging).
There were a few places where we were not catching the possibility of negative
error codes in waitpid() calls. This change fixes those remaining after
the llgs branch fixes to ProcessMonitor.
Change by Shawn Best.
llvm-svn: 212107
Quentin Colombet [Tue, 1 Jul 2014 16:23:44 +0000 (16:23 +0000)]
[PeepholeOptimzer] Fix a typo in a comment.
Spotted by Amara Emerson.
llvm-svn: 212106
Benjamin Kramer [Tue, 1 Jul 2014 15:39:32 +0000 (15:39 +0000)]
Remove unused typedef. GCC warns about this.
llvm-svn: 212105
David Majnemer [Tue, 1 Jul 2014 15:26:50 +0000 (15:26 +0000)]
GlobalOpt: Don't swap private for internal linkage
There were transforms whose *intent* was to downgrade the linkage of
external objects to have internal linkage.
However, it fired on things with private linkage as well.
llvm-svn: 212104
David Majnemer [Tue, 1 Jul 2014 15:26:47 +0000 (15:26 +0000)]
GlobalOpt: FileCheck-ize test
No functionality change.
llvm-svn: 212103
Benjamin Kramer [Tue, 1 Jul 2014 14:46:44 +0000 (14:46 +0000)]
Rephrase loop so it doesn't leave unused bools around in Release mode.
llvm-svn: 212102
Rafael Espindola [Tue, 1 Jul 2014 14:34:30 +0000 (14:34 +0000)]
Avoid revocations when possible.
This is a small targeted fix for pr20119. The code needs quiet a bit of
refactoring and I added some FIXMEs about it, but I want to get the testcase
passing first.
llvm-svn: 212101
Quentin Colombet [Tue, 1 Jul 2014 14:33:36 +0000 (14:33 +0000)]
[PeepholeOptimizer] Advanced rewriting of copies to avoid cross register banks
copies.
This patch extends the peephole optimization introduced in r190713 to produce
register-coalescer friendly copies when possible.
This extension taught the existing cross-bank copy optimization how to deal
with the instructions that generate cross-bank copies, i.e., insert_subreg,
extract_subreg, reg_sequence, and subreg_to_reg.
E.g.
b = insert_subreg e, A, sub0 <-- cross-bank copy
...
C = copy b.sub0 <-- cross-bank copy
Would produce the following code:
b = insert_subreg e, A, sub0 <-- cross-bank copy
...
C = copy A <-- same-bank copy
This patch also introduces a new helper class for that: ValueTracker.
This class implements the logic to look through the copy related instructions
and get the related source.
For now, the advanced rewriting is disabled by default as we are lacking the
semantic on target specific instructions to catch the motivating examples.
Related to <rdar://problem/
12702965>.
llvm-svn: 212100
Quentin Colombet [Tue, 1 Jul 2014 14:08:37 +0000 (14:08 +0000)]
[RegAllocGreedy] Provide a flag to disable the local reassignment heuristic.
By default, no functionality change.
Before evicting a local variable, this heuristic tries to find another (set of)
local(s) that can be reassigned to a free color.
In some extreme cases (large basic blocks with tons of local variables), the
compilation time is dominated by the local interference checks that this
heuristic must perform, with no code gen gain.
E.g., the motivating example takes 4 minutes to compile with this heuristic, 12
seconds without.
Improving the situation will likely require to make drastic changes to the
register allocator and/or the interference check framework.
For now, provide this flag to better understand the impact of that heuristic.
<rdar://problem/
17444599>
llvm-svn: 212099
Logan Chien [Tue, 1 Jul 2014 11:47:10 +0000 (11:47 +0000)]
Remove CleanupHackLevel from CGException.
This patch removes the dead code, and refines the
getEHResumeBlock() slightly.
The CleanupHackLevel was a hack to the old exception
handling intrinsics, which have several issues with function
inliner.
Since LLVM 3.0, the new landingpad and resume instructions
are added to LLVM IR. With the new exception handling
mechanism, most of the issues are fixed now. We should
always use these instructions to implement the exception
handling code nowadays, and we don't need the hack any more.
Besides, the `CleanupHackLevel` is a compile-time constant,
thus other cases have been considered as dead code for a while.
llvm-svn: 212097
Simon Atanasyan [Tue, 1 Jul 2014 10:59:09 +0000 (10:59 +0000)]
[Driver][Mips] MIPS ABI names "32" and "64" used as arguments of the "-mabi"
command line option only. Internally we convert them to the "o32" and "n64"
respectively. So we do not need to refer them anywhere after that conversion.
No functional changes.
llvm-svn: 212096
Alp Toker [Tue, 1 Jul 2014 10:47:13 +0000 (10:47 +0000)]
Remove obsolete function TargetRegistry::getClosestTargetForJIT()
This was kept around "for compatibility through 2.6" in 2009 and is not used or
tested.
llvm-svn: 212095
Tim Northover [Tue, 1 Jul 2014 08:41:45 +0000 (08:41 +0000)]
[mach-o]: make the default dylib install-name the output filename.
llvm-svn: 212094
Tim Northover [Tue, 1 Jul 2014 08:15:41 +0000 (08:15 +0000)]
[mach-o] add representation for LC_ID_DYLIB to MachONormalizedFile
It still needs to be tied into BinaryReader, but this allows reasonably
sensible creation of SharedLibrary atoms on MachO.
llvm-svn: 212093