Anton Korobeynikov
221f4faa92
Save a mapping between original and cloned constpool entries.
...
llvm-svn: 124570
2011-01-30 22:07:39 +00:00
Anton Korobeynikov
fe3a6e049d
Clarify the LSDASection NULL check
...
llvm-svn: 124569
2011-01-30 22:07:31 +00:00
Anders Carlsson
f23a6da271
Recognize and simplify
...
(A+B) == A -> B == 0
A == (A+B) -> B == 0
llvm-svn: 124567
2011-01-30 22:01:13 +00:00
Anders Carlsson
a03f3a85cb
When building with optimizations, emit vtables where the key is not in the
...
current translation unit as available_externally.
This helps devirtualize the second example in PR3100, comment 18:
struct S { S() {}; virtual void xyzzy(); };
inline void foo(S *s) { s->xyzzy(); }
void bar() { S s; foo(&s); }
This involved four major changes:
1. In DefineUsedVTables, always mark virtual member functions as referenced for
non-template classes and class template specializations.
2. In CodeGenVTables::ShouldEmitVTableInThisTU return true if optimizations are
enabled, even if the key function is not implemented in this translation
unit. We don't ever do this for code compiled with -fapple-kext, because we
don't ever want to devirtualize virtual member function calls in that case.
3. Give the correct linkage for vtables where the key function is not defined.
4. Update the linkage for RTTI structures when necessary.
llvm-svn: 124565
2011-01-30 20:45:54 +00:00
Jakob Stoklund Olesen
9af7afcb7f
Respect the -tail-dup-size command line option even when optimizing for size.
...
This is similar to the -unroll-threshold option. There should be no change in
behavior when -tail-dup-size is not explicit on the llc command line.
llvm-svn: 124564
2011-01-30 20:38:12 +00:00
Greg Clayton
b30438aa2b
Added the start of the plug-in interface to EmulateInstruction
...
and implemented it for the EmulateInstructionARM class.
llvm-svn: 124563
2011-01-30 20:03:56 +00:00
Greg Clayton
7d478e0851
Added some documentation that describes the purpose and the goals
...
of the EmulateInstruction class.
llvm-svn: 124562
2011-01-30 19:42:40 +00:00
Duncan Sands
2e5a58da8f
Commit 124487 broke 254.gap. See if disabling the part that might be triggered
...
by PR9088 fixes things.
llvm-svn: 124561
2011-01-30 18:24:20 +00:00
Duncan Sands
b67edc6a29
Transform (X/Y)*Y into X if the division is exact. Instcombine already knows how
...
to do this and more, but would only do it if X/Y had only one use. Spotted as the
most common missed simplification in SPEC by my auto-simplifier, now that it knows
about nuw/nsw/exact flags. This removes a bunch of multiplications from 447.dealII
and 483.xalancbmk. It also removes a lot from tramp3d-v4, which results in much
more inlining.
llvm-svn: 124560
2011-01-30 18:03:50 +00:00
Benjamin Kramer
946e1522b6
Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, c1+c2) when c1 equals the amount of bits that are truncated off.
...
This happens all the time when a smul is promoted to a larger type.
On x86-64 we now compile "int test(int x) { return x/10; }" into
movslq %edi, %rax
imulq $1717986919, %rax, %rax
movq %rax, %rcx
shrq $63, %rcx
sarq $34, %rax <- used to be "shrq $32, %rax; sarl $2, %eax"
addl %ecx, %eax
This fires 96 times in gcc.c on x86-64.
llvm-svn: 124559
2011-01-30 16:38:43 +00:00
Roman Divacky
115f0fa397
Add hardcoded -L/usr/lib after all -L options to the FreeBSD linker
...
invocation.
This mimics what gcc does and fixes libtool check for libraries.
llvm-svn: 124558
2011-01-30 08:12:24 +00:00
Nick Lewycky
c15dd6f07c
Fix 'fcmp one' constant folding. Noticed by inspection.
...
llvm-svn: 124557
2011-01-30 01:49:58 +00:00
Nick Lewycky
7c75f0c031
Fix some formatting and upgrade comments from llvm 1.x to 2.x syntax.
...
llvm-svn: 124556
2011-01-30 01:48:50 +00:00
Anders Carlsson
064ccbef26
Fix test.
...
llvm-svn: 124555
2011-01-29 22:39:23 +00:00
Anders Carlsson
5b48bf70a8
Remove dead code.
...
llvm-svn: 124554
2011-01-29 22:15:18 +00:00
Anders Carlsson
49f17537ee
When emitting RTTI for a non-class type, compute the visibility of the RTTI data based on the explicit visibility of the type.
...
llvm-svn: 124553
2011-01-29 22:10:32 +00:00
Bill Wendling
96202e7bbd
This is #included by .c files. Remove C++-style comments.
...
llvm-svn: 124552
2011-01-29 21:54:26 +00:00
Nico Weber
741bf9d872
Support for -plugin-arg- with -add-plugin
...
llvm-svn: 124551
2011-01-29 21:21:49 +00:00
Anders Carlsson
537fdceded
Move GetLLVMVisibility to CodeGenModule.
...
llvm-svn: 124550
2011-01-29 20:59:35 +00:00
Anders Carlsson
46fcf9f0b7
Update tests.
...
I'm still not sure if having the typenames be visible with -hidden-weak-vtables, but I think it makes sense.
llvm-svn: 124549
2011-01-29 20:57:16 +00:00
Anders Carlsson
678632fa42
Add RTTIBuilder::GetAddrOfTypeName which uses the newly added CreateOrReplaceCXXRuntimeVariable.
...
Set the visibility for typeinfo names.
llvm-svn: 124548
2011-01-29 20:36:11 +00:00
Nick Lewycky
97a2895e73
Add the select optimization recently added to instcombine to constant folding.
...
This is the one where one of the branches of the select is another select on
the same condition.
llvm-svn: 124547
2011-01-29 20:35:06 +00:00
Anders Carlsson
265aa7c070
Change CodeGenModule::setTypeVisibility to take a TypeVisibilityKind enum instead of an "IsForRTTI" flag.
...
llvm-svn: 124546
2011-01-29 20:24:48 +00:00
Francois Pichet
326e4a2966
Unbreak the MSVC build.
...
The DEBUG() call at line 606 demands to see raw_ostream's definition. I have no idea why this seems to only break MSVC.
llvm-svn: 124545
2011-01-29 20:06:16 +00:00
Nick Lewycky
b89d9a4412
Fix comment.
...
llvm-svn: 124544
2011-01-29 19:55:23 +00:00
Anders Carlsson
caea35dce2
Add a test for RTTI visibility.
...
llvm-svn: 124543
2011-01-29 19:52:22 +00:00
Anders Carlsson
072ef7420a
Replace an isa/cast with a dyn_cast.
...
llvm-svn: 124542
2011-01-29 19:41:00 +00:00
Anders Carlsson
c6a47895f7
Get rid of an unneeded parameter from setGlobalVisibility.
...
llvm-svn: 124541
2011-01-29 19:39:23 +00:00
Anders Carlsson
5963024ff6
Give VTTs the right visibility.
...
llvm-svn: 124540
2011-01-29 19:34:19 +00:00
Anders Carlsson
883fc72c3c
Make emitting a VTT a two-step process, much like emitting a VTable. You first get the address of the VTT, and then pass it to EmitVTTDefinition.
...
llvm-svn: 124539
2011-01-29 19:16:51 +00:00
Anders Carlsson
93be9a90cc
Use CGM.CreateOrReplaceCXXRuntimeVariable in CGVTables.cpp
...
llvm-svn: 124538
2011-01-29 18:25:07 +00:00
Anders Carlsson
da80af3681
Add a new function, to be used by CGRTTI, CGVTables and CGVTT (which each has their own copy of this code).
...
llvm-svn: 124537
2011-01-29 18:20:20 +00:00
Ken Dyck
a45a70cf73
Replace a literal '8' with getCharWidth().
...
llvm-svn: 124536
2011-01-29 17:53:12 +00:00
Frits van Bommel
2a55951d08
Call SimplifyFDivInst() in InstCombiner::visitFDiv().
...
llvm-svn: 124535
2011-01-29 17:50:27 +00:00
Frits van Bommel
c2549661af
Move InstCombine's knowledge of fdiv to SimplifyInstruction().
...
llvm-svn: 124534
2011-01-29 15:26:31 +00:00
Duncan Sands
2e9e4f1be3
Fix typo: should have been testing that X was odd, not V.
...
llvm-svn: 124533
2011-01-29 13:27:00 +00:00
Benjamin Kramer
65bb14d368
Add the missing sub identity "A-(A-B) -> B" to DAGCombine.
...
This happens e.g. for code like "X - X%10" where we lower the modulo operation
to a series of multiplies and shifts that are then subtracted from X, leading to
this missed optimization.
llvm-svn: 124532
2011-01-29 12:34:05 +00:00
Greg Clayton
e1af156bdf
Bumped Xcode project versions to lldb-46 and debugserver-131.
...
llvm-svn: 124531
2011-01-29 07:14:26 +00:00
Greg Clayton
513c26ce9d
Finished up the async attach support. This allows us to request to attach
...
by name or by pid (with or without waiting for a process to launch) and
catch the response asynchronously.
llvm-svn: 124530
2011-01-29 07:10:55 +00:00
Anders Carlsson
fd4834061c
Remove IsDefinition from CodeGenModule::setTypeVisibility; it is always true.
...
llvm-svn: 124529
2011-01-29 05:26:32 +00:00
Anders Carlsson
6b3afd7df1
When trying to get the most derived class, don't assume that we can ignore all casts. We can only ignore derived-to-base and no-op casts. Fixes selfhost.
...
llvm-svn: 124528
2011-01-29 05:04:11 +00:00
Evan Cheng
73c29178ac
Add a test for TCE return duplication.
...
llvm-svn: 124527
2011-01-29 04:53:35 +00:00
Evan Cheng
d983eba7dc
Re-apply r124518 with fix. Watch out for invalidated iterator.
...
llvm-svn: 124526
2011-01-29 04:46:23 +00:00
Jim Ingham
754ab98fae
The m_next_action is simpler if it is an auto_pointer.
...
llvm-svn: 124525
2011-01-29 04:05:41 +00:00
Anders Carlsson
1ae64c5a9d
When calling a virtual member function on a base class and the most derived class is marked 'final', we can devirtualize the call.
...
llvm-svn: 124524
2011-01-29 03:52:01 +00:00
Anders Carlsson
a376b53695
When doing a derived-to-base class through a virtual class, we don't have to get the vbase offset from the vtable if the derived class is marked final.
...
llvm-svn: 124523
2011-01-29 03:18:56 +00:00
Evan Cheng
65b8ccf6ac
Revert r124518. It broke Linux self-host.
...
llvm-svn: 124522
2011-01-29 02:43:04 +00:00
Jim Ingham
2a5fdd4729
Handle the case where the "NextEventAction" wants to kill us on some event other than eStateExited.
...
llvm-svn: 124521
2011-01-29 01:57:31 +00:00
Jim Ingham
bb3a283b3e
Added a completion action class to the Process events so that we can make things like Attach and later Launch start their job, and then return to the event loop while waiting for the work to be done.
...
llvm-svn: 124520
2011-01-29 01:49:25 +00:00
Evan Cheng
d4eff31476
Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.
...
llvm-svn: 124518
2011-01-29 01:29:26 +00:00