@@ -343,41 +343,43 @@ struct constGraphTensorCacheManager {
343
343
}
344
344
};
345
345
346
- static void addGlobalI32 (ModuleOp module, Location loc, OpBuilder &builder,
346
+ static void addGlobalI32 (ModuleOp & module, Location loc, OpBuilder &builder,
347
347
StringRef name, int32_t value) {
348
348
OpBuilder::InsertionGuard insertGuard (builder);
349
349
builder.setInsertionPointToStart (module.getBody ());
350
350
351
351
auto type = IntegerType::get (builder.getContext (), 32 );
352
352
LLVM::GlobalOp global = builder.create <LLVM::GlobalOp>(
353
- loc, type, /* isConstant=*/ true , LLVM::Linkage::Internal , name,
353
+ loc, type, /* isConstant=*/ true , LLVM::Linkage::External , name,
354
354
builder.getI32IntegerAttr (value),
355
355
/* alignment=*/ 0 );
356
356
}
357
357
358
- static void addGlobalI64Array (ModuleOp module, Location loc, OpBuilder &builder,
359
- StringRef name, ArrayRef<int64_t > array) {
358
+ static void addGlobalI64Array (ModuleOp &module, Location loc,
359
+ OpBuilder &builder, StringRef name,
360
+ ArrayRef<int64_t > array) {
360
361
OpBuilder::InsertionGuard insertGuard (builder);
361
362
builder.setInsertionPointToStart (module.getBody ());
362
363
363
364
auto type = LLVM::LLVMArrayType::get (
364
365
IntegerType::get (builder.getContext (), 64 ), array.size ());
365
366
LLVM::GlobalOp global = builder.create <LLVM::GlobalOp>(
366
- loc, type, /* isConstant=*/ true , LLVM::Linkage::Internal , name,
367
- builder.getI64ArrayAttr (array),
367
+ loc, type, /* isConstant=*/ true , LLVM::Linkage::External , name,
368
+ builder.getI64TensorAttr (array),
368
369
/* alignment=*/ 0 );
369
370
}
370
371
371
- static void addGlobalI32Array (ModuleOp module, Location loc, OpBuilder &builder,
372
- StringRef name, ArrayRef<int32_t > array) {
372
+ static void addGlobalI32Array (ModuleOp &module, Location loc,
373
+ OpBuilder &builder, StringRef name,
374
+ ArrayRef<int32_t > array) {
373
375
OpBuilder::InsertionGuard insertGuard (builder);
374
376
builder.setInsertionPointToStart (module.getBody ());
375
377
376
378
auto type = LLVM::LLVMArrayType::get (
377
379
IntegerType::get (builder.getContext (), 32 ), array.size ());
378
380
LLVM::GlobalOp global = builder.create <LLVM::GlobalOp>(
379
- loc, type, /* isConstant=*/ true , LLVM::Linkage::Internal , name,
380
- builder.getI32ArrayAttr (array),
381
+ loc, type, /* isConstant=*/ true , LLVM::Linkage::External , name,
382
+ builder.getI32TensorAttr (array),
381
383
/* alignment=*/ 0 );
382
384
}
383
385
@@ -493,7 +495,7 @@ void CST::runOnOperation() {
493
495
494
496
FunctionType foldFuncType =
495
497
FunctionType::get (context, inputTypes, outputTypes);
496
- auto foldFunc =
498
+ func::FuncOp foldFunc =
497
499
builder.create <func::FuncOp>(topFunc.getLoc (), funcName, foldFuncType);
498
500
Block *foldBlock = foldFunc.addEntryBlock ();
499
501
// values of folded constant weights in foldBlock
@@ -541,6 +543,8 @@ void CST::runOnOperation() {
541
543
globalIndexes);
542
544
543
545
foldFunc.setVisibility (SymbolTable::Visibility::Public);
546
+ foldFunc->setAttr (LLVM::LLVMDialect::getEmitCWrapperAttrName (),
547
+ UnitAttr::get (context));
544
548
moduleOp.push_back (foldFunc);
545
549
symbolTable.insert (foldFunc);
546
550
0 commit comments