Matt Arsenault
							
						 
					 | 
					
						
						
							
						
						79de3d7b3a
					 | 
					
						
						
							
							Teach SimplifyCFG about address spaces
						
						
						
						
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193104 91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 | 
					
						2013-10-21 18:55:08 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 | 
				
			
				
					
						
							
							
								 
								Evan Cheng
							
						 
					 | 
					
						
						
							
						
						c3f507f98a
					 | 
					
						
						
							
							Re-apply r124518 with fix. Watch out for invalidated iterator.
						
						
						
						
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124526 91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 | 
					
						2011-01-29 04:46:23 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 | 
				
			
				
					
						
							
							
								 
								Evan Cheng
							
						 
					 | 
					
						
						
							
						
						b0a42fdb36
					 | 
					
						
						
							
							Revert r124518. It broke Linux self-host.
						
						
						
						
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124522 91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 | 
					
						2011-01-29 02:43:04 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 | 
				
			
				
					
						
							
							
								 
								Evan Cheng
							
						 
					 | 
					
						
						
							
						
						5e6940788f
					 | 
					
						
						
							
							Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.
						
						
						
						
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124518 91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 | 
					
						2011-01-29 01:29:26 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 | 
				
			
				
					
						
							
							
								 
								Evan Cheng
							
						 
					 | 
					
						
						
							
						
						1b5c0cb71d
					 | 
					
						
						
							
							Revert r124462. There are a few big regressions that I need to fix first.
						
						
						
						
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124478 91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 | 
					
						2011-01-28 07:12:38 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 | 
				
			
				
					
						
							
							
								 
								Evan Cheng
							
						 
					 | 
					
						
						
							
						
						40f64cb0de
					 | 
					
						
						
							
							- Stop simplifycfg from duplicating "ret" instructions into unconditional
						
						
						
						
						
						
						
						branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
  allocation is done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124462 91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 | 
					
						2011-01-28 02:19:21 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 | 
				
			
				
					
						
							
							
								 
								Jakob Stoklund Olesen
							
						 
					 | 
					
						
						
							
						
						58e9ee85fd
					 | 
					
						
						
							
							Teach SimplifyCFG about magic pointer constants.
						
						
						
						
						
						
						
						Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.
Code like this:
void f(const char *x) {
  if (!x)
    puts("null");
  else if ((uintptr_t)x == 1)
    puts("one");
  else if (x == (char*)2 || x == (char*)3)
    puts("two");
  else if ((intptr_t)x == 4)
    puts("four");
  else
    puts(x);
}
Now becomes a switch:
define void @f(i8* %x) nounwind ssp {
entry:
  %magicptr23 = ptrtoint i8* %x to i64            ; <i64> [#uses=1]
  switch i64 %magicptr23, label %if.else16 [
    i64 0, label %if.then
    i64 1, label %if.then2
    i64 2, label %if.then9
    i64 3, label %if.then9
    i64 4, label %if.then14
  ]
Note that LLVM's own DenseMap uses magic pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95439 91177308-0d34-0410-b5e6-96231b3b80d8
						
						
					 | 
					
						2010-02-05 22:03:18 +00:00 | 
					
					
						
						
						
							
							
							
							
							
							
							
							
						
					 |