- Mar 08, 2009
-
-
Chris Lattner authored
llvm-svn: 66382
-
Nick Lewycky authored
llvm-svn: 66381
-
Duncan Sands authored
final cleaning. This fixes a bunch of testsuite failures. llvm-svn: 66380
-
Sebastian Redl authored
llvm-svn: 66378
-
Chris Lattner authored
This prevents caret diagnostics from the scratch buffer from including other tokens in the scratch buffer that occurred beforei them. llvm-svn: 66375
-
Chris Lattner authored
end of line instead of just the end of buffer. Scratch buffers contain embedded \0's between tokens which are logic line separators. If a normal text buffer contains \0's, it doesn't make a lot of sense to include them in the caret diag output anyway. llvm-svn: 66374
-
Chris Lattner authored
\0's to created tokens instead of making all clients do it. No functionality change. llvm-svn: 66373
-
Chris Lattner authored
from being a NamedDecl to being and ObjCImplDecl. This fixes some valgrind issues where ObjCCategoryImpl's were being cast to NamedDecl and then stuck on name lookup datastructures. llvm-svn: 66372
-
Chris Lattner authored
llvm-svn: 66371
-
Chris Lattner authored
warning to only trigger when there is whitespace or something else after the + as suggested by Eli. llvm-svn: 66370
-
Nick Lewycky authored
llvm-svn: 66369
-
Chris Lattner authored
a vector type instead of into an integer type. llvm-svn: 66368
-
Chris Lattner authored
llvm-svn: 66367
-
Chris Lattner authored
memcpy/memmove'd into or out of. This fixes a serious perf issue that Nate ran into. llvm-svn: 66366
-
Evan Cheng authored
llvm-svn: 66365
-
Chris Lattner authored
instead of a Constant*, which is what the clients of it really want. llvm-svn: 66364
-
Evan Cheng authored
llvm-svn: 66363
-
Chris Lattner authored
llvm-svn: 66362
-
Chris Lattner authored
parent between MemCpyInst and MemMoveInst, simplify some code to use it. llvm-svn: 66361
-
Chris Lattner authored
llvm-svn: 66360
-
Chris Lattner authored
llvm-svn: 66359
-
Chris Lattner authored
For 2009-03-07-FPConstSelect.ll we now produce: _f: xorl %eax, %eax testl %edi, %edi movl $4, %ecx cmovne %rax, %rcx leaq LCPI1_0(%rip), %rax movss (%rcx,%rax), %xmm0 ret previously we produced: _f: subl $4, %esp cmpl $0, 8(%esp) movss LCPI1_0, %xmm0 je LBB1_2 ## entry LBB1_1: ## entry movss LCPI1_1, %xmm0 LBB1_2: ## entry movss %xmm0, (%esp) flds (%esp) addl $4, %esp ret on PPC the code also improves to: _f: cntlzw r2, r3 srwi r2, r2, 5 li r3, lo16(LCPI1_0) slwi r2, r2, 2 addis r3, r3, ha16(LCPI1_0) lfsx f1, r3, r2 blr from: _f: li r2, lo16(LCPI1_1) cmplwi cr0, r3, 0 addis r2, r2, ha16(LCPI1_1) beq cr0, LBB1_2 ; entry LBB1_1: ; entry li r2, lo16(LCPI1_0) addis r2, r2, ha16(LCPI1_0) LBB1_2: ; entry lfs f1, 0(r2) blr This also improves the existing pic-cpool case from: foo: subl $12, %esp call .Lllvm$1.$piclabel .Lllvm$1.$piclabel: popl %eax addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax cmpl $0, 16(%esp) movsd .LCPI1_0@GOTOFF(%eax), %xmm0 je .LBB1_2 # entry .LBB1_1: # entry movsd .LCPI1_1@GOTOFF(%eax), %xmm0 .LBB1_2: # entry movsd %xmm0, (%esp) fldl (%esp) addl $12, %esp ret to: foo: call .Lllvm$1.$piclabel .Lllvm$1.$piclabel: popl %eax addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax xorl %ecx, %ecx cmpl $0, 4(%esp) movl $8, %edx cmovne %ecx, %edx fldl .LCPI1_0@GOTOFF(%eax,%edx) ret This triggers a few dozen times in spec FP 2000. llvm-svn: 66358
-
Chris Lattner authored
llvm-svn: 66357
-
Chris Lattner authored
llvm-svn: 66356
-
Nick Lewycky authored
llvm-svn: 66355
-
Anders Carlsson authored
llvm-svn: 66353
-
Chris Lattner authored
llvm-svn: 66352
-
Chris Lattner authored
"boolify" pointers, generating really awful code because getting the pointer value requires a load itself. Before: _foo: movb $1, _X.b ret _get: xorl %ecx, %ecx movb _X.b, %al testb %al, %al movl $_Y, %eax cmove %ecx, %eax ret With the xform disabled: _foo: movl $_Y, _X ret _get: movl _X, %eax ret llvm-svn: 66351
-
- Mar 07, 2009
-
-
Nick Lewycky authored
llvm-svn: 66350
-
Anders Carlsson authored
llvm-svn: 66349
-
Mikhail Glushenkov authored
llvm-svn: 66347
-
Eli Friedman authored
This is a bit cleaner, and also "fixes" bad code that compares the addresses of the string constants. llvm-svn: 66346
-
Fariborz Jahanian authored
(objc abi specific). llvm-svn: 66345
-
Mike Stump authored
llvm-svn: 66344
-
Sanjiv Gupta authored
llvm-svn: 66343
-
Mike Stump authored
correct, but an extra set of ObjC eyes would be good. llvm-svn: 66342
-
Mike Stump authored
llvm-svn: 66341
-
Duncan Sands authored
and extern_weak_odr. These are the same as the non-odr versions, except that they indicate that the global will only be overridden by an *equivalent* global. In C, a function with weak linkage can be overridden by a function which behaves completely differently. This means that IP passes have to skip weak functions, since any deductions made from the function definition might be wrong, since the definition could be replaced by something completely different at link time. This is not allowed in C++, thanks to the ODR (One-Definition-Rule): if a function is replaced by another at link-time, then the new function must be the same as the original function. If a language knows that a function or other global can only be overridden by an equivalent global, it can give it the weak_odr linkage type, and the optimizers will understand that it is alright to make deductions based on the function body. The code generators on the other hand map weak and weak_odr linkage to the same thing. llvm-svn: 66339
-
Mike Stump authored
testing to to be sure it all works, we'll rip out all the unsupported code. llvm-svn: 66338
-
Mike Stump authored
llvm-svn: 66337
-