| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
readability.
llvm-svn: 100756
|
|
|
|
|
|
| |
i32 store of immediates.
llvm-svn: 100751
|
|
|
|
| |
llvm-svn: 100742
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
so the user at least knows what inline asm is a problem. For example:
error: inline asm not supported yet: don't know how to handle tied indirect register inputs
pr8788-1.c:14:10: note: generated from here
asm ("\n" : "+r" (stack->regs)
^
Instead of:
fatal error: error in backend: Don't know how to handle tied indirect register inputs yet!
llvm-svn: 100731
|
|
|
|
| |
llvm-svn: 100725
|
|
|
|
| |
llvm-svn: 100724
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and use it in one place in inline asm handling stuff. Before
we'd generate this for an invalid modifier letter:
$ clang asm.c -c -o t.o
fatal error: error in backend: Invalid operand found in inline asm: 'abc incl ${0:Z}'
INLINEASM <es:abc incl ${0:Z}>, 10, %EAX<def>, 2147483657, %EAX, 14, %EFLAGS<earlyclobber,def,dead>, <!-1>
Now we generate this:
$ clang asm.c -c -o t.o
error: invalid operand in inline asm: 'incl ${0:Z}'
asm.c:3:12: note: generated from here
__asm__ ("incl %Z0" : "+r" (X));
^
1 error generated.
This is much better but still admittedly not great ("why" is the operand
invalid??), codegen should try harder with its diagnostics :)
llvm-svn: 100723
|
|
|
|
| |
llvm-svn: 100709
|
|
|
|
| |
llvm-svn: 100703
|
|
|
|
| |
llvm-svn: 100700
|
|
|
|
|
|
| |
It is not ready for public yet.
llvm-svn: 100673
|
|
|
|
| |
llvm-svn: 100645
|
|
|
|
|
|
| |
different score boards.
llvm-svn: 100644
|
|
|
|
| |
llvm-svn: 100640
|
|
|
|
| |
llvm-svn: 100639
|
|
|
|
| |
llvm-svn: 100638
|
|
|
|
|
|
| |
MachineOperand::isIdenticalTo wasn't handling metadata operands.
llvm-svn: 100636
|
|
|
|
| |
llvm-svn: 100620
|
|
|
|
|
|
| |
TimePassesIsEnabled. This should allow make check to pass.
llvm-svn: 100618
|
|
|
|
| |
llvm-svn: 100616
|
|
|
|
| |
llvm-svn: 100615
|
|
|
|
| |
llvm-svn: 100610
|
|
|
|
| |
llvm-svn: 100609
|
|
|
|
|
|
|
| |
Have the asmprinter use the mdnode to scavenge a source location if
present. Document this nonsense in langref.
llvm-svn: 100607
|
|
|
|
| |
llvm-svn: 100606
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Introduce some enums and accessors in the InlineAsm class
that eliminate a ton of magic numbers when handling inline
asm SDNode.
2. Add a new MDNodeSDNode selection dag node type that holds
a MDNode (shocking!)
3. Add a new argument to ISD::INLINEASM nodes that hold !srcloc
metadata, propagating it to the instruction emitter, which
drops it.
No functionality change.
llvm-svn: 100605
|
|
|
|
|
|
|
| |
into AsmPrinter. Target-dependent form is still generated
by FastISel and still handled in X86 code.
llvm-svn: 100596
|
|
|
|
| |
llvm-svn: 100592
|
|
|
|
|
|
| |
functions of a funcation local class. This trips gdb's partial scan of DIEs at load time. Fixes Radar 7833483.
llvm-svn: 100586
|
|
|
|
|
|
|
| |
solution. The only reason these don't fire with gcc-4.2 is that gcc turns off
part of -Wsign-compare in C++ on accident.
llvm-svn: 100581
|
|
|
|
| |
llvm-svn: 100578
|
|
|
|
|
|
| |
There is probably a more elegant way to do this.
llvm-svn: 100573
|
|
|
|
|
|
| |
to a SDNode that didn't have code generated for it.
llvm-svn: 100566
|
|
|
|
| |
llvm-svn: 100563
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 100510
|
|
|
|
| |
llvm-svn: 100509
|
|
|
|
| |
llvm-svn: 100508
|
|
|
|
| |
llvm-svn: 100505
|
|
|
|
| |
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: 100459
|
|
|
|
|
|
| |
PR6779
llvm-svn: 100457
|
|
|
|
| |
llvm-svn: 100455
|
|
|
|
| |
llvm-svn: 100419
|