| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 120783
|
|
|
|
|
|
|
|
| |
specified output file since
it just uses diagnostic notes.
llvm-svn: 120773
|
|
|
|
|
|
|
|
| |
diagnostic notes
the sequence of events; useful for testing.
llvm-svn: 120770
|
|
|
|
| |
llvm-svn: 120769
|
|
|
|
| |
llvm-svn: 120768
|
|
|
|
|
|
| |
Patch by Paul Curtis!
llvm-svn: 120759
|
|
|
|
| |
llvm-svn: 120746
|
|
|
|
|
|
|
|
|
| |
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: 120736
|
|
|
|
| |
llvm-svn: 120735
|
|
|
|
| |
llvm-svn: 120729
|
|
|
|
|
|
| |
code I wrote, returning "true" on error is still unnatural.
llvm-svn: 120727
|
|
|
|
| |
llvm-svn: 120724
|
|
|
|
|
|
| |
structs with references in them correctly.
llvm-svn: 120722
|
|
|
|
|
|
|
|
| |
objects imported into blocks. //rdar://8594790.
Will have a test case coming (as well as one
sent to llvm test suite).
llvm-svn: 120713
|
|
|
|
|
|
| |
macri; the extra bool fits into padding anyway.
llvm-svn: 120708
|
|
|
|
| |
llvm-svn: 120701
|
|
|
|
| |
llvm-svn: 120700
|
|
|
|
| |
llvm-svn: 120696
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 120688
|
|
|
|
|
|
| |
rdar://8560647
llvm-svn: 120650
|
|
|
|
| |
llvm-svn: 120646
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
ObjCPropertyRefExpr
into the latter.
llvm-svn: 120643
|
|
|
|
|
|
|
|
| |
Check for compatible gcc, Altivec and Neon vectors before handling the
lax-vector-conversions case. Otherwise there is no way to avoid the
warnings from -Wvector-conversions.
llvm-svn: 120633
|
|
|
|
|
|
| |
to be available in debug vs. release builds.
llvm-svn: 120629
|
|
|
|
|
|
| |
using it
llvm-svn: 120628
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
definition of an Objective-C class. Unlike with C/C++ classes, we
don't have a well-defined point in Sema where Objective-C classes are
checked for completeness, nor do we need to involve Sema when
completing a class. Therefore, we take the appropriate of having the
external AST source mark a particular Objective-C class as having an
external declaration; when using one of the accessors of an
Objective-C class that has an external declaration, we request that
the external AST source fill in the Objective-C class definition.
llvm-svn: 120627
|
|
|
|
|
|
|
| |
to be used in copy helper synthesis of __block
variables. wip.
llvm-svn: 120617
|
|
|
|
|
|
| |
to 'assumeXXX'.
llvm-svn: 120614
|
|
|
|
| |
llvm-svn: 120613
|
|
|
|
| |
llvm-svn: 120610
|
|
|
|
|
|
| |
'evalXXX'.
llvm-svn: 120609
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
reflects what the class actually does.
llvm-svn: 120605
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 120588
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
redeclaration of an enum type differs from that of the original
declaration, from Daniel Wallin
llvm-svn: 120577
|
|
|
|
|
|
| |
underlying type, from Daniel Wallin
llvm-svn: 120576
|
|
|
|
| |
llvm-svn: 120562
|
|
|
|
| |
llvm-svn: 120555
|
|
|
|
| |
llvm-svn: 120554
|
|
|
|
| |
llvm-svn: 120545
|
|
|
|
| |
llvm-svn: 120544
|
|
|
|
|
|
|
| |
specified a syntactically invalid path, it's better to let the OS
diagnose the problem than to silently skip it.
llvm-svn: 120542
|
|
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=279#c3 better.
No functionality change yet.
llvm-svn: 120530
|
|
|
|
| |
llvm-svn: 120528
|
|
|
|
|
|
| |
using ConstantInt::get.
llvm-svn: 120527
|