@@ -205,7 +205,10 @@ void WriteStrings (GeneratorWriteContext context)
205
205
WriteCommentLine ( context , $ " '{ info . Value } '") ;
206
206
}
207
207
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 ) ;
209
212
context . Output . Write ( '[' ) ;
210
213
context . Output . Write ( size . ToString ( CultureInfo . InvariantCulture ) ) ;
211
214
context . Output . Write ( $ " x { info . IrType } ] ") ;
@@ -253,23 +256,37 @@ void WriteGlobalVariables (GeneratorWriteContext context)
253
256
}
254
257
}
255
258
256
- void WriteGlobalVariableStart ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
259
+ void WriteGlobalVariableName ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
257
260
{
258
261
if ( ! String . IsNullOrEmpty ( variable . Comment ) ) {
259
262
WriteCommentLine ( context , variable . Comment ) ;
260
263
}
261
264
context . Output . Write ( '@' ) ;
262
265
context . Output . Write ( variable . Name ) ;
263
266
context . Output . Write ( " = " ) ;
267
+ }
264
268
265
- LlvmIrVariableOptions options = variable . Options ?? LlvmIrGlobalVariable . DefaultOptions ;
269
+ void WriteVariableOptions ( GeneratorWriteContext context , LlvmIrVariableOptions options )
270
+ {
266
271
WriteLinkage ( context , options . Linkage ) ;
267
272
WritePreemptionSpecifier ( context , options . RuntimePreemption ) ;
268
273
WriteVisibility ( context , options . Visibility ) ;
269
274
WriteAddressSignificance ( context , options . AddressSignificance ) ;
270
275
WriteWritability ( context , options . Writability ) ;
271
276
}
272
277
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
+
273
290
void WriteGlobalVariable ( GeneratorWriteContext context , LlvmIrGlobalVariable variable )
274
291
{
275
292
if ( ! context . InVariableGroup ) {
0 commit comments