38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt -globalopt -S < %s | FileCheck %s
 | |
| 
 | |
| $comdat_global = comdat any
 | |
| 
 | |
| @comdat_global = weak_odr global i8 0, comdat($comdat_global)
 | |
| @simple_global = internal global i8 0
 | |
| ; CHECK: @comdat_global = weak_odr global i8 0, comdat{{$}}
 | |
| ; CHECK: @simple_global = internal global i8 42
 | |
| 
 | |
| @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [
 | |
|     { i32, void ()*, i8* } { i32 65535, void ()* @init_comdat_global, i8* @comdat_global },
 | |
|     { i32, void ()*, i8* } { i32 65535, void ()* @init_simple_global, i8* null }
 | |
| ]
 | |
| ; CHECK: @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }]
 | |
| ; CHECK: [{ i32, void ()*, i8* } { i32 65535, void ()* @init_comdat_global, i8* @comdat_global }]
 | |
| 
 | |
| define void @init_comdat_global() {
 | |
|   store i8 42, i8* @comdat_global
 | |
|   ret void
 | |
| }
 | |
| ; CHECK: define void @init_comdat_global()
 | |
| 
 | |
| define internal void @init_simple_global() comdat($comdat_global) {
 | |
|   store i8 42, i8* @simple_global
 | |
|   ret void
 | |
| }
 | |
| ; CHECK-NOT: @init_simple_global()
 | |
| 
 | |
| define i8* @use_simple() {
 | |
|   ret i8* @simple_global
 | |
| }
 | |
| ; CHECK: define i8* @use_simple()
 | |
| 
 | |
| define i8* @use_comdat() {
 | |
|   ret i8* @comdat_global
 | |
| }
 | |
| ; CHECK: define i8* @use_comdat()
 |