@@ -205,7 +205,10 @@ void WriteStrings (GeneratorWriteContext context)
205205 WriteCommentLine ( context , $ " '{ info . Value } '") ;
206206 }
207207
208- WriteGlobalVariableStart ( context , info ) ;
208+ WriteGlobalVariableName ( context , info ) ;
209+
210+ // Strings must always be local symbols, global variables will point to them
211+ WriteVariableOptions ( context , LlvmIrVariableOptions . LocalString ) ;
209212 context . Output . Write ( '[' ) ;
210213 context . Output . Write ( size . ToString ( CultureInfo . InvariantCulture ) ) ;
211214 context . Output . Write ( $ " x { info . IrType } ] ") ;
@@ -253,23 +256,37 @@ void WriteGlobalVariables (GeneratorWriteContext context)
253256 }
254257 }
255258
256- void WriteGlobalVariableStart ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
259+ void WriteGlobalVariableName ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
257260 {
258261 if ( ! String . IsNullOrEmpty ( variable . Comment ) ) {
259262 WriteCommentLine ( context , variable . Comment ) ;
260263 }
261264 context . Output . Write ( '@' ) ;
262265 context . Output . Write ( variable . Name ) ;
263266 context . Output . Write ( " = " ) ;
267+ }
264268
265- LlvmIrVariableOptions options = variable . Options ?? LlvmIrGlobalVariable . DefaultOptions ;
269+ void WriteVariableOptions ( GeneratorWriteContext context , LlvmIrVariableOptions options )
270+ {
266271 WriteLinkage ( context , options . Linkage ) ;
267272 WritePreemptionSpecifier ( context , options . RuntimePreemption ) ;
268273 WriteVisibility ( context , options . Visibility ) ;
269274 WriteAddressSignificance ( context , options . AddressSignificance ) ;
270275 WriteWritability ( context , options . Writability ) ;
271276 }
272277
278+ void WriteVariableOptions ( GeneratorWriteContext context , LlvmIrGlobalVariable variable , LlvmIrVariableOptions ? defaultOptions = null )
279+ {
280+ LlvmIrVariableOptions options = variable . Options ?? defaultOptions ?? LlvmIrGlobalVariable . DefaultOptions ;
281+ WriteVariableOptions ( context , options ) ;
282+ }
283+
284+ void WriteGlobalVariableStart ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
285+ {
286+ WriteGlobalVariableName ( context , variable ) ;
287+ WriteVariableOptions ( context , variable , LlvmIrGlobalVariable . DefaultOptions ) ;
288+ }
289+
273290 void WriteGlobalVariable ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
274291 {
275292 if ( ! context . InVariableGroup ) {
0 commit comments