| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 100578
|
| |
|
|
|
|
| |
There is probably a more elegant way to do this.
llvm-svn: 100573
|
| |
|
|
|
|
| |
Radar 7770501.
llvm-svn: 100568
|
| |
|
|
|
|
| |
to a SDNode that didn't have code generated for it.
llvm-svn: 100566
|
| |
|
|
| |
llvm-svn: 100563
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a frame pointer is not otherwise required, and dynamic stack alignment
is necessary solely due to the spilling of a register with larger alignment
requirements than the default stack alignment, the frame pointer can be both
used as a general purpose register and a frame pointer. That goes poorly, for
obvious reasons. This patch brings back a bit of old logic for identifying
the use of such registers and conservatively reserves the frame pointer
during register allocation in such cases.
For now, implement for X86 only since it's 32-bit linux which is hitting this,
and we want a targeted fix for 2.7. As a follow-on, this will be expanded
to handle other targets, as theoretically the problem could arise elsewhere
as well.
llvm-svn: 100559
|
| |
|
|
|
|
| |
This fixes the Bullet regression on i386/nocona.
llvm-svn: 100553
|
| |
|
|
|
|
| |
its result
llvm-svn: 100550
|
| |
|
|
| |
llvm-svn: 100549
|
| |
|
|
|
|
| |
its result
llvm-svn: 100547
|
| |
|
|
| |
llvm-svn: 100546
|
| |
|
|
|
|
| |
and remove assumptions about operand order
llvm-svn: 100544
|
| |
|
|
|
|
|
| |
Add a simplified constructor for clients that don't have locations
like "file not found" errors.
llvm-svn: 100538
|
| |
|
|
| |
llvm-svn: 100532
|
| |
|
|
|
|
|
|
|
|
|
| |
A certain GDB testsuite case (local.cc) has a function nested inside a
class nested inside another function. GCC presents the innermost
function to llvm-convert first. Heretofore, the debug info mistakenly
placed the inner function at module scope. This patch walks the GCC
context links and instantiates the outer class and function so the
debug info is properly nested. Radar 7426545.
llvm-svn: 100530
|
| |
|
|
| |
llvm-svn: 100521
|
| |
|
|
|
|
|
| |
use case where someone wants to resurrect LLVM after calling llvm_shutdown,
but I'm not aware of any clients that are affected by this.
llvm-svn: 100519
|
| |
|
|
| |
llvm-svn: 100515
|
| |
|
|
| |
llvm-svn: 100510
|
| |
|
|
| |
llvm-svn: 100509
|
| |
|
|
| |
llvm-svn: 100508
|
| |
|
|
| |
llvm-svn: 100506
|
| |
|
|
| |
llvm-svn: 100505
|
| |
|
|
| |
llvm-svn: 100504
|
| |
|
|
|
|
| |
diagnostic handler.
llvm-svn: 100503
|
| |
|
|
|
|
|
| |
Operand 2 on a load instruction does not have to be a RegisterSDNode for this to
work.
llvm-svn: 100497
|
| |
|
|
| |
llvm-svn: 100494
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the stream. New demo:
$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
000000000000000b movl %eax,(%rsp)
000000000000000e movl %eax,0x04(%rsp)
0000000000000012 addq $0x08,%rsp
0000000000000016 ret
llvm-svn: 100492
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
demo:
$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
LLVM ERROR: Error parsing inline asm
Only problem seems to be that the parser finalizes OutStreamer
at the end of the first inline asm, which isn't what we want.
For example:
$ cat asm.c
int foo(int X) {
__asm__ ("incl %0" : "+r" (X));
return X;
}
$ clang asm.c -S -o - -emit-llvm | llc
...
subq $8, %rsp
movl %edi, (%rsp)
movl %edi, %eax
## InlineAsm Start
incl %eax
## InlineAsm End
movl %eax, (%rsp)
movl %eax, 4(%rsp)
addq $8, %rsp
ret
$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
$
don't stop at inc!
llvm-svn: 100491
|
| |
|
|
|
|
| |
the FP encoding directly as a hex representation.
llvm-svn: 100487
|
| |
|
|
|
|
| |
a co-committed clang patch.
llvm-svn: 100485
|
| |
|
|
| |
llvm-svn: 100480
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
undefs in branches/switches, we have two cases: a branch on a literal
undef or a branch on a symbolic value which is undef. If we have a
literal undef, the code was correct: forcing it to a constant is the
right thing to do.
If we have a branch on a symbolic value that is undef, we should force
the symbolic value to a constant, which then makes the successor block
live. Forcing the condition of the branch to being a constant isn't
safe if later paths become live and the value becomes overdefined. This
is the case that 'forcedconstant' is designed to handle, so just use it.
This fixes rdar://7765019 but there is no good testcase for this, the
one I have is too insane to be useful in the future.
llvm-svn: 100478
|
| |
|
|
| |
llvm-svn: 100468
|
| |
|
|
| |
llvm-svn: 100467
|
| |
|
|
| |
llvm-svn: 100466
|
| |
|
|
| |
llvm-svn: 100461
|
| |
|
|
| |
llvm-svn: 100459
|
| |
|
|
|
|
| |
PR6779
llvm-svn: 100457
|
| |
|
|
| |
llvm-svn: 100455
|
| |
|
|
|
|
|
| |
isn't well specified. ARM really needs to have its instprinter
finished at some point.
llvm-svn: 100439
|
| |
|
|
| |
llvm-svn: 100438
|
| |
|
|
|
|
| |
with spaces in them. Sym->getName() != OS << *Sym
llvm-svn: 100434
|
| |
|
|
| |
llvm-svn: 100423
|
| |
|
|
| |
llvm-svn: 100419
|
| |
|
|
|
|
|
|
|
|
|
| |
instantiating some folding set stuff that GCC isn't, requiring
some types to not be incomplete.
I don't know if clang is right or wrong, but unbreaking the
bot is goodness. Here's the broken build:
http://google1.osuosl.org:8011/builders/clang-x86_64-darwin10-selfhost/builds/1813/steps/compile.llvm.stage2/logs/stdio
llvm-svn: 100418
|
| |
|
|
| |
llvm-svn: 100417
|
| |
|
|
| |
llvm-svn: 100416
|
| |
|
|
| |
llvm-svn: 100415
|
| |
|
|
| |
llvm-svn: 100414
|