| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
no property accessor class method to be found, instead of
crashing in IRGen. // rdar://8703553
llvm-svn: 120855
|
|
|
|
| |
llvm-svn: 120796
|
|
|
|
|
|
| |
Patch by Paul Curtis!
llvm-svn: 120759
|
|
|
|
|
|
|
|
|
| |
about deprecated Objective-C pointer conversions. Plus, make sure to
actually set an appropriate AssignmentAction when performing an
implicit conversion from an InitializationSequence. Fixes regressions
in the GCC DejaGNU testsuite.
llvm-svn: 120744
|
|
|
|
| |
llvm-svn: 120737
|
|
|
|
| |
llvm-svn: 120736
|
|
|
|
| |
llvm-svn: 120735
|
|
|
|
| |
llvm-svn: 120729
|
|
|
|
|
|
| |
structs with references in them correctly.
llvm-svn: 120722
|
|
|
|
| |
llvm-svn: 120717
|
|
|
|
|
|
|
| |
The arm_neon.h header includes stdint.h and it picks up the system header
without -ffreestanding.
llvm-svn: 120716
|
|
|
|
|
|
|
|
| |
objects imported into blocks. //rdar://8594790.
Will have a test case coming (as well as one
sent to llvm test suite).
llvm-svn: 120713
|
|
|
|
|
|
|
|
| |
This does not work so well with the -fno-lax-vector-conversions option for
testing the arm_neon.h header but that is a really useful test, so I split
this out to a separate Sema test to check for the warning.
llvm-svn: 120694
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
when an initializer is variable (I handled the constant case in a previous
patch). This has three pieces:
1. Enhance AggValueSlot to have a 'isZeroed' bit to tell CGExprAgg that
the memory being stored into has previously been memset to zero.
2. Teach CGExprAgg to not emit stores of zero to isZeroed memory.
3. Teach CodeGenFunction::EmitAggExpr to scan initializers to determine
whether they are profitable to emit a memset + inividual stores vs
stores for everything.
The heuristic used is that a global has to be more than 16 bytes and
has to be 3/4 zero to be candidate for this xform. The two testcases
are illustrative of the scenarios this catches. We now codegen test9 into:
call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 400, i32 4, i1 false)
%.array = getelementptr inbounds [100 x i32]* %Arr, i32 0, i32 0
%tmp = load i32* %X.addr, align 4
store i32 %tmp, i32* %.array
and test10 into:
call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 392, i32 8, i1 false)
%tmp = getelementptr inbounds %struct.b* %S, i32 0, i32 0
%tmp1 = getelementptr inbounds %struct.a* %tmp, i32 0, i32 0
%tmp2 = load i32* %X.addr, align 4
store i32 %tmp2, i32* %tmp1, align 4
%tmp5 = getelementptr inbounds %struct.b* %S, i32 0, i32 3
%tmp10 = getelementptr inbounds %struct.a* %tmp5, i32 0, i32 4
%tmp11 = load i32* %X.addr, align 4
store i32 %tmp11, i32* %tmp10, align 4
Previously we produced 99 stores of zero for test9 and also tons for test10.
This xforms should substantially speed up -O0 builds when it kicks in as well
as reducing code size and optimizer heartburn on insane cases. This resolves
PR279.
llvm-svn: 120692
|
|
|
|
|
|
| |
rdar://8560647
llvm-svn: 120650
|
|
|
|
| |
llvm-svn: 120648
|
|
|
|
| |
llvm-svn: 120647
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a global is larger than 32 bytes and has fewer than 6 non-zero values in the
initializer. Previously we'd turn something like this:
char test8(int X) {
char str[10000] = "abc";
into a 10K global variable which we then memcpy'd from. Now we generate:
%str = alloca [10000 x i8], align 16
%tmp = getelementptr inbounds [10000 x i8]* %str, i64 0, i64 0
call void @llvm.memset.p0i8.i64(i8* %tmp, i8 0, i64 10000, i32 16, i1 false)
store i8 97, i8* %tmp, align 16
%0 = getelementptr [10000 x i8]* %str, i64 0, i64 1
store i8 98, i8* %0, align 1
%1 = getelementptr [10000 x i8]* %str, i64 0, i64 2
store i8 99, i8* %1, align 2
Which is much smaller in space and also likely faster.
This is part of PR279
llvm-svn: 120645
|
|
|
|
| |
llvm-svn: 120642
|
|
|
|
|
|
|
| |
Make sure the -Wvector-conversions does not cause unnecessary warnings when
using Neon intrinsics with the correct types.
llvm-svn: 120634
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
conversions. Previously, we would end up collapsing qualification
conversions into the Objective-C pointer conversion step, including
(possibly) stripping qualifiers that shouldn't be removed.
This generalizes BuildSimilarlyQualifiedPointerType() to also work on
Objective-C object pointers, then eliminates the (redundant, not
totally correct) BuildSimilarlyQualifiedObjCObjectPointerType()
function.
Fixes <rdar://problem/8714395>.
llvm-svn: 120607
|
|
|
|
|
|
|
|
|
| |
instantiations, GCC also supports "inline" and "static" explicit
template instantiations. Parse and warn about such constructs, but
don't implement the semantics of either "inline" or "static". They
don't seem to be widely used.
llvm-svn: 120599
|
|
|
|
|
|
|
|
|
|
| |
disambiguate between an expression (for a bit-field width) and a type
(for a fixed underlying type). Since the disambiguation can be
expensive (due to tentative parsing), we perform a simplistic
disambiguation based on one-token lookahead before going into the
full-blown tentative parsing. Based on a patch by Daniel Wallin.
llvm-svn: 120582
|
|
|
|
| |
llvm-svn: 120555
|
|
|
|
| |
llvm-svn: 120553
|
|
|
|
| |
llvm-svn: 120545
|
|
|
|
| |
llvm-svn: 120523
|
|
|
|
|
|
|
| |
'Class' type, disgnostic should refere to a
class method. Fixes // rdar://8592156
llvm-svn: 120517
|
|
|
|
|
|
|
| |
literal declaration caused crash in CodeGen.
This patch fixes it. pr8707
llvm-svn: 120486
|
|
|
|
|
|
|
|
|
|
|
|
| |
label addresses or references to temporaries, e.g:
const int& g2() {
int s1;
int &s2 = s1; // expected-note {{binding reference variable 's2' here}}
return s2; // expected-warning {{reference to stack memory associated with local variable 's1' returned}}
}
llvm-svn: 120483
|
|
|
|
|
|
| |
declarations.
llvm-svn: 120448
|
|
|
|
|
|
|
| |
(// rdar://8592641). Also rename LANGUAGEID to
LanguageID.
llvm-svn: 120437
|
|
|
|
|
|
|
|
|
|
| |
trap the serialized preprocessing records (macro definitions, macro
instantiations, macro definitions) from the generation of the
precompiled preamble, then replay those when walking the list of
preprocessed entities. This eliminates a bug where clang_getCursor()
wasn't able to find preprocessed-entity cursors in the preamble.
llvm-svn: 120396
|
|
|
|
| |
llvm-svn: 120389
|
|
|
|
|
|
| |
a non-dependent type.
llvm-svn: 120384
|
|
|
|
| |
llvm-svn: 120379
|
|
|
|
|
|
| |
hit when self-host.
llvm-svn: 120351
|
|
|
|
|
|
|
| |
when checking for integer signed/unsigned-ness. PR8694,
// rdar://8707031
llvm-svn: 120345
|
|
|
|
|
|
| |
The issue was brought to our attention by Matthieu Monrocq.
llvm-svn: 120331
|
|
|
|
|
|
| |
http://http://llvm.org/pr8479.
llvm-svn: 120299
|
|
|
|
| |
llvm-svn: 120296
|
|
|
|
| |
llvm-svn: 120291
|
|
|
|
|
|
| |
dependencies.
llvm-svn: 120280
|
|
|
|
| |
llvm-svn: 120267
|
|
|
|
| |
llvm-svn: 120266
|
|
|
|
|
|
| |
object. Fixes PR8683.
llvm-svn: 120247
|
|
|
|
| |
llvm-svn: 120184
|
|
|
|
|
|
| |
in C++0x. Patch by Jakub Wieczorek.
llvm-svn: 120182
|
|
|
|
|
|
| |
based on the known properties of the casted-to type. Fixes a crash on spirit.
llvm-svn: 120180
|
|
|
|
| |
llvm-svn: 120173
|