42 lines · cpp
1//===- OpenMPCommon.cpp - Utils for translating MLIR dialect to LLVM IR----===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines general utilities for MLIR Dialect translations to LLVM IR.10//11//===----------------------------------------------------------------------===//12 13#include "mlir/Target/LLVMIR/Dialect/OpenMPCommon.h"14 15llvm::Constant *16mlir::LLVM::createSourceLocStrFromLocation(Location loc,17 llvm::OpenMPIRBuilder &builder,18 StringRef name, uint32_t &strLen) {19 if (auto fileLoc = dyn_cast<FileLineColLoc>(loc)) {20 StringRef fileName = fileLoc.getFilename();21 unsigned lineNo = fileLoc.getLine();22 unsigned colNo = fileLoc.getColumn();23 return builder.getOrCreateSrcLocStr(name, fileName, lineNo, colNo, strLen);24 }25 std::string locStr;26 llvm::raw_string_ostream locOS(locStr);27 locOS << loc;28 return builder.getOrCreateSrcLocStr(locStr, strLen);29}30 31llvm::Constant *32mlir::LLVM::createMappingInformation(Location loc,33 llvm::OpenMPIRBuilder &builder) {34 uint32_t strLen;35 if (auto nameLoc = dyn_cast<NameLoc>(loc)) {36 StringRef name = nameLoc.getName();37 return createSourceLocStrFromLocation(nameLoc.getChildLoc(), builder, name,38 strLen);39 }40 return createSourceLocStrFromLocation(loc, builder, "unknown", strLen);41}42