mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 15:05:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			735 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			735 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
//@ compile-flags: -g -C no-prepopulate-passes
 | 
						|
 | 
						|
#![crate_type = "lib"]
 | 
						|
 | 
						|
#[derive(Clone, Copy)]
 | 
						|
pub enum EmptyEnum {}
 | 
						|
 | 
						|
#[no_mangle]
 | 
						|
pub fn empty(x: &EmptyEnum) -> EmptyEnum {
 | 
						|
    // CHECK: @empty({{.*}}) unnamed_addr #0
 | 
						|
    // CHECK-NOT: ret void
 | 
						|
    // CHECK: call void @llvm.trap()
 | 
						|
    // CHECK: unreachable
 | 
						|
    *x
 | 
						|
}
 | 
						|
 | 
						|
pub struct Foo(String, EmptyEnum);
 | 
						|
 | 
						|
#[no_mangle]
 | 
						|
pub fn foo(x: String, y: &EmptyEnum) -> Foo {
 | 
						|
    // CHECK: @foo({{.*}}) unnamed_addr #0
 | 
						|
    // CHECK-NOT: ret %Foo
 | 
						|
    // CHECK: call void @llvm.trap()
 | 
						|
    // CHECK: unreachable
 | 
						|
    Foo(x, *y)
 | 
						|
}
 | 
						|
 | 
						|
// CHECK: attributes #0 = {{{.*}} noreturn {{.*}}}
 | 
						|
 | 
						|
// CHECK: DISubprogram(name: "empty", {{.*}} DIFlagNoReturn
 | 
						|
// CHECK: DISubprogram(name: "foo", {{.*}} DIFlagNoReturn
 |