- Dec 02, 2010
-
-
Johnny Chen authored
for the types directory quite a bit and masking out potential problems. Enable the delay via an environment variable, instead. llvm-svn: 120719
-
-
Bob Wilson authored
The arm_neon.h header includes stdint.h and it picks up the system header without -ffreestanding. llvm-svn: 120716
-
Fariborz Jahanian authored
objects imported into blocks. //rdar://8594790. Will have a test case coming (as well as one sent to llvm test suite). llvm-svn: 120713
-
Howard Hinnant authored
llvm-svn: 120712
-
Jim Grosbach authored
not thumb2. llvm-svn: 120711
-
Jim Grosbach authored
llvm-svn: 120709
-
Douglas Gregor authored
macri; the extra bool fits into padding anyway. llvm-svn: 120708
-
Wesley Peck authored
llvm-svn: 120707
-
Douglas Gregor authored
TemplateArgumentLocInfo. Unfortunately, this means that we lose some internal consistency checking when building a debug Clang. However, having data structures change size/layout depending on NDEBUG causes pain for clients of the Clang API. llvm-svn: 120706
-
John McCall authored
llvm-svn: 120701
-
John McCall authored
llvm-svn: 120700
-
NAKAMURA Takumi authored
llvm-svn: 120698
-
Rafael Espindola authored
which then avoids running EnsureValid. This cuts the assembly time of the testcase in PR8711 from 2:50 minutes to 1 minute. llvm-svn: 120697
-
Ted Kremenek authored
llvm-svn: 120696
-
Bob Wilson authored
For most intrinsics, there is no need to allocate a temporary to hold the result value; just return it directly. llvm-svn: 120695
-
Bob Wilson authored
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
-
Bob Wilson authored
Since we're casting them for the calls to the builtins, we need this to make sure their types get checked in the same way they would if the intrinsics were implemented as inline functions. llvm-svn: 120693
-
Chris Lattner authored
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
-
Rafael Espindola authored
llvm-svn: 120691
-
Rafael Espindola authored
llvm-svn: 120690
-
Zhanyong Wan authored
llvm-svn: 120689
-
Chris Lattner authored
llvm-svn: 120688
-
Rafael Espindola authored
contain only data. Handle them specially instead of using AddSectionToTheEnd. This moves a hack from the generic assembler to the elf writer. It is also a bit faster and should make other improvements easier. llvm-svn: 120683
-
Eric Christopher authored
rdar://8560647 llvm-svn: 120650
-
Bob Wilson authored
This is in preparation for adding assignments to temporaries to ensure that the proper type checking is done. llvm-svn: 120649
-
Eric Christopher authored
llvm-svn: 120648
-
Eric Christopher authored
llvm-svn: 120647
-
John McCall authored
llvm-svn: 120646
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 120644
-
John McCall authored
into the latter. llvm-svn: 120643
-
Bob Wilson authored
llvm-svn: 120642
-
Bob Wilson authored
llvm-svn: 120641
-
Bob Wilson authored
The bitwise operations are always done with unsigned values, but the result may be signed. llvm-svn: 120640
-
Bob Wilson authored
llvm-svn: 120639
-
Bob Wilson authored
We should not rely on lax-vector-conversions for these intrinsics to work. llvm-svn: 120638
-
Devang Patel authored
llvm-svn: 120637
-
Jakob Stoklund Olesen authored
Scan the MachineFunction for DBG_VALUE instructions, and replace them with a data structure similar to LiveIntervals. The live range of a DBG_VALUE is determined by propagating it down the dominator tree until a new DBG_VALUE is found. When a DBG_VALUE lives in a register, its live range is confined to the live range of the register's value. LiveDebugVariables runs before coalescing, so DBG_VALUEs are not artificially extended when registers are joined. The missing half will recreate DBG_VALUE instructions from the intervals when register allocation is complete. The pass is disabled by default. It can be enabled with the temporary command line option -live-debug-variables. llvm-svn: 120636
-
Jim Grosbach authored
pool entries (LEApcrel pseudo). Ongoing saga of rdar://8542291. llvm-svn: 120635
-