Chris Lattner 
							
						 
					 
					
						
						
							
						
						38686bdffd 
					 
					
						
						
							
							introduce a new recoverable error handling API to LLVMContext  
						
						... 
						
						
						
						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 :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100723  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-07 23:40:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						75361b69f3 
					 
					
						
						
							
							rename llvm::llvm_report_error -> llvm::report_fatal_error  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-07 22:58:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cf9a415182 
					 
					
						
						
							
							Have the inst emitter add the !srcloc mdnode to the machine instr.  
						
						... 
						
						
						
						Have the asmprinter use the mdnode to scavenge a source location if
present.  Document this nonsense in langref.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100607  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-07 05:38:05 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						fee455ea6a 
					 
					
						
						
							
							remove another magic number.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100606  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-07 05:27:36 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						885d94143d 
					 
					
						
						
							
							propagate cookie management out one layer of function calls.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100510  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-06 00:58:50 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6eb7806a5f 
					 
					
						
						
							
							report errors through LLVMContext's inline asm handler if available.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100509  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-06 00:55:39 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						79180e2ef5 
					 
					
						
						
							
							Give AsmParser an option to control whether it finalizes  
						
						... 
						
						
						
						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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100492  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-05 23:15:42 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						af632c91a0 
					 
					
						
						
							
							add .o file writing for inline asm in llc.  Here's a silly  
						
						... 
						
						
						
						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!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100491  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-05 23:11:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4c842dda39 
					 
					
						
						
							
							stringref-ize the MemoryBuffer::get apis.  This requires  
						
						... 
						
						
						
						a co-committed clang patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100485  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-05 22:42:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7e1a8f882f 
					 
					
						
						
							
							move uleb/sleb printing into AsmPrinter from DwarfPrinter.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100344  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-04 19:09:29 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						65eeaad91d 
					 
					
						
						
							
							use stringref instead of strtol to avoid errno gymnastics.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100341  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-04 18:42:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						736e31d0cf 
					 
					
						
						
							
							split inline asm support out to its own .cpp file.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100340  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-04-04 18:34:07 +00:00