- Jan 30, 2011
-
-
Anders Carlsson authored
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
-
Jakob Stoklund Olesen authored
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
-
Greg Clayton authored
and implemented it for the EmulateInstructionARM class. llvm-svn: 124563
-
Greg Clayton authored
of the EmulateInstruction class. llvm-svn: 124562
-
Duncan Sands authored
by PR9088 fixes things. llvm-svn: 124561
-
Duncan Sands authored
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
-
Benjamin Kramer authored
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
-
Roman Divacky authored
invocation. This mimics what gcc does and fixes libtool check for libraries. llvm-svn: 124558
-
Nick Lewycky authored
llvm-svn: 124557
-
Nick Lewycky authored
llvm-svn: 124556
-
- Jan 29, 2011
-
-
Anders Carlsson authored
llvm-svn: 124555
-
Anders Carlsson authored
llvm-svn: 124554
-
Anders Carlsson authored
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
-
Bill Wendling authored
llvm-svn: 124552
-
Nico Weber authored
llvm-svn: 124551
-
Anders Carlsson authored
llvm-svn: 124550
-
Anders Carlsson authored
I'm still not sure if having the typenames be visible with -hidden-weak-vtables, but I think it makes sense. llvm-svn: 124549
-
Anders Carlsson authored
Set the visibility for typeinfo names. llvm-svn: 124548
-
Nick Lewycky authored
This is the one where one of the branches of the select is another select on the same condition. llvm-svn: 124547
-
Anders Carlsson authored
Change CodeGenModule::setTypeVisibility to take a TypeVisibilityKind enum instead of an "IsForRTTI" flag. llvm-svn: 124546
-
Francois Pichet authored
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
-
Nick Lewycky authored
llvm-svn: 124544
-
Anders Carlsson authored
llvm-svn: 124543
-
Anders Carlsson authored
llvm-svn: 124542
-
Anders Carlsson authored
llvm-svn: 124541
-
Anders Carlsson authored
llvm-svn: 124540
-
Anders Carlsson authored
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
-
Anders Carlsson authored
llvm-svn: 124538
-
Anders Carlsson authored
Add a new function, to be used by CGRTTI, CGVTables and CGVTT (which each has their own copy of this code). llvm-svn: 124537
-
Ken Dyck authored
llvm-svn: 124536
-
Frits van Bommel authored
llvm-svn: 124535
-
Frits van Bommel authored
llvm-svn: 124534
-
Duncan Sands authored
llvm-svn: 124533
-
Benjamin Kramer authored
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
-
Greg Clayton authored
llvm-svn: 124531
-
Greg Clayton authored
by name or by pid (with or without waiting for a process to launch) and catch the response asynchronously. llvm-svn: 124530
-
Anders Carlsson authored
llvm-svn: 124529
-
Anders Carlsson authored
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
-
Evan Cheng authored
llvm-svn: 124527
-
Evan Cheng authored
llvm-svn: 124526
-