27 lines
		
	
	
		
			750 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			750 B
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++20 %s -emit-llvm -o - | FileCheck %s
 | 
						|
 | 
						|
namespace PR50787 {
 | 
						|
// This code would previously cause a crash.
 | 
						|
extern int x_;
 | 
						|
consteval auto& X() { return x_; }
 | 
						|
constexpr auto& x1 = X();
 | 
						|
auto x2 = X();
 | 
						|
 | 
						|
// CHECK: @_ZN7PR507872x_E = external global i32, align 4
 | 
						|
// CHECK-NEXT: @_ZN7PR507872x1E = constant i32* @_ZN7PR507872x_E, align 8
 | 
						|
// CHECK-NEXT: @_ZN7PR507872x2E = global i32* @_ZN7PR507872x_E, align 4
 | 
						|
}
 | 
						|
 | 
						|
namespace PR51484 {
 | 
						|
// This code would previously cause a crash.
 | 
						|
struct X { int val; };
 | 
						|
consteval X g() { return {0}; }
 | 
						|
void f() { g(); }
 | 
						|
 | 
						|
// CHECK: define dso_local void @_ZN7PR514841fEv() #0 {
 | 
						|
// CHECK: entry:
 | 
						|
// CHECK-NOT: call i32 @_ZN7PR514841gEv()
 | 
						|
// CHECK:  ret void
 | 
						|
// CHECK: }
 | 
						|
}
 |