- Dec 02, 2010
-
-
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
-
Bob Wilson authored
Make sure the -Wvector-conversions does not cause unnecessary warnings when using Neon intrinsics with the correct types. llvm-svn: 120634
-
Bob Wilson authored
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
-
Bob Wilson authored
llvm-svn: 120632
-
Bob Wilson authored
llvm-svn: 120631
-
Devang Patel authored
llvm-svn: 120630
-
Douglas Gregor authored
to be available in debug vs. release builds. llvm-svn: 120629
-
Douglas Gregor authored
llvm-svn: 120628
-
Douglas Gregor authored
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
-
Johnny Chen authored
Don't overwhelm the expression mechanism. Previously, there was no delay between successive invocations of 'expression' command. The test suite run has experienced 'Resume timed out' or similar error messages. Now we currently add a sleep of 1.0 second before issuing the next 'expression' command. llvm-svn: 120626
-
Johnny Chen authored
cases when specifying '-w' to the test driver, by using an environment variable LLDB_TIME_WAIT_BETWEEN_TEST_CASES. llvm-svn: 120625
-
Johnny Chen authored
llvm-svn: 120624
-
Johnny Chen authored
before iterating on it. llvm-svn: 120623
-
- Dec 01, 2010
-
-
Evan Cheng authored
llvm-svn: 120622
-
Rafael Espindola authored
llvm-svn: 120621
-