87571b6392 
								
							 
						 
						
							
							
								
								Check the correct value for small stack sizes. Also modify some comments.  
							
							... 
							
							
							
							llvm-svn: 145954 
							
						 
						
							2011-12-06 19:16:17 +00:00  
				
					
						
							
							
								 
						
							
								a4e87944a8 
								
							 
						 
						
							
							
								
								For a small sized stack, we encode that value directly with no "stack adjust" value.  
							
							... 
							
							
							
							llvm-svn: 145952 
							
						 
						
							2011-12-06 19:09:06 +00:00  
				
					
						
							
							
								 
						
							
								4e87e850a2 
								
							 
						 
						
							
							
								
								Add a comment.  
							
							... 
							
							
							
							llvm-svn: 145896 
							
						 
						
							2011-12-06 01:57:48 +00:00  
				
					
						
							
							
								 
						
							
								f7cef7ecad 
								
							 
						 
						
							
							
								
								The compact encoding of the registers are 3-bits each. Make sure we shift the  
							
							... 
							
							
							
							value over that much.
llvm-svn: 145888 
							
						 
						
							2011-12-06 01:26:14 +00:00  
				
					
						
							
							
								 
						
							
								006e43bcc0 
								
							 
						 
						
							
							
								
								Check for stack space more intelligently.  
							
							... 
							
							
							
							libgcc sets the stack limit field in TCB to 256 bytes above the actual
allocated stack limit.  This means if the function's stack frame needs
less than 256 bytes, we can just compare the stack pointer with the
stack limit.  This should result in lesser calls to __morestack.
llvm-svn: 145766 
							
						 
						
							2011-12-03 09:32:07 +00:00  
				
					
						
							
							
								 
						
							
								165ca1d4ba 
								
							 
						 
						
							
							
								
								Fix a bug in the x86-32 code generated for segmented stacks.  
							
							... 
							
							
							
							Currently LLVM pads the call to __morestack with a add and sub of 8
bytes to esp.  This isn't correct since __morestack expects the call
to be followed directly by a ret.
This commit also adjusts the relevant test-case.
llvm-svn: 145765 
							
						 
						
							2011-12-03 09:21:07 +00:00  
				
					
						
							
							
								 
						
							
								50f02cb21b 
								
							 
						 
						
							
							
								
								Move global variables in TargetMachine into new TargetOptions class. As an API  
							
							... 
							
							
							
							change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.
One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.
llvm-svn: 145714 
							
						 
						
							2011-12-02 22:16:29 +00:00  
				
					
						
							
							
								 
						
							
								f60485c4cf 
								
							 
						 
						
							
							
								
								Dummy commit to check commit access.  
							
							... 
							
							
							
							llvm-svn: 145619 
							
						 
						
							2011-12-01 19:15:08 +00:00  
				
					
						
							
							
								 
						
							
								8df8204554 
								
							 
						 
						
							
							
								
								If we have to reset the calculation of the compact encoding, then also reset the  
							
							... 
							
							
							
							"saved register" index.
<rdar://problem/10430076>
llvm-svn: 144350 
							
						 
						
							2011-11-11 00:59:14 +00:00  
				
					
						
							
							
								 
						
							
								66393c127d 
								
							 
						 
						
							
							
								
								This commit introduces two fake instructions MORESTACK_RET and  
							
							... 
							
							
							
							MORESTACK_RET_RESTORE_R10; which are lowered to a RET and a RET
followed by a MOV respectively.  Having a fake instruction prevents
the verifier from seeing a MachineBasicBlock end with a
non-terminator (MOV).  It also prevents the rather eccentric case of a
MachineBasicBlock ending with RET but having successors nevertheless.
Patch by Sanjoy Das.
llvm-svn: 143062 
							
						 
						
							2011-10-26 21:12:27 +00:00  
				
					
						
							
							
								 
						
							
								d278d35b13 
								
							 
						 
						
							
							
								
								Fix a bunch of unused variable warnings when doing a release  
							
							... 
							
							
							
							build with gcc-4.6.
llvm-svn: 142350 
							
						 
						
							2011-10-18 12:44:00 +00:00  
				
					
						
							
							
								 
						
							
								25f6d3e321 
								
							 
						 
						
							
							
								
								More closely follow libgcc, which has code after the `ret' instruction to  
							
							... 
							
							
							
							release the stack segment and reset the stack pointer. Place the code in its own
MBB to make the verifier happy.
llvm-svn: 141859 
							
						 
						
							2011-10-13 08:24:19 +00:00  
				
					
						
							
							
								 
						
							
								22a690e3db 
								
							 
						 
						
							
							
								
								Should not add instructions to a BB after a return instruction. The machine instruction verifier doesn't like this, nor do I.  
							
							... 
							
							
							
							llvm-svn: 141856 
							
						 
						
							2011-10-13 07:42:32 +00:00  
				
					
						
							
							
								 
						
							
								55cf2ed148 
								
							 
						 
						
							
							
								
								Only run MF.verify() with EXPENSIVE_CHECKS=1.  
							
							... 
							
							
							
							llvm-svn: 140441 
							
						 
						
							2011-09-24 01:11:19 +00:00  
				
					
						
							
							
								 
						
							
								226c4ed92a 
								
							 
						 
						
							
							
								
								Reenable compact unwind by default. However, also emit the old version of unwind  
							
							... 
							
							
							
							information for older linkers.
llvm-svn: 139206 
							
						 
						
							2011-09-06 23:47:14 +00:00  
				
					
						
							
							
								 
						
							
								4e1d018935 
								
							 
						 
						
							
							
								
								Revert r138826 until PR10834 can be fixed.  
							
							... 
							
							
							
							llvm-svn: 139018 
							
						 
						
							2011-09-02 18:15:04 +00:00  
				
					
						
							
							
								 
						
							
								6e31dfea35 
								
							 
						 
						
							
							
								
								Spelling and grammar fixes to problems found by Duncan.  
							
							... 
							
							
							
							llvm-svn: 138858 
							
						 
						
							2011-08-31 16:43:33 +00:00  
				
					
						
							
							
								 
						
							
								635d9692b6 
								
							 
						 
						
							
							
								
								Make sure we don't crash when -miphoneos-version-min is specified on x86.  Hopefully this will fix gcc testsuite failures.  
							
							... 
							
							
							
							llvm-svn: 138856 
							
						 
						
							2011-08-31 16:19:51 +00:00  
				
					
						
							
							
								 
						
							
								6470e07e20 
								
							 
						 
						
							
							
								
								Fix off-by-one error Benjamin noticed.  
							
							... 
							
							
							
							llvm-svn: 138832 
							
						 
						
							2011-08-30 21:23:24 +00:00  
				
					
						
							
							
								 
						
							
								7a9c3033a4 
								
							 
						 
						
							
							
								
								Enable compact unwind info by default. This only applies to Darwin when CFI is  
							
							... 
							
							
							
							disabled.
llvm-svn: 138826 
							
						 
						
							2011-08-30 20:54:11 +00:00  
				
					
						
							
							
								 
						
							
								c21742112b 
								
							 
						 
						
							
							
								
								Emit segmented-stack specific code into function prologues for  
							
							... 
							
							
							
							X86. Modify the pass added in the previous patch to call this new
code.
This new prologues generated will call a libgcc routine (__morestack)
to allocate more stack space from the heap when required
Patch by Sanjoy Das.
llvm-svn: 138812 
							
						 
						
							2011-08-30 19:39:58 +00:00  
				
					
						
							
							
								 
						
							
								210bf8351d 
								
							 
						 
						
							
							
								
								findDeadCallerSavedReg fix: Missing NULL terminator in register arrays.  
							
							... 
							
							
							
							Fix by Ivan Baev. Sorry I don't have a unit test, but the fix is obvious so I don't want to delay it.
llvm-svn: 137404 
							
						 
						
							2011-08-12 00:49:19 +00:00  
				
					
						
							
							
								 
						
							
								ee61946783 
								
							 
						 
						
							
							
								
								The compact unwinding offsets are divided by 8 on 64-bit machines.  
							
							... 
							
							
							
							llvm-svn: 136065 
							
						 
						
							2011-07-26 08:03:49 +00:00  
				
					
						
							
							
								 
						
							
								43ab71a9a8 
								
							 
						 
						
							
							
								
								Update the comment. This feature is available only on Darwin at the moment. Though it's not Darwin-specific.  
							
							... 
							
							
							
							llvm-svn: 135951 
							
						 
						
							2011-07-25 20:15:15 +00:00  
				
					
						
							
							
								 
						
							
								2dc0005b3c 
								
							 
						 
						
							
							
								
								Changed disabled code into a flag.  
							
							... 
							
							
							
							llvm-svn: 135924 
							
						 
						
							2011-07-25 18:04:49 +00:00  
				
					
						
							
							
								 
						
							
								1d10909cb7 
								
							 
						 
						
							
							
								
								Remove dead variable.  
							
							... 
							
							
							
							llvm-svn: 135923 
							
						 
						
							2011-07-25 18:01:27 +00:00  
				
					
						
							
							
								 
						
							
								b97270d58a 
								
							 
						 
						
							
							
								
								After we've modified the prolog to save volatile registers, generate the compact  
							
							... 
							
							
							
							unwind encoding for that function. This simply crawls through the prolog looking
for machine instrs marked as "frame setup". It can calculate from these what the
compact unwind should look like.
This is currently disabled because of needed linker support. But initial tests
look good.
llvm-svn: 135922 
							
						 
						
							2011-07-25 18:00:28 +00:00  
				
					
						
							
							
								 
						
							
								28b6e12d9d 
								
							 
						 
						
							
							
								
								Mark instructions which are part of the frame setup with the MachineInstr::FrameSetup flag.  
							
							... 
							
							
							
							llvm-svn: 135645 
							
						 
						
							2011-07-21 00:44:56 +00:00  
				
					
						
							
							
								 
						
							
								ed93564c7a 
								
							 
						 
						
							
							
								
								Remove unused function.  
							
							... 
							
							
							
							llvm-svn: 135635 
							
						 
						
							2011-07-20 23:07:42 +00:00  
				
					
						
							
							
								 
						
							
								01bd7d9dc0 
								
							 
						 
						
							
							
								
								Remove the now defunct getCompactUnwindEncoding method from the frame lowering code.  
							
							... 
							
							
							
							llvm-svn: 135634 
							
						 
						
							2011-07-20 23:04:09 +00:00  
				
					
						
							
							
								 
						
							
								67c033e6b8 
								
							 
						 
						
							
							
								
								Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for  
							
							... 
							
							
							
							better location welcome).
llvm-svn: 135438 
							
						 
						
							2011-07-18 22:29:13 +00:00  
				
					
						
							
							
								 
						
							
								2d825b5ecf 
								
							 
						 
						
							
							
								
								* Redo the permutation encoding for frameless stacks to be more like what the  
							
							... 
							
							
							
							unwind library expects.
* Comment the permutation encoding for frameless stacks.
llvm-svn: 135202 
							
						 
						
							2011-07-14 22:01:34 +00:00  
				
					
						
							
							
								 
						
							
								d11ea81db0 
								
							 
						 
						
							
							
								
								Add code to handle a "frameless" unwind stack.  
							
							... 
							
							
							
							The frameless unwind stack has a special encoding, the algorithm for which is in
"permuteEncode".
llvm-svn: 135103 
							
						 
						
							2011-07-13 23:03:31 +00:00  
				
					
						
							
							
								 
						
							
								ee6e776be2 
								
							 
						 
						
							
							
								
								Don't emit the FDE end label if the last thing emitted was a compact unwind and  
							
							... 
							
							
							
							not the FDE
llvm-svn: 135020 
							
						 
						
							2011-07-13 00:49:09 +00:00  
				
					
						
							
							
								 
						
							
								0402e8fe4b 
								
							 
						 
						
							
							
								
								Assign variable before we test it.  
							
							... 
							
							
							
							llvm-svn: 135015 
							
						 
						
							2011-07-13 00:23:39 +00:00  
				
					
						
							
							
								 
						
							
								ed3c44224b 
								
							 
						 
						
							
							
								
								Fix obvious think-o.  
							
							... 
							
							
							
							llvm-svn: 135014 
							
						 
						
							2011-07-13 00:20:09 +00:00  
				
					
						
							
							
								 
						
							
								929b90ff32 
								
							 
						 
						
							
							
								
								Clean up the handling of an EBP/RBP unwind frame pointer. In particular, don't  
							
							... 
							
							
							
							assert when the frame pointer is -1 (i.e., the function is "frameless").
Still to do: "frameless" unwind information.
llvm-svn: 135013 
							
						 
						
							2011-07-13 00:16:14 +00:00  
				
					
						
							
							
								 
						
							
								667be58220 
								
							 
						 
						
							
							
								
								Use ArrayRef instead of a std::vector&.  
							
							... 
							
							
							
							llvm-svn: 134595 
							
						 
						
							2011-07-07 04:42:01 +00:00  
				
					
						
							
							
								 
						
							
								b6adf46f62 
								
							 
						 
						
							
							
								
								Add a target hook to encode the compact unwind information.  
							
							... 
							
							
							
							llvm-svn: 134577 
							
						 
						
							2011-07-07 00:54:13 +00:00  
				
					
						
							
							
								 
						
							
								34a425b075 
								
							 
						 
						
							
							
								
								Fit banner in 80-col and adjust whitespace. No functionality changes.  
							
							... 
							
							
							
							llvm-svn: 132964 
							
						 
						
							2011-06-14 03:23:52 +00:00  
				
					
						
							
							
								 
						
							
								7ed40cbded 
								
							 
						 
						
							
							
								
								Put FrameSetup flag on x86 instructions that set up the call frame. No  
							
							... 
							
							
							
							functionality change.
Later on, we'll use the flag to emit SEH pseudo-ops that describe how the
call frame was built.
llvm-svn: 132880 
							
						 
						
							2011-06-12 01:45:54 +00:00  
				
					
						
							
							
								 
						
							
								fc9bae6f8b 
								
							 
						 
						
							
							
								
								Replace the -unwind-tables option with a per function flag. This is more  
							
							... 
							
							
							
							LTO friendly as we can now correctly merge files compiled with or without
-fasynchronous-unwind-tables.
llvm-svn: 132033 
							
						 
						
							2011-05-25 03:44:17 +00:00  
				
					
						
							
							
								 
						
							
								80cb3cb1d6 
								
							 
						 
						
							
							
								
								Print all the moves at a given label instead of just the first one.  
							
							... 
							
							
							
							Remove previous DwarfCFI hack.
llvm-svn: 130187 
							
						 
						
							2011-04-26 03:58:56 +00:00  
				
					
						
							
							
								 
						
							
								a01cdb0e37 
								
							 
						 
						
							
							
								
								Add 129518 back with a fix for when we are producing eh just because of debug info.  
							
							... 
							
							
							
							Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.
llvm-svn: 129571 
							
						 
						
							2011-04-15 15:11:06 +00:00  
				
					
						
							
							
								 
						
							
								0ab5e2cded 
								
							 
						 
						
							
							
								
								Fix a ton of comment typos found by codespell.  Patch by  
							
							... 
							
							
							
							Luis Felipe Strano Moraes!
llvm-svn: 129558 
							
						 
						
							2011-04-15 05:18:47 +00:00  
				
					
						
							
							
								 
						
							
								b5e3e9dd27 
								
							 
						 
						
							
							
								
								Revert r129518, "Change ELF systems to use CFI for producing the EH tables. This reduces the"  
							
							... 
							
							
							
							It broke several builds.
llvm-svn: 129557 
							
						 
						
							2011-04-15 03:35:57 +00:00  
				
					
						
							
							
								 
						
							
								aa2a7cd828 
								
							 
						 
						
							
							
								
								Change ELF systems to use CFI for producing the EH tables. This reduces the  
							
							... 
							
							
							
							size of the clang binary in Debug builds from 690MB to 679MB.
llvm-svn: 129518 
							
						 
						
							2011-04-14 15:18:53 +00:00  
				
					
						
							
							
								 
						
							
								521eb7c11e 
								
							 
						 
						
							
							
								
								Target/X86: [PR8777][PR8778] Tweak alloca/chkstk for Windows targets.  
							
							... 
							
							
							
							FIXME: Some cleanups would be needed.
llvm-svn: 128206 
							
						 
						
							2011-03-24 07:07:00 +00:00  
				
					
						
							
							
								 
						
							
								d4e5003a3f 
								
							 
						 
						
							
							
								
								Target/X86: Always emit "push/pop GPRs" in prologue/epilogue and emit "spill/reload frames" for XMMs.  
							
							... 
							
							
							
							It improves Win64's prologue/epilogue but it would not affect ia32 and amd64 (lack of nonvolatile XMMs).
llvm-svn: 126568 
							
						 
						
							2011-02-27 08:47:19 +00:00  
				
					
						
							
							
								 
						
							
								1850c80afb 
								
							 
						 
						
							
							
								
								Target/X86: Tweak allocating shadow area (aka home) on Win64. It must be enough for caller to allocate one.  
							
							... 
							
							
							
							llvm-svn: 124949 
							
						 
						
							2011-02-05 15:11:32 +00:00  
				
					
						
							
							
								 
						
							
								f7f319d4d3 
								
							 
						 
						
							
							
								
								Target/X86: Fix whitespace.  
							
							... 
							
							
							
							llvm-svn: 124946 
							
						 
						
							2011-02-05 15:10:54 +00:00  
				
					
						
							
							
								 
						
							
								ecd90b5946 
								
							 
						 
						
							
							
								
								Test commit - fix a double 'should' in a comment.  
							
							... 
							
							
							
							llvm-svn: 124652 
							
						 
						
							2011-02-01 07:38:42 +00:00  
				
					
						
							
							
								 
						
							
								d22a4a1fd6 
								
							 
						 
						
							
							
								
								Patches to build EFI with Clang/LLVM. By Carl Norum.  
							
							... 
							
							
							
							llvm-svn: 124639 
							
						 
						
							2011-02-01 01:14:13 +00:00  
				
					
						
							
							
								 
						
							
								4d9de6be4b 
								
							 
						 
						
							
							
								
								Cleanup  
							
							... 
							
							
							
							llvm-svn: 123475 
							
						 
						
							2011-01-14 21:57:58 +00:00  
				
					
						
							
							
								 
						
							
								bbb1a54b84 
								
							 
						 
						
							
							
								
								Fix a few more places that should use MBB::getLastNonDebugInstr().  
							
							... 
							
							
							
							llvm-svn: 123408 
							
						 
						
							2011-01-13 22:47:43 +00:00  
				
					
						
							
							
								 
						
							
								4bc5e38960 
								
							 
						 
						
							
							
								
								Teach frame lowering to ignore debug values after the terminators.  
							
							... 
							
							
							
							llvm-svn: 123399 
							
						 
						
							2011-01-13 21:28:52 +00:00  
				
					
						
							
							
								 
						
							
								2f93128109 
								
							 
						 
						
							
							
								
								Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there.  
							
							... 
							
							
							
							llvm-svn: 123170 
							
						 
						
							2011-01-10 12:39:04 +00:00