From 0360f81b9741ece65768a65731bd23455a3b7a96 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Fri, 2 Feb 2018 08:49:04 -0800 Subject: Remove support for the -no-checking flag (#392) * Remove support for the -no-checking flag Fixes #381 Fixes #383 Work on #382 - No longer expose flag through API (`SLANG_COMPILE_FLAG_NO_CHECKING`) and command-line (`-no-checking`) options - Remove all logic in `check.cpp` that was withholding diagnostics (including errors) when the no-checking mode was enabled - Remove `HiddenImplicitCastExpr`, which was only created to support no-checking mode (it represented an implicit cast that our checking through was needed, but couldn't emit because it might be wrong) - Remove logic for storing function bodies as raw token lists when checking is turned off. I'm leaving in the `UnparsedStmt` AST node in case we ever need/want to lazily parse and check function bodies down the line. - Remove a few of the code-generation paths we had to contend with, but keep the comment about them in place. - Remove GLSL-based tests that can't meaningfully work with the new approach. - Fix other tests that used a GLSL baseline so that their GLSL compiles with `-pass-through glslang` instead of invoking `slang` with the `-no-checking` flag. - Remove tests that were explicitly added to test the "rewriter + IR" path, since that is no longer supported. There is more cleanup that can be done here, now that we know that AST-based rewrite and IR will never co-exist, but it is probably easier to deal with that as part of removing the AST-based rewrite path. We've lost some test coverage here, but actually not too much if we consider that we are dropping GLSL input anyway. * Fixup: test runner was mis-counting ignored tests * Fixup: turn on dumping on test failure under Travis * Fixup: enable extensions in Linux build of glslang --- tools/render-test/slang-support.cpp | 12 ++++++------ tools/slang-test/main.cpp | 22 ++++++++++------------ 2 files changed, 16 insertions(+), 18 deletions(-) (limited to 'tools') diff --git a/tools/render-test/slang-support.cpp b/tools/render-test/slang-support.cpp index a75e35bd4..2a6401d5b 100644 --- a/tools/render-test/slang-support.cpp +++ b/tools/render-test/slang-support.cpp @@ -34,13 +34,13 @@ struct SlangShaderCompilerWrapper : public ShaderCompiler } spAddPreprocessorDefine(slangRequest, langDefine, "1"); - // If we aren't dealing with true Slang input, then don't enable checking. - // - // Note: do this before using command-line arguments to set flags, so - // that we don't accidentally clobber other flags. - if (sourceLanguage != SLANG_SOURCE_LANGUAGE_SLANG) + // If we are dealing with GLSL input, then we need to set up + // Slang to pass through to glslang instead of actually running + // the compiler (this is a workaround to make direct comparisons + // possible) + if (sourceLanguage == SLANG_SOURCE_LANGUAGE_GLSL) { - spSetCompileFlags(slangRequest, SLANG_COMPILE_FLAG_NO_CHECKING); + spSetPassThrough(slangRequest, SLANG_PASS_THROUGH_GLSLANG); } // Preocess any additional command-line options specified for Slang using diff --git a/tools/slang-test/main.cpp b/tools/slang-test/main.cpp index 267f62bfe..4edd8272d 100644 --- a/tools/slang-test/main.cpp +++ b/tools/slang-test/main.cpp @@ -30,6 +30,10 @@ enum OutputMode // need to output test results in a way that the AppVeyor // environment can pick up and display. kOutputMode_AppVeyor, + + // We currently don't specialize for Travis, but maybe + // we should. + kOutputMode_Travis, }; struct TestCategory; @@ -153,6 +157,7 @@ void parseOptions(int* argc, char** argv) } else if( strcmp(arg, "-travis") == 0 ) { + options.outputMode = kOutputMode_Travis; options.dumpOutputOnFailure = true; } else if( strcmp(arg, "-category") == 0 ) @@ -839,13 +844,14 @@ TestResult runCrossCompilerTest(TestInput& input) actualSpawner.pushArgument(filePath); expectedSpawner.pushArgument(filePath + ".glsl"); + expectedSpawner.pushArgument("-pass-through"); + expectedSpawner.pushArgument("glslang"); for( auto arg : input.testOptions->args ) { actualSpawner.pushArgument(arg); expectedSpawner.pushArgument(arg); } - expectedSpawner.pushArgument("-no-checking"); if (spawnAndWait(outputStem, expectedSpawner) != kOSError_None) { @@ -1052,8 +1058,6 @@ TestResult doGLSLComparisonTestRun( spawner.pushArgument(passThrough); } - spawner.pushArgument("-no-checking"); - spawner.pushArgument("-target"); spawner.pushArgument("spirv-assembly"); @@ -1476,6 +1480,8 @@ void handleTestResult( String const& testName, TestResult testResult) { + context->totalTestCount++; + switch( testResult ) { case kTestResult_Fail: @@ -1499,7 +1505,7 @@ void handleTestResult( // printf("OUTPUT_MODE: %d\n", options.outputMode); switch( options.outputMode ) { - case kOutputMode_Default: + default : { char const* resultString = "UNEXPECTED"; switch( testResult ) @@ -1511,7 +1517,6 @@ void handleTestResult( assert(!"unexpected"); break; } - printf("%s test: '%S'\n", resultString, testName.ToWString().begin()); } break; @@ -1557,10 +1562,6 @@ void handleTestResult( } } break; - - default: - assert(!"unexpected"); - break; } } @@ -1645,9 +1646,6 @@ void runTestsOnFile( continue; } - context->totalTestCount++; - - String outputStem = filePath; if(subTestIndex != 0) { -- cgit v1.2.3