- Jun 28, 2010
-
-
Ted Kremenek authored
llvm-svn: 107064
-
Ted Kremenek authored
Don't crash in InitializePreprocessor() when there is no valid PTHManager. Fixes <rdar://problem/8098441>. llvm-svn: 107061
-
Jim Grosbach authored
llvm-svn: 107060
-
Devang Patel authored
llvm-svn: 107059
-
Dale Johannesen authored
llvm-svn: 107052
-
Chris Lattner authored
llvm-svn: 107050
-
Jakob Stoklund Olesen authored
llvm-svn: 107049
-
Chris Lattner authored
pass/return structs of float/int as float/i32 instead of double/i64 to make the code generated for ABI cleaner. Passing in the low part of a double is the same as passing in a float. For example, we now compile: struct DeclGroup { float NumDecls; }; float foo(DeclGroup D); void bar(DeclGroup *D) { foo(*D); } into: %struct.DeclGroup = type { float } define void @_Z3barP9DeclGroup(%struct.DeclGroup* %D) nounwind { entry: %D.addr = alloca %struct.DeclGroup*, align 8 ; <%struct.DeclGroup**> [#uses=2] %agg.tmp = alloca %struct.DeclGroup, align 4 ; <%struct.DeclGroup*> [#uses=2] store %struct.DeclGroup* %D, %struct.DeclGroup** %D.addr %tmp = load %struct.DeclGroup** %D.addr ; <%struct.DeclGroup*> [#uses=1] %tmp1 = bitcast %struct.DeclGroup* %agg.tmp to i8* ; <i8*> [#uses=1] %tmp2 = bitcast %struct.DeclGroup* %tmp to i8* ; <i8*> [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 4, i32 4, i1 false) %coerce.dive = getelementptr %struct.DeclGroup* %agg.tmp, i32 0, i32 0 ; <float*> [#uses=1] %0 = load float* %coerce.dive, align 1 ; <float> [#uses=1] %call = call float @_Z3foo9DeclGroup(float %0) ; <float> [#uses=0] ret void } instead of: %struct.DeclGroup = type { float } define void @_Z3barP9DeclGroup(%struct.DeclGroup* %D) nounwind { entry: %D.addr = alloca %struct.DeclGroup*, align 8 ; <%struct.DeclGroup**> [#uses=2] %agg.tmp = alloca %struct.DeclGroup, align 4 ; <%struct.DeclGroup*> [#uses=2] %tmp3 = alloca double ; <double*> [#uses=2] store %struct.DeclGroup* %D, %struct.DeclGroup** %D.addr %tmp = load %struct.DeclGroup** %D.addr ; <%struct.DeclGroup*> [#uses=1] %tmp1 = bitcast %struct.DeclGroup* %agg.tmp to i8* ; <i8*> [#uses=1] %tmp2 = bitcast %struct.DeclGroup* %tmp to i8* ; <i8*> [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 4, i32 4, i1 false) %coerce.dive = getelementptr %struct.DeclGroup* %agg.tmp, i32 0, i32 0 ; <float*> [#uses=1] %0 = bitcast double* %tmp3 to float* ; <float*> [#uses=1] %1 = load float* %coerce.dive ; <float> [#uses=1] store float %1, float* %0, align 1 %2 = load double* %tmp3 ; <double> [#uses=1] %call = call float @_Z3foo9DeclGroup(double %2) ; <float> [#uses=0] ret void } which is this machine code (at -O0): __Z3barP9DeclGroup: subq $24, %rsp movq %rdi, 16(%rsp) movq 16(%rsp), %rdi leaq 8(%rsp), %rax movl (%rdi), %ecx movl %ecx, (%rax) movss 8(%rsp), %xmm0 callq __Z3foo9DeclGroup addq $24, %rsp ret vs this: __Z3barP9DeclGroup: subq $24, %rsp movq %rdi, 16(%rsp) movq 16(%rsp), %rdi leaq 8(%rsp), %rax movl (%rdi), %ecx movl %ecx, (%rax) movss 8(%rsp), %xmm0 movss %xmm0, (%rsp) movsd (%rsp), %xmm0 callq __Z3foo9DeclGroup addq $24, %rsp ret At -O3, it is the difference between this now: __Z3barP9DeclGroup: movss (%rdi), %xmm0 jmp __Z3foo9DeclGroup # TAILCALL vs this before: __Z3barP9DeclGroup: movl (%rdi), %eax movd %rax, %xmm0 jmp __Z3foo9DeclGroup # TAILCALL llvm-svn: 107048
-
Fariborz Jahanian authored
llvm-svn: 107047
-
Jakob Stoklund Olesen authored
you would expect. Don't assert on that case, just give up. This fixes PR7513. llvm-svn: 107046
-
Jakob Stoklund Olesen authored
llvm-svn: 107045
-
Fariborz Jahanian authored
name. Fixes radar 7860965. llvm-svn: 107044
-
Jakob Stoklund Olesen authored
When an instruction has tied operands and physreg defines, we must take extra care that the tied operands conflict with neither physreg defs nor uses. The special treatment is given to inline asm and instructions with tied operands / early clobbers and physreg defines. This fixes PR7509. llvm-svn: 107043
-
Eric Christopher authored
llvm-svn: 107042
-
Chris Lattner authored
llvm-svn: 107040
-
Eric Christopher authored
Remove library check and regenerate configure. llvm-svn: 107028
-
Devang Patel authored
Radar 8122864. llvm-svn: 107027
-
Devang Patel authored
llvm-svn: 107025
-
Daniel Dunbar authored
llvm-svn: 107024
-
Howard Hinnant authored
llvm-svn: 107022
-
Rafael Espindola authored
llvm-svn: 107021
-
Chris Lattner authored
I broke negate of FP values. llvm-svn: 107019
-
Chris Lattner authored
llvm-svn: 107018
-
Gabor Greif authored
llvm-svn: 107017
-
Gabor Greif authored
llvm-svn: 107016
-
Gabor Greif authored
llvm-svn: 107015
-
Gabor Greif authored
llvm-svn: 107014
-
Dan Gohman authored
interprocedurally. Note that as of this writing, existing alias analysis passes are not prepared to be used interprocedurally. llvm-svn: 107013
-
Dan Gohman authored
llvm-svn: 107012
-
Dan Gohman authored
name, specifically the "lib" prefix. llvm-svn: 107011
-
Daniel Dunbar authored
block, not...", it caused a bunch of nightly test regressions. llvm-svn: 107009
-
Craig Silverstein authored
we ignoring before. To give access to the names on the initializer, which aren't a type or an expr or a decl, I've introduced a new TraverseInitializer. By default, it just traverses on the expr that the name is being initialized to. Reviewed by chandlerc. Tested via clang's 'make test'. llvm-svn: 107008
-
Sebastian Redl authored
Introduce Expr::Classify and Expr::ClassifyModifiable, which determine the classification of an expression under the C++0x taxology (value category). Reimplement isLvalue and isModifiableLvalue using these functions. No regressions in the test suite from this, and my rough performance check doesn't show any regressions either. llvm-svn: 107007
-
Gabor Greif authored
llvm-svn: 107004
-
Gabor Greif authored
llvm-svn: 107003
-
Gabor Greif authored
llvm-svn: 107002
-
Gabor Greif authored
(in both CallInst and InvokeInst) also add a (short-lived) constant to CallInst, that names the operand index of the first call argument. This is strictly transitional and should not be used for new code. llvm-svn: 107001
-
Gabor Greif authored
llvm-svn: 107000
-
Argyrios Kyrtzidis authored
llvm-svn: 106999
-
Argyrios Kyrtzidis authored
llvm-svn: 106998
-