 5c23f6fb6c
			
		
	
	
		5c23f6fb6c
		
	
	
	
	
		
			
			This removes a lot of backwards compatibility cruft and makes it possible to start using features that need LLVM 13 or newer. For example: * https://github.com/tinygo-org/tinygo/pull/2637 * https://github.com/tinygo-org/tinygo/pull/2830
		
			
				
	
	
		
			20 строки
		
	
	
	
		
			645 Б
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			20 строки
		
	
	
	
		
			645 Б
		
	
	
	
		
			Go
		
	
	
	
	
	
| package transform
 | |
| 
 | |
| import "tinygo.org/x/go-llvm"
 | |
| 
 | |
| // This file implements small transformations on globals (functions and global
 | |
| // variables) for specific ABIs/architectures.
 | |
| 
 | |
| // ApplyFunctionSections puts every function in a separate section. This makes
 | |
| // it possible for the linker to remove dead code. It is the equivalent of
 | |
| // passing -ffunction-sections to a C compiler.
 | |
| func ApplyFunctionSections(mod llvm.Module) {
 | |
| 	llvmFn := mod.FirstFunction()
 | |
| 	for !llvmFn.IsNil() {
 | |
| 		if !llvmFn.IsDeclaration() && llvmFn.Section() == "" {
 | |
| 			name := llvmFn.Name()
 | |
| 			llvmFn.SetSection(".text." + name)
 | |
| 		}
 | |
| 		llvmFn = llvm.NextFunction(llvmFn)
 | |
| 	}
 | |
| }
 |