- Mar 09, 2009
-
-
Dan Gohman authored
Use VoidTy instead, to be properly conservative. llvm-svn: 66463
-
Dan Gohman authored
of an instruction into a helper function. llvm-svn: 66460
-
Devang Patel authored
llvm-svn: 66454
-
Dan Gohman authored
have to be done twice. llvm-svn: 66449
-
Dan Gohman authored
llvm-svn: 66446
-
Dan Gohman authored
before it does any processing. llvm-svn: 66443
-
Evan Cheng authored
ARM target now also recognize triplets like thumbv6-apple-darwin and set thumb mode and arch subversion. Eventually thumb triplets will go way and replaced with function notes. llvm-svn: 66435
-
Chris Lattner authored
llvm-svn: 66434
-
Evan Cheng authored
ARM isLegalAddressImmediate should check if type is a simple type now that optimizer can create values of funky scalar types. llvm-svn: 66429
-
Evan Cheng authored
Yet another case where the spiller marked two uses of the same register on the same instruction as kill. This fixes PR3706. llvm-svn: 66428
-
Duncan Sands authored
be needed now that these intrinsics are marked as not accessing memory. llvm-svn: 66420
-
Chris Lattner authored
existed was for llvm-gcc 3.4 (which used the __main hack) which is really really long dead. llvm-svn: 66417
-
Chris Lattner authored
whether a global is dead or not. This should fix PR3749 - linker adds spurious use to appending globals. I can't reasonably add a testcase for this, because the bc writer/reader strip dead constant users. llvm-svn: 66404
-
Chris Lattner authored
llvm-svn: 66403
-
Owen Anderson authored
llvm-svn: 66399
-
Chris Lattner authored
hopefully no functionality change. llvm-svn: 66398
-
Bill Wendling authored
on the number of times a std::string is created and copied. llvm-svn: 66396
-
Chris Lattner authored
llvm-svn: 66395
-
Chris Lattner authored
validate an invariant so that the asmparser rejects a bad construct instead of the verifier. Before: llvm-as: assembly parsed, but does not verify as correct! Invalid struct return type! i64 (%struct.Type*, %struct.Type*)* @foo after: llvm-as: t.ll:5:8: functions with 'sret' argument must return void define i64 @foo(%struct.Type* noalias nocapture sret %agg.result, %struct.Type* nocapture byval %t) nounwind { ^ Second, check that void is only used where allowed (in function return types) not in arbitrary places, fixing PR3747 - Crash in llvm-as with void field in struct. We now reject that example with: $ llvm-as t.ll llvm-as: t.ll:1:12: struct element can not have void type %x = type {void} ^ llvm-svn: 66394
-
Chris Lattner authored
by checking that the top-level type of a gep is sized. This causes us to reject the example with: llvm-as: t2.ll:2:16: invalid getelementptr indices getelementptr i32()* null, i32 1 ^ llvm-svn: 66393
-
- Mar 08, 2009
-
-
Chris Lattner authored
llvm-svn: 66386
-
Nick Lewycky authored
llvm-svn: 66384
-
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
-
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
"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
-