- Feb 28, 2008
-
-
Eli Friedman authored
llvm-svn: 47702
-
Anton Korobeynikov authored
uses the same encoding everywhere. Linux FIXME'ed. llvm-svn: 47701
-
Devang Patel authored
llvm-svn: 47700
-
Anton Korobeynikov authored
provide TAI hook for selection of EH data emission format. Currently unused. llvm-svn: 47699
-
Dale Johannesen authored
llvm-svn: 47698
-
- Feb 27, 2008
-
-
Anton Korobeynikov authored
llvm-svn: 47697
-
Dale Johannesen authored
same size as an int type by doing a bitconvert of load/store of the int type (same algorithm as floating point). This makes them work for ppc Altivec. There was some code that purported to handle loads of (some) vectors by splitting them into two smaller vectors, but getExtLoad rejects subvector loads, so this could never have worked; the patch removes it. llvm-svn: 47696
-
Nick Kledzik authored
llvm-svn: 47695
-
Nick Kledzik authored
llvm-svn: 47694
-
Ted Kremenek authored
llvm-svn: 47693
-
Dan Gohman authored
and was causing aborts with the new APInt changes. This may also be fixing an obscure ppc64 bug. llvm-svn: 47692
-
Ted Kremenek authored
llvm-svn: 47691
-
Ted Kremenek authored
llvm-svn: 47690
-
Ted Kremenek authored
llvm-svn: 47689
-
Evan Cheng authored
llvm-svn: 47688
-
Evan Cheng authored
llvm-svn: 47687
-
Dan Gohman authored
llvm-svn: 47686
-
Ted Kremenek authored
variables as uninitialized, and only "initialize" static function variables. llvm-svn: 47683
-
Lauro Ramos Venancio authored
Disable internalize. Unfortunately, the configure scripts are not ready for some link time optimizations. llvm-svn: 47682
-
Ted Kremenek authored
Removed VarDecl::hasAutoStorage() (only used by hasLocalStorage()) Merged logic from VarDecl::hasAutoStorage() into VarDecl::hasLocalStorage(), and expanded (fixed) the logic of hasLocalStorage() to handle Extern and PrivateExtern. Renamed Expr::hasStaticStorage() to Expr::hasGlobalStorage(). llvm-svn: 47681
-
Dan Gohman authored
llvm-svn: 47680
-
Ted Kremenek authored
llvm-svn: 47678
-
Chris Lattner authored
llvm-svn: 47677
-
Duncan Sands authored
llvm-svn: 47676
-
Ted Kremenek authored
properly back-patched. llvm-svn: 47675
-
Lauro Ramos Venancio authored
Emit an error when a library is not found. It is the GNU ld behavior and it is expected by the configure scripts. llvm-svn: 47674
-
Lauro Ramos Venancio authored
Fix regression in Applications/ClamAV/clamscan. llvm-svn: 47673
-
Duncan Sands authored
approach taken is different to that in LegalizeDAG when it is a question of expanding or promoting the result type: for example, if extracting an i64 from a <2 x i64>, when i64 needs expanding, it bitcasts the vector to <4 x i32>, extracts the appropriate two i32's, and uses those for the Lo and Hi parts. Likewise, when extracting an i16 from a <4 x i16>, and i16 needs promoting, it bitcasts the vector to <2 x i32>, extracts the appropriate i32, twiddles the bits if necessary, and uses that as the promoted value. This puts more pressure on bitcast legalization, and I've added the appropriate cases. They needed to be added anyway since users can generate such bitcasts too if they want to. Also, when considering various cases (Legal, Promote, Expand, Scalarize, Split) it is a pain that expand can correspond to Expand, Scalarize or Split, so I've changed the LegalizeTypes enum so it lists those different cases - now Expand only means splitting a scalar in two. The code produced is the same as by LegalizeDAG for all relevant testcases, except for 2007-10-31-extractelement-i64.ll, where the code seems to have improved (see below; can an expert please tell me if it is better or not). Before < vs after >. < subl $92, %esp < movaps %xmm0, 64(%esp) < movaps %xmm0, (%esp) < movl 4(%esp), %eax < movl %eax, 28(%esp) < movl (%esp), %eax < movl %eax, 24(%esp) < movq 24(%esp), %mm0 < movq %mm0, 56(%esp) --- > subl $44, %esp > movaps %xmm0, 16(%esp) > pshufd $1, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movd %xmm0, (%esp) > movq (%esp), %mm0 > movq %mm0, 8(%esp) < subl $92, %esp < movaps %xmm0, 64(%esp) < movaps %xmm0, (%esp) < movl 12(%esp), %eax < movl %eax, 28(%esp) < movl 8(%esp), %eax < movl %eax, 24(%esp) < movq 24(%esp), %mm0 < movq %mm0, 56(%esp) --- > subl $44, %esp > movaps %xmm0, 16(%esp) > pshufd $3, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movhlps %xmm0, %xmm0 > movd %xmm0, (%esp) > movq (%esp), %mm0 > movq %mm0, 8(%esp) < subl $92, %esp < movaps %xmm0, 64(%esp) --- > subl $44, %esp < movl 16(%esp), %eax < movl %eax, 48(%esp) < movl 20(%esp), %eax < movl %eax, 52(%esp) < movaps %xmm0, (%esp) < movl 4(%esp), %eax < movl %eax, 60(%esp) < movl (%esp), %eax < movl %eax, 56(%esp) --- > pshufd $1, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movd %xmm0, (%esp) > movd %xmm1, 12(%esp) > movd %xmm0, 8(%esp) < subl $92, %esp < movaps %xmm0, 64(%esp) --- > subl $44, %esp < movl 24(%esp), %eax < movl %eax, 48(%esp) < movl 28(%esp), %eax < movl %eax, 52(%esp) < movaps %xmm0, (%esp) < movl 12(%esp), %eax < movl %eax, 60(%esp) < movl 8(%esp), %eax < movl %eax, 56(%esp) --- > pshufd $3, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movhlps %xmm0, %xmm0 > movd %xmm0, (%esp) > movd %xmm1, 12(%esp) > movd %xmm0, 8(%esp) llvm-svn: 47672
-
Gabor Greif authored
llvm-svn: 47671
-
Duncan Sands authored
operand of a VECTOR_SHUFFLE. The mask is a vector of constant integers. The code in LegalizeDAG doesn't bother to legalize the mask, since it's basically just storage for a bunch of constants, however LegalizeTypes is more picky. The problem is that there may not exist any legal vector-of-integers type with a legal element type, so it is impossible to create a legal mask! Unless of course you cheat by creating a BUILD_VECTOR where the operands have a different type to the element type of the vector being built... This is pretty ugly but works - all relevant tests in the testsuite pass, and produce the same assembler with and without LegalizeTypes. llvm-svn: 47670
-
Duncan Sands authored
llvm-svn: 47669
-
Evan Cheng authored
Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it. llvm-svn: 47668
-
Duncan Sands authored
llvm-svn: 47667
-
Ted Kremenek authored
successor of blocks created above it. llvm-svn: 47666
-
Ted Kremenek authored
In such cases, handle them just like Visit(). llvm-svn: 47665
-
Ted Kremenek authored
globals/parameters at the beginning of the analysis. llvm-svn: 47664
-
Bill Wendling authored
llvm-svn: 47663
-
Chris Lattner authored
llvm-svn: 47662
-
Ted Kremenek authored
llvm-svn: 47661
-
Chris Lattner authored
stack slot and store if the SINT_TO_FP is actually legal. This allows us to compile: double a(double b) {return (unsigned)b;} to: _a: cvttsd2siq %xmm0, %rax movl %eax, %eax cvtsi2sdq %rax, %xmm0 ret instead of: _a: subq $8, %rsp cvttsd2siq %xmm0, %rax movl %eax, %eax cvtsi2sdq %rax, %xmm0 addq $8, %rsp ret crazy. llvm-svn: 47660
-