| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 84005
|
| |
|
|
| |
llvm-svn: 84004
|
| |
|
|
| |
llvm-svn: 84003
|
| |
|
|
|
|
| |
libprofile_rt.bca build.
llvm-svn: 84002
|
| |
|
|
| |
llvm-svn: 84001
|
| |
|
|
| |
llvm-svn: 84000
|
| |
|
|
| |
llvm-svn: 83999
|
| |
|
|
| |
llvm-svn: 83998
|
| |
|
|
|
|
| |
for purposes other than inlining.
llvm-svn: 83997
|
| |
|
|
|
|
|
| |
this will increase the likelihood of common code getting sunk towards
the unwind.
llvm-svn: 83996
|
| |
|
|
| |
llvm-svn: 83995
|
| |
|
|
| |
llvm-svn: 83994
|
| |
|
|
| |
llvm-svn: 83993
|
| |
|
|
|
|
|
|
| |
BasicBlocks, so that it doesn't blindly procede in the presence of
large individual BasicBlocks. This addresses a class of code-size
expansion problems.
llvm-svn: 83992
|
| |
|
|
| |
llvm-svn: 83990
|
| |
|
|
| |
llvm-svn: 83988
|
| |
|
|
|
|
|
| |
GlobalValue is destroyed. Function destruction still leaks machine code and
can crash on leaked stubs, but this is some progress.
llvm-svn: 83987
|
| |
|
|
|
|
| |
DeclRefExpr. Fixes PR5177.
llvm-svn: 83986
|
| |
|
|
| |
llvm-svn: 83985
|
| |
|
|
|
|
| |
not mean "there is no debug info in this module". :)
llvm-svn: 83984
|
| |
|
|
|
|
| |
Patch by Johnny Chen.
llvm-svn: 83983
|
| |
|
|
| |
llvm-svn: 83982
|
| |
|
|
|
|
| |
OverrideMethod.
llvm-svn: 83981
|
| |
|
|
|
|
| |
specialization. This completes C++ [temp.expl.spec]!
llvm-svn: 83980
|
| |
|
|
| |
llvm-svn: 83979
|
| |
|
|
|
|
| |
Let replaceAllUsesWith() adjust VHs even though there are no uses.
llvm-svn: 83978
|
| |
|
|
|
|
| |
right approach for custom metadata data in general. However, right now the only custom data user, "dbg", expects this behavior while FE is constructing llvm IR with debug info.
llvm-svn: 83977
|
| |
|
|
|
|
| |
-fno-unit-at-a-time which is ignored by GCC, we should warn about this not error out.
llvm-svn: 83976
|
| |
|
|
| |
llvm-svn: 83975
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
template as a specialization. For example, this occurs with:
template<typename T>
struct X {
template<typename U> struct Inner { /* ... */ };
};
template<> template<typename T>
struct X<int>::Inner {
T member;
};
We need to treat templates that are member specializations as special
in two contexts:
- When looking for a definition of a member template, we look
through the instantiation chain until we hit the primary template
*or a member specialization*. This allows us to distinguish
between the primary "Inner" definition and the X<int>::Inner
definition, above.
- When computing all of the levels of template arguments needed to
instantiate a member template, don't add template arguments
from contexts outside of the instantiation of a member
specialization, since the user has already manually substituted
those arguments.
Fix up the existing test for p18, which was actually wrong (but we
didn't diagnose it because of our poor handling of member
specializations of templates), and add a new test for member
specializations of templates.
llvm-svn: 83974
|
| |
|
|
| |
llvm-svn: 83973
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function templates.
This commit ensures that friend function templates are constructed as
FunctionTemplateDecls rather than partial FunctionDecls (as they
previously were). It then implements template instantiation for friend
function templates, injecting the friend function template only when
no previous declaration exists at the time of instantiation.
Oh, and make sure that explicit specialization declarations are not
friends.
llvm-svn: 83970
|
| |
|
|
|
|
| |
offsets for covariant thunks.
llvm-svn: 83965
|
| |
|
|
| |
llvm-svn: 83964
|
| |
|
|
|
|
| |
write to it.
llvm-svn: 83963
|
| |
|
|
|
|
| |
these constants unsigned.
llvm-svn: 83962
|
| |
|
|
| |
llvm-svn: 83960
|
| |
|
|
|
|
| |
modify through the pointer they're given.
llvm-svn: 83959
|
| |
|
|
|
|
|
|
|
|
| |
which is a common idiom to improve PIC'ness of code using the addr of
label extension. This implementation is a gross hack, but the only other
alternative would be to teach evalutate about this horrid combination.
While GCC allows things like "&&foo - &&bar + 1", people don't use this
in practice. This implements PR5131.
llvm-svn: 83957
|
| |
|
|
|
|
| |
sections of memory objects.
llvm-svn: 83953
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
1. CGF now has fewer bytes of state (one pointer instead of a vector).
2. The generated code is determinstic, instead of getting labels in
'map order' based on pointer addresses.
3. Clang now emits one 'indirect goto switch' for each function, instead
of one for each indirect goto. This fixes an M*N = N^2 IR size issue
when there are lots of address-taken labels and lots of indirect gotos.
4. This also makes the default cause do something useful, reducing the
size of the jump table needed (by one).
llvm-svn: 83952
|
| |
|
|
|
|
| |
hairier (but nonsensical) example.
llvm-svn: 83951
|
| |
|
|
| |
llvm-svn: 83950
|
| |
|
|
| |
llvm-svn: 83949
|
| |
|
|
|
|
|
| |
for a null pointer. In other words, "&&foo != NULL" will always work out to
true.
llvm-svn: 83948
|
| |
|
|
|
|
| |
more places in clang codegen now.
llvm-svn: 83947
|
| |
|
|
| |
llvm-svn: 83945
|
| |
|
|
| |
llvm-svn: 83943
|
| |
|
|
| |
llvm-svn: 83942
|
| |
|
|
| |
llvm-svn: 83941
|