From a02dbd274c368611a28b11e999b69f1bf67e76af Mon Sep 17 00:00:00 2001 From: Haining Date: Wed, 2 Oct 2024 10:28:49 +0300 Subject: [PATCH] remove .cl --- .../parsers/program/ProgramParser.java | 8 ++---- .../parsers/program/utils/Compilation.java | 28 ++----------------- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java index d98cca549e..43cec38698 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/ProgramParser.java @@ -9,7 +9,6 @@ import static com.dat3m.dartagnan.parsers.program.utils.Compilation.applyLlvmPasses; import static com.dat3m.dartagnan.parsers.program.utils.Compilation.compileWithClang; -import static com.dat3m.dartagnan.parsers.program.utils.Compilation.applyDemangling;; public class ProgramParser { @@ -25,7 +24,6 @@ public Program parse(File file) throws Exception { if (needsClang(file)) { file = compileWithClang(file, ""); file = applyLlvmPasses(file); - file = applyDemangling(file); return new ProgramParser().parse(file); } @@ -40,15 +38,15 @@ public Program parse(File file) throws Exception { } private boolean needsClang(File f) { - return f.getPath().endsWith(".c") || f.getPath().endsWith(".i") || f.getPath().endsWith(".cl"); + return f.getPath().endsWith(".c") || f.getPath().endsWith(".i"); } public Program parse(String raw, String path, String format, String cflags) throws Exception { switch (format) { - case "c", "i", "cl" -> { + case "c", "i" -> { File file = path.isEmpty() ? // This is for the case where the user fully typed the program instead of loading it - File.createTempFile("dat3m", format) : + File.createTempFile("dat3m", ".c") : // This is for the case where the user loaded the program new File(path, "dat3m.c"); try (FileWriter writer = new FileWriter(file)) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/Compilation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/Compilation.java index 5b2c89f199..256c4a507d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/Compilation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/utils/Compilation.java @@ -54,47 +54,25 @@ public static File applyLlvmPasses(File file) throws IOException { return new File(outputFileName); } - public static File applyDemangling(File file) throws IOException { - final File outputFile = new File(getOutputName(file, "-dmg.ll")); - ArrayList cmd = new ArrayList<>(); - cmd.add("llvm-cxxfilt"); - try { - runCmd(cmd, file, outputFile); - } catch (Exception e) { - logger.warn("Failed to run llvm-cxxfilt (llvm symbol name demangler). Continuing without demangling."); - return file; - } - return outputFile; - } - private static String getOutputName(File file, String postfix) throws IOException { return getOrCreateOutputDirectory() + "/" + file.getName().substring(0, file.getName().lastIndexOf('.')) + postfix; } private static void runCmd(ArrayList cmd) throws Exception { - runCmd(cmd, null, null); - } - - private static void runCmd(ArrayList cmd, File inputFile, File outputFile) throws Exception { logger.debug(String.join(" ", cmd)); ProcessBuilder processBuilder = new ProcessBuilder(cmd); - if(inputFile != null) { - processBuilder.redirectInput(inputFile); - } // "Unless the standard input and output streams are promptly written and read respectively // of the sub process, it may block or deadlock the sub process." // https://www.developer.com/design/understanding-java-process-and-java-processbuilder/ // The lines below take care of this. - if(outputFile == null) { - outputFile = File.createTempFile("log", null); - } + File log = File.createTempFile("log", null); processBuilder.redirectErrorStream(true); - processBuilder.redirectOutput(outputFile); + processBuilder.redirectOutput(log); Process proc = processBuilder.start(); proc.waitFor(); if(proc.exitValue() != 0) { - String errorString = Files.asCharSource(outputFile, Charsets.UTF_8).read(); + String errorString = Files.asCharSource(log, Charsets.UTF_8).read(); throw new IOException("'" + String.join("' '", cmd) + "': " + errorString); } }