diff options
author | Junyan He <junyan.he@linux.intel.com> | 2014-09-05 16:54:27 +0800 |
---|---|---|
committer | Zhigang Gong <zhigang.gong@intel.com> | 2014-09-05 17:16:04 +0800 |
commit | ba21f080b15728bf4a742aa16aac5a341521ce33 (patch) | |
tree | e24eb9dff03e9fb91446202d098f33e2ef06859e | |
parent | 594a9104a4194b1e0cc224c0c772fe4606d3894a (diff) |
Add uncompatible PCH Options to avoid compiling failure.
Signed-off-by: Junyan He <junyan.he@linux.intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
-rw-r--r-- | backend/src/backend/program.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index 98e8a34..8c41d5e 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -628,6 +628,7 @@ namespace gbe { std::istringstream idirs(dirs); std::string pchFileName; bool findPCH = false; + bool invalidPCH = false; size_t start = 0, end = 0; std::string hdirs = OCL_HEADER_FILE_DIR; @@ -652,6 +653,10 @@ namespace gbe { std::string optionStr(str); const std::string unsupportedOptions("-cl-denorms-are-zero, -cl-strict-aliasing, -cl-opt-disable," "-cl-no-signed-zeros, -cl-fp32-correctly-rounded-divide-sqrt"); + + const std::string uncompatiblePCHOptions = ("-cl-single-precision-constant, -cl-fast-relaxed-math"); + const std::string fastMathOption = ("-cl-fast-relaxed-math"); + while (end != std::string::npos) { end = optionStr.find(' ', start); std::string str = optionStr.substr(start, end - start); @@ -662,6 +667,14 @@ namespace gbe { if(unsupportedOptions.find(str) != std::string::npos) continue; + if (uncompatiblePCHOptions.find(str) != std::string::npos) + invalidPCH = true; + + if (fastMathOption.find(str) != std::string::npos) { + clOpt.push_back("-D"); + clOpt.push_back("__FAST_RELAXED_MATH__=1"); + } + clOpt.push_back(str); } free(str); @@ -687,7 +700,7 @@ namespace gbe { FILE *clFile = fdopen(clFd, "w"); FATAL_IF(clFile == NULL, "Failed to open temporary file"); - if (!findPCH) { + if (!findPCH || invalidPCH) { clOpt.push_back("-include"); clOpt.push_back("ocl.h"); } else { |