- Aug 13, 2007
-
-
Chris Lattner authored
llvm-svn: 41050
-
Dan Gohman authored
see if the base register is already occupied before assuming it can be used. This fixes bogus code generation in the accompanying testcase. llvm-svn: 41049
-
Chris Lattner authored
llvm-svn: 41048
-
Chris Lattner authored
llvm-svn: 41047
-
Chris Lattner authored
Into: inttoptr (i64 0 to i8*) -> null This occurs in the example in PR1602. With this fixed, we now compile the example in PR1602 into fully "devirtualized" code: define void @_Z1g1S(%struct.S* noalias %s) { entry: %tmp131415 = getelementptr %struct.S* %s, i32 0, i32 0 ; <i32 (...)***> [#uses=1] %tmp16 = load i32 (...)*** %tmp131415, align 4 ; <i32 (...)**> [#uses=1] %tmp26277 = load i32 (...)** %tmp16 ; <i32 (...)*> [#uses=1] %tmp2829 = bitcast i32 (...)* %tmp26277 to void (%struct.S*)* ; <void (%struct.S*)*> [#uses=1] tail call void %tmp2829( %struct.S* %s ) ret void } This still has the vtable dispatch (as required) but does not have any pointer to method cruft left. llvm-svn: 41046
-
Evan Cheng authored
llvm-svn: 41043
-
Reid Spencer authored
the list of link time passes to be run, just as for opt, with the -debug-pass=Arguments option. llvm-svn: 41040
-
Reid Spencer authored
llvm-svn: 41039
-
- Aug 12, 2007
-
-
Chris Lattner authored
llvm-svn: 41034
-
Reid Spencer authored
better, gives the compiler a chance to validate the cast and reduces warnings if the user turns on -Wold-style-cast option. llvm-svn: 41033
-
Devang Patel authored
llvm-svn: 41029
-
Reid Spencer authored
llvm-svn: 41028
-
Evan Cheng authored
llvm-svn: 41024
-
Chris Lattner authored
us to fold the entry block of PR1602 to false instead of: br i1 icmp eq (i32 and (i32 ptrtoint (void (%struct.S*)* inttoptr (i64 1 to void (%struct.S*)*) to i32), i32 1), i32 0), label %cond_next, label %cond_true llvm-svn: 41023
-
- Aug 11, 2007
-
-
Chris Lattner authored
have complex pointer manipulation going on. This allows us to compile stuff like this: __m128i foo(__m128i x){ static const unsigned int c_0[4] = { 0, 0, 0, 0 }; __m128i v_Zero = _mm_loadu_si128((__m128i*)c_0); x = _mm_unpacklo_epi8(x, v_Zero); return x; } into: _foo: xorps %xmm1, %xmm1 punpcklbw %xmm1, %xmm0 ret llvm-svn: 41022
-
Chris Lattner authored
llvm-svn: 41021
-
Chris Lattner authored
able to 3-addressify away stuff like this: movl %ecx, %eax decl %eax llvm-svn: 41020
-
Reid Spencer authored
the pass arguments that it supports. llvm-svn: 41019
-
Reid Spencer authored
llvm-svn: 41018
-
Bill Wendling authored
Make a 'memop' pattern just for them. llvm-svn: 41017
-
Evan Cheng authored
llvm-svn: 41016
-
Chris Lattner authored
llvm-svn: 41015
-
Chris Lattner authored
aggregate value and scalar expression computation are very different, this gets them away from each other. This causes a temporary regression on some complex number examples. llvm-svn: 41014
-
Christopher Lamb authored
llvm-svn: 41013
-
Christopher Lamb authored
llvm-svn: 41012
-
- Aug 10, 2007
-
-
Chris Lattner authored
llvm-svn: 41011
-
Christopher Lamb authored
Increase efficiency of sign_extend_inreg by using subregisters for truncation. As the README suggests sign_extend_subreg is selected to (sext(trunc)). llvm-svn: 41010
-
Christopher Lamb authored
llvm-svn: 41009
-
Ted Kremenek authored
by CheckPrintfArguments to determine if a given printf function accepts a va_arg argument. llvm-svn: 41008
-
Christopher Lamb authored
Add 2-addr to 3-addr promotion code that allows 32-bit LEA to be used via subregisters when 16-bit LEA is disabled. llvm-svn: 41007
-
Ted Kremenek authored
KnownFunctionIDs. This allows us to test for a printf-like function that accepts a va_arg argument using a range comparison. llvm-svn: 41006
-
Christopher Lamb authored
Move isSubRegOf into MRegisterInfo. Fix a missed move elimination in LowerSubregs and add more debugging output there. llvm-svn: 41005
-
Chris Lattner authored
llvm-svn: 41004
-
Chris Lattner authored
"I've coded up some support in clang to flag warnings for non-constant format strings used in calls to printf-like functions (all the functions listed in "man fprintf"). Non-constant format strings are a source of many security exploits in C/C++ programs, and I believe are currently detected by gcc using the flag -Wformat-nonliteral." llvm-svn: 41003
-
Chris Lattner authored
llvm-svn: 41002
-
Devang Patel authored
llvm-svn: 41001
-
Chris Lattner authored
preprocessor state, causing bogus diagnostics when the file is parsed for real. This implements Misc/diag-checker.c. Thanks to Ted for noticing this. llvm-svn: 41000
-
Steve Naroff authored
Make sure the arithmetic conversion are done for relation and equality operators. This fixes the following... eypedef short S; int test(S X, long long Y) { return X < Y; } Before... (CompoundStmt 0x2905d00 (ReturnStmt 0x2905cf0 (BinaryOperator 0x2905cd0 'int' '<' (ImplicitCastExpr 0x2905cc0 'int' (DeclRefExpr 0x2905c80 'S':'short' Decl='X' 0x2905c20)) (DeclRefExpr 0x2905ca0 'long long' Decl='Y' 0x2905c50)))) After... (CompoundStmt 0x2b05c30 (ReturnStmt 0x2b05c20 (BinaryOperator 0x2b05c00 'int' '<' (ImplicitCastExpr 0x2b05bf0 'long long' (DeclRefExpr 0x2b05bb0 'S':'short' Decl='X' 0x2b05b50)) (DeclRefExpr 0x2b05bd0 'long long' Decl='Y' 0x2b05b80)))) llvm-svn: 40999
-
Devang Patel authored
llvm-svn: 40998
-
Devang Patel authored
llvm-svn: 40997
-