nvptx: In offloading execution, map '_exit' to 'abort' [GCC PR85463]
This is still not properly resolving <https://gcc.gnu.org/PR85463> '[nvptx] "exit" in offloaded region doesn't terminate process', but is one step into that direction, and allows for simplifying some GCC code.
This commit is contained in:
		
							parent
							
								
									29b137af80
								
							
						
					
					
						commit
						05a2d7a8b3
					
				| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
/* Sadly, PTX doesn't support weak declarations, only weak
 | 
			
		||||
   definitions.  Weakly define it here in case we're not using crt0
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +27,15 @@ void __attribute__((noreturn))
 | 
			
		|||
_exit (int status)
 | 
			
		||||
{
 | 
			
		||||
  if (__exitval_ptr)
 | 
			
		||||
    *__exitval_ptr = status;
 | 
			
		||||
  for (;;)
 | 
			
		||||
    asm ("exit;" ::: "memory");
 | 
			
		||||
    {
 | 
			
		||||
      *__exitval_ptr = status;
 | 
			
		||||
      for (;;)
 | 
			
		||||
	asm ("exit;" ::: "memory");
 | 
			
		||||
    }
 | 
			
		||||
  else /* offloading */
 | 
			
		||||
    {
 | 
			
		||||
      /* Map to 'abort'; see <https://gcc.gnu.org/PR85463>
 | 
			
		||||
	 '[nvptx] "exit" in offloaded region doesn't terminate process'.  */
 | 
			
		||||
      abort ();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue