tcg: mark dead output argument in op_dead_args
If an op is not removed and has dead output arguments, mark it in op_dead_args similarly to what is done for input arguments. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
		
							parent
							
								
									866cb6cb21
								
							
						
					
					
						commit
						6b64b624cd
					
				
							
								
								
									
										10
									
								
								tcg/tcg.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								tcg/tcg.c
									
									
									
									
									
								
							@ -1245,8 +1245,12 @@ static void tcg_liveness_analysis(TCGContext *s)
 | 
				
			|||||||
                do_not_remove_call:
 | 
					                do_not_remove_call:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    /* output args are dead */
 | 
					                    /* output args are dead */
 | 
				
			||||||
 | 
					                    dead_args = 0;
 | 
				
			||||||
                    for(i = 0; i < nb_oargs; i++) {
 | 
					                    for(i = 0; i < nb_oargs; i++) {
 | 
				
			||||||
                        arg = args[i];
 | 
					                        arg = args[i];
 | 
				
			||||||
 | 
					                        if (dead_temps[arg]) {
 | 
				
			||||||
 | 
					                            dead_args |= (1 << i);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                        dead_temps[arg] = 1;
 | 
					                        dead_temps[arg] = 1;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
@ -1256,7 +1260,6 @@ static void tcg_liveness_analysis(TCGContext *s)
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    /* input args are live */
 | 
					                    /* input args are live */
 | 
				
			||||||
                    dead_args = 0;
 | 
					 | 
				
			||||||
                    for(i = nb_oargs; i < nb_iargs + nb_oargs; i++) {
 | 
					                    for(i = nb_oargs; i < nb_iargs + nb_oargs; i++) {
 | 
				
			||||||
                        arg = args[i];
 | 
					                        arg = args[i];
 | 
				
			||||||
                        if (arg != TCG_CALL_DUMMY_ARG) {
 | 
					                        if (arg != TCG_CALL_DUMMY_ARG) {
 | 
				
			||||||
@ -1313,8 +1316,12 @@ static void tcg_liveness_analysis(TCGContext *s)
 | 
				
			|||||||
            do_not_remove:
 | 
					            do_not_remove:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                /* output args are dead */
 | 
					                /* output args are dead */
 | 
				
			||||||
 | 
					                dead_args = 0;
 | 
				
			||||||
                for(i = 0; i < nb_oargs; i++) {
 | 
					                for(i = 0; i < nb_oargs; i++) {
 | 
				
			||||||
                    arg = args[i];
 | 
					                    arg = args[i];
 | 
				
			||||||
 | 
					                    if (dead_temps[arg]) {
 | 
				
			||||||
 | 
					                        dead_args |= (1 << i);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    dead_temps[arg] = 1;
 | 
					                    dead_temps[arg] = 1;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1327,7 +1334,6 @@ static void tcg_liveness_analysis(TCGContext *s)
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                /* input args are live */
 | 
					                /* input args are live */
 | 
				
			||||||
                dead_args = 0;
 | 
					 | 
				
			||||||
                for(i = nb_oargs; i < nb_oargs + nb_iargs; i++) {
 | 
					                for(i = nb_oargs; i < nb_oargs + nb_iargs; i++) {
 | 
				
			||||||
                    arg = args[i];
 | 
					                    arg = args[i];
 | 
				
			||||||
                    if (dead_temps[arg]) {
 | 
					                    if (dead_temps[arg]) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user