[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");