Fix: wrong offsets for locals when < -32768
This commit is contained in:
		
							parent
							
								
									4565576021
								
							
						
					
					
						commit
						c1738933d7
					
				
					 2 changed files with 24 additions and 17 deletions
				
			
		|  | @ -251,6 +251,21 @@ STATIC bool useful_item(item) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| STATIC cleantimeset(s) | ||||
| 	lset s; | ||||
| { | ||||
| 	register Lindex i; | ||||
| 	register time_p t; | ||||
| 
 | ||||
| 	for (i = Lfirst(s); i != (Lindex) 0; i = Lnext(i,s)) { | ||||
| 		t = (time_p) Lelem(i); | ||||
| 		oldtime(t); | ||||
| 	} | ||||
| 	Ldeleteset(s); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| STATIC item_p cat_items(items) | ||||
| 	item_p items[]; | ||||
| { | ||||
|  | @ -296,21 +311,6 @@ STATIC clean_interval(list) | |||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| STATIC cleantimeset(s) | ||||
| 	lset s; | ||||
| { | ||||
| 	register Lindex i; | ||||
| 	register time_p t; | ||||
| 
 | ||||
| 	for (i = Lfirst(s); i != (Lindex) 0; i = Lnext(i,s)) { | ||||
| 		t = (time_p) Lelem(i); | ||||
| 		oldtime(t); | ||||
| 	} | ||||
| 	Ldeleteset(s); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| STATIC clean_allocs(list) | ||||
| 	alloc_p list; | ||||
| { | ||||
|  |  | |||
|  | @ -268,7 +268,14 @@ STATIC apply_alloc(b,l,alloc) | |||
| 	line_p newcode; | ||||
| 
 | ||||
| 	if (alloc->al_item->it_type == LOCALVAR) { | ||||
| 		SHORT(l) = alloc->al_dummy; | ||||
| 		if ((short) (alloc->al_dummy) == alloc->al_dummy) { | ||||
| 			TYPE(l) = OPSHORT; | ||||
| 			SHORT(l) = alloc->al_dummy; | ||||
| 		} | ||||
| 		else { | ||||
| 			TYPE(l) = OPOFFSET; | ||||
| 			OFFSET(l) = alloc->al_dummy; | ||||
| 		} | ||||
| 	} else { | ||||
| 		newcode = repl_code(l,alloc->al_dummy); | ||||
| 		replace_line(l,b,newcode); | ||||
|  | @ -491,7 +498,7 @@ xform_proc(p,alloclist,nrinstrs,instrmap) | |||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| STATIC bool always_in_reg(off,allocs,size_out) | ||||
| bool always_in_reg(off,allocs,size_out) | ||||
| 	offset off; | ||||
| 	alloc_p allocs; | ||||
| 	short *size_out; | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue