[K/N] Report a warning on non-existent LLVM IR dump directory
^KT-61744 fixed
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt
index 768d39a..674ed11 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt
@@ -39,7 +39,14 @@
return
}
val moduleName: String = llvmModule.getName()
- val output = File(context.config.saveLlvmIrDirectory, "$moduleName.${state.phase.name}.ll")
+ val parentDirectory = context.config.saveLlvmIrDirectory
+ if (!parentDirectory.exists()) {
+ context.messageCollector.report(
+ CompilerMessageSeverity.WARNING,
+ "Cannot dump LLVM IR to non-existent location: ${parentDirectory.absolutePath}")
+ return
+ }
+ val output = File(parentDirectory, "$moduleName.${state.phase.name}.ll")
if (LLVMPrintModuleToFile(llvmModule, output.absolutePath, null) != 0) {
error("Can't dump LLVM IR to ${output.absolutePath}")
}
diff --git a/native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.args b/native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.args
new file mode 100644
index 0000000..ebb675b
--- /dev/null
+++ b/native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.args
@@ -0,0 +1,3 @@
+$TESTDATA_DIR$/simple.kt
+-Xsave-llvm-ir-after=Codegen
+-Xsave-llvm-ir-directory=/no/such/dir
\ No newline at end of file
diff --git a/native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.out b/native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.out
new file mode 100644
index 0000000..1b29208
--- /dev/null
+++ b/native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.out
@@ -0,0 +1,2 @@
+warning: cannot dump LLVM IR to non-existent location: /no/such/dir
+OK
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/cli/NativeCliTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/cli/NativeCliTestGenerated.java
index b401be0..644b42b 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/cli/NativeCliTestGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/cli/NativeCliTestGenerated.java
@@ -29,6 +29,11 @@
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/cli/native"), Pattern.compile("^(.+)\\.args$"), null, false);
}
+ @TestMetadata("llvmIrDumpDirectoryDoesntExist.args")
+ public void testLlvmIrDumpDirectoryDoesntExist() {
+ runTest("native/native.tests/testData/cli/native/llvmIrDumpDirectoryDoesntExist.args");
+ }
+
@TestMetadata("simple.args")
public void testSimple() {
runTest("native/native.tests/testData/cli/native/simple.args");