summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix PR3746 - Crash in isel with GEP of function pointerChris Lattner2009-03-091-13/+17
| | | | | | | | | | | 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
* Fix PR3743 - -mmacosx-version-min inappropriate for Mac OS X 10.4.11,Chris Lattner2009-03-091-0/+3
| | | | | | by stripping off any versions past the "10.4". llvm-svn: 66392
* add some explicit llvm:: qualifiers to the unix side, fix problems on the ↵Chris Lattner2009-03-082-6/+7
| | | | | | windows side. llvm-svn: 66386
* Keep calling-convention and tail-call bit when creating new invoke or call.Nick Lewycky2009-03-081-10/+13
| | | | llvm-svn: 66384
* do not export all the X86FastISel symbols, ever.Chris Lattner2009-03-081-1/+4
| | | | llvm-svn: 66382
* Fix comments, pointed out by Duncan Sands.Nick Lewycky2009-03-081-3/+3
| | | | llvm-svn: 66381
* Apply ODR linkage changes accidentally dropped duringDuncan Sands2009-03-081-9/+9
| | | | | | final cleaning. This fixes a bunch of testsuite failures. llvm-svn: 66380
* Test commitSebastian Redl2009-03-081-1/+0
| | | | llvm-svn: 66378
* Mark function returns as noalias.Nick Lewycky2009-03-081-0/+127
| | | | llvm-svn: 66369
* teach SROA to handle promoting vector allocas with a memset into them intoChris Lattner2009-03-082-19/+35
| | | | | | a vector type instead of into an integer type. llvm-svn: 66368
* fix typoChris Lattner2009-03-081-1/+1
| | | | llvm-svn: 66367
* Enhance SROA to "promote to scalar" allocas which are Chris Lattner2009-03-083-6/+68
| | | | | | | memcpy/memmove'd into or out of. This fixes a serious perf issue that Nate ran into. llvm-svn: 66366
* Recognize triplets starting with armv5-, armv6- etc. And set the ARM arch ↵Evan Cheng2009-03-082-2/+18
| | | | | | version accordingly. llvm-svn: 66365
* change the MemIntrinsic get/setAlignment method to take an unsignedChris Lattner2009-03-084-20/+21
| | | | | | instead of a Constant*, which is what the clients of it really want. llvm-svn: 66364
* If a MI uses the same register more than once, only mark one of them as 'kill'.Evan Cheng2009-03-082-6/+100
| | | | llvm-svn: 66363
* use MemTransferInst.Chris Lattner2009-03-081-1/+1
| | | | llvm-svn: 66362
* Introduce a new MemTransferInst pseudo class, which is a commonChris Lattner2009-03-083-64/+56
| | | | | | | parent between MemCpyInst and MemMoveInst, simplify some code to use it. llvm-svn: 66361
* add a note.Chris Lattner2009-03-081-0/+40
| | | | llvm-svn: 66360
* add a note.Chris Lattner2009-03-081-0/+22
| | | | llvm-svn: 66359
* implement an optimization to codegen c ? 1.0 : 2.0 as load { 2.0, 1.0 } + c*4. Chris Lattner2009-03-083-5/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* random cleanups.Chris Lattner2009-03-081-4/+3
| | | | llvm-svn: 66357
* Fix misaligned whitespace. No functionality change.Nick Lewycky2009-03-081-4/+4
| | | | llvm-svn: 66355
* fix a serious pessimization that Tron on IRC pointed out where we wouldChris Lattner2009-03-072-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | "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
* Revert r66315. Fix the build on mixed 64/32 Linux systems.Nick Lewycky2009-03-071-10/+2
| | | | llvm-svn: 66350
* Remove some duplication.Mikhail Glushenkov2009-03-071-5/+8
| | | | llvm-svn: 66347
* Introduce new linkage types linkonce_odr, weak_odr, common_odrDuncan Sands2009-03-0743-192/+370
| | | | | | | | | | | | | | | | | | | | | 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
* simplify the way how traits get hold of the symbol tableGabor Greif2009-03-074-28/+16
| | | | llvm-svn: 66336
* further simplifications arising from peruse of the more declarative interfaceGabor Greif2009-03-077-28/+5
| | | | llvm-svn: 66333
* Remove the burden of dealing with list offsetsGabor Greif2009-03-074-67/+25
| | | | | | | | from SymbolTableListTraits' clients, and intead request a nice declarative interface. Cleans up an IMHO ugly wart. llvm-svn: 66331
* When a crash signal is delivered do two things: remove all of ourChris Lattner2009-03-071-5/+14
| | | | | | | | | signal handlers to prevent reentrance on unrelated things (a sigabort where the handle bus errors) also, clear the signal mask so that the signal doesn't infinitely reissue. This fixes rdar://6654827 - Crash causes clang to loop llvm-svn: 66330
* Finish cross-process JIT work, and clean up previous work.Nate Begeman2009-03-072-30/+40
| | | | | | | | | | | | | | | | 1. When the JIT is asked to remove a function, updating it's mapping to 0, we invalidate any function stubs used only by that function. Now, also invalidate the JIT's mapping from the GV the stub pointed to, to the address of the GV. 2. When dlsym stubs for cross-process JIT are enabled, do not abort just because a named function cannot be found in the JIT's process. 3. Fix various assumptions about when it is ok to use the lazy resolver when non-lazy JITing is enabled. llvm-svn: 66324
* Arithmetic instructions don't set EFLAGS bits OF and CF bitsDan Gohman2009-03-073-14/+52
| | | | | | | | | | | the same say the "test" instruction does in overflow cases, so eliminating the test is only safe when those bits aren't needed, as is the case for COND_E and COND_NE, or if it can be proven that no overflow will occur. For now, just restrict the optimization to COND_E and COND_NE and don't do any overflow analysis. llvm-svn: 66318
* If ARCH is x86_64, pass -m64 to the host compiler. -m32 for i386. This makes ↵Evan Cheng2009-03-071-0/+8
| | | | | | sure the JIT work correctly. llvm-svn: 66315
* Add IRBuilder::CreateConstGEP{1, 2}_{32, 64}.Daniel Dunbar2009-03-061-4/+36
| | | | | | - Names are lame, but it seems better to be explicit. llvm-svn: 66295
* Rename my makefile debugging rule to prevent accidental collisions.Daniel Dunbar2009-03-061-2/+2
| | | | llvm-svn: 66294
* Add Module::getNamedValue; use to normalize access to Module symbolDaniel Dunbar2009-03-062-19/+31
| | | | | | | table. - No functionality change. llvm-svn: 66289
* Fix another case where debug info interferes withDale Johannesen2009-03-061-2/+6
| | | | | | an optimization. llvm-svn: 66288
* Add default constructor to SDNode to make gcc 3.4.6 happy.Tanya Lattner2009-03-061-0/+4
| | | | llvm-svn: 66280
* Use c_str() to force the string to be nul-terminated.Dan Gohman2009-03-061-1/+1
| | | | llvm-svn: 66279
* Add a comment.Mikhail Glushenkov2009-03-061-0/+1
| | | | llvm-svn: 66278
* some nits noticed by DuncanChris Lattner2009-03-061-2/+3
| | | | llvm-svn: 66274
* fix header comment and include guard.Chris Lattner2009-03-061-9/+5
| | | | llvm-svn: 66273
* add a bunch more passes to the C bindings (PR3734), patch byChris Lattner2009-03-064-19/+280
| | | | | | Lennart Augustsson! llvm-svn: 66272
* Trailing whitespace.Mikhail Glushenkov2009-03-061-3/+3
| | | | llvm-svn: 66269
* Trailing whitespace.Mikhail Glushenkov2009-03-061-18/+18
| | | | llvm-svn: 66268
* While thinking about the one-definition-rule and tryingDuncan Sands2009-03-062-3/+23
| | | | | | | | | | | | | to find a tiny mouse hole to squeeze through, it struck me that globals without a name can be considered internal since they can't be referenced from outside the current module. This patch makes GlobalOpt give them internal linkage. Also done for aliases even though they always have names, since in my opinion anonymous aliases should be allowed for consistency with global variables and functions. So if that happens one day, this code is ready! llvm-svn: 66267
* on apple systems, integrate nicely with crash reporter.Chris Lattner2009-03-061-4/+34
| | | | llvm-svn: 66264
* While converting an aggregate to scalare, ignore and remove aggregate's ↵Devang Patel2009-03-062-3/+196
| | | | | | debug info. llvm-svn: 66262
* Sprinkle some PrettyStackEntry magic into the passmanager. With this, we nowChris Lattner2009-03-063-90/+129
| | | | | | | | | | | | | | | | get nice and happy stack traces when we crash in an optimizer or codegen. For example, an abort put in UnswitchLoops now looks like this: Stack dump: 0. Program arguments: clang pr3399.c -S -O3 1. <eof> parser at end of file 2. per-module optimization passes 3. Running pass 'CallGraph Pass Manager' on module 'pr3399.c'. 4. Running pass 'Loop Pass Manager' on function '@foo' 5. Running pass 'Unswitch loops' on basic block '%for.inc' Abort llvm-svn: 66260
* Remove this as dbginfo intrinsics has been defined asZhou Sheng2009-03-061-5/+0
| | | | | | IntrNoMem. llvm-svn: 66256
OpenPOWER on IntegriCloud