Lines Matching defs:fir
40 namespace fir {
43 } // namespace fir
49 class AddDebugInfoPass : public fir::impl::AddDebugInfoBase<AddDebugInfoPass> {
50 void handleDeclareOp(fir::cg::XDeclareOp declOp,
53 fir::DebugTypeGenerator &typeGen,
57 AddDebugInfoPass(fir::AddDebugInfoOptions options) : Base(options) {}
65 llvm::DenseMap<fir::GlobalOp, llvm::SmallVector<mlir::Attribute>>
76 void handleGlobalOp(fir::GlobalOp glocalOp, mlir::LLVM::DIFileAttr fileAttr,
78 fir::DebugTypeGenerator &typeGen,
80 fir::cg::XDeclareOp declOp);
83 fir::DebugTypeGenerator &typeGen,
85 bool createCommonBlockGlobal(fir::cg::XDeclareOp declOp,
89 fir::DebugTypeGenerator &typeGen,
92 getModuleAttrFromGlobalOp(fir::GlobalOp globalOp,
99 if (loc->findInstanceOf<mlir::FusedLocWith<fir::LocationKindAttr>>())
109 fir::cg::XDeclareOp declOp, const std::string &name,
111 fir::DebugTypeGenerator &typeGen, mlir::SymbolTable *symbolTable) {
117 if (auto conOp = mlir::dyn_cast_if_present<fir::ConvertOp>(op))
120 if (auto cordOp = mlir::dyn_cast_if_present<fir::CoordinateOp>(op)) {
121 optint = fir::getIntIfConstant(cordOp.getOperand(1));
125 if (auto conOp2 = mlir::dyn_cast_if_present<fir::ConvertOp>(op))
128 if (auto addrOfOp = mlir::dyn_cast_if_present<fir::AddrOfOp>(op)) {
131 symbolTable->lookup<fir::GlobalOp>(sym.getRootReference())) {
146 fir::unwrapRefType(declOp.getType()), fileAttr, scopeAttr, declOp);
169 void AddDebugInfoPass::handleDeclareOp(fir::cg::XDeclareOp declOp,
172 fir::DebugTypeGenerator &typeGen,
176 auto result = fir::NameUniquer::deconstruct(declOp.getUniqName());
178 if (result.first != fir::NameUniquer::NameKind::VARIABLE)
186 if (auto global = symbolTable->lookup<fir::GlobalOp>(declOp.getUniqName())) {
202 // constant attribute of [hl]fir.declare/fircg.ext_declare operation that has
210 auto tyAttr = typeGen.convertType(fir::unwrapRefType(declOp.getType()),
260 AddDebugInfoPass::getModuleAttrFromGlobalOp(fir::GlobalOp globalOp,
266 std::pair result = fir::NameUniquer::deconstruct(globalOp.getSymName());
296 void AddDebugInfoPass::handleGlobalOp(fir::GlobalOp globalOp,
299 fir::DebugTypeGenerator &typeGen,
301 fir::cg::XDeclareOp declOp) {
307 std::pair result = fir::NameUniquer::deconstruct(globalOp.getSymName());
308 if (result.first != fir::NameUniquer::NameKind::VARIABLE)
311 if (fir::NameUniquer::isSpecialSymbol(result.second.name))
336 fir::DebugTypeGenerator &typeGen,
348 unsigned int CC = (funcOp.getName() == fir::NameUniquer::doProgramEntry())
358 mlir::Attribute attr = funcOp->getAttr(fir::getInternalFuncNameAttrName());
363 auto result = fir::NameUniquer::deconstruct(funcName);
368 if (funcName == fir::NameUniquer::doProgramEntry()) {
371 funcOp->getAttrOfType<mlir::StringAttr>(fir::getSymbolAttrName());
386 auto tyAttr = typeGen.convertType(fir::unwrapRefType(inTy), fileAttr,
417 if (fir::isInternalProcedure(funcOp)) {
420 funcOp->getAttr(fir::getHostSymbolAttrName()));
482 funcOp.walk([&](fir::cg::XDeclareOp declOp) {
485 symbolTable->lookup<fir::GlobalOp>(declOp.getUniqName())) {
505 funcOp.walk([&](fir::cg::XDeclareOp declOp) {
526 fir::support::getOrSetDataLayout(module, /*allowDefaultLayout=*/true);
532 fir::DebugTypeGenerator typeGen(module, &symbolTable, *dl);
541 // The 2nd case is when this pass is invoked directly from 'fir-opt' tool.
579 for (auto globalOp : module.getOps<fir::GlobalOp>())
586 fir::createAddDebugInfoPass(fir::AddDebugInfoOptions options) {