From d8de9d4adc43db4467352192238c3ecf531074b4 Mon Sep 17 00:00:00 2001 From: foreman Date: Mon, 26 Oct 2015 12:03:20 -0400 Subject: [PATCH] P4 to Git Change 1203838 by emankov@em-hsa-amd on 2015/10/26 11:43:45 SWDEV-77584 - ORCA RT: Preparations for enabling HSAIL on OpenCL 1.2 by default. Error handling for parseAllOptions. [Testing] pre check-in [Reviewer] German Andryeyev http://ocltc.amd.com/reviews/r/8800/ Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#188 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#212 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsaprogram.cpp#21 edit --- rocclr/runtime/device/device.cpp | 12 ++++++++---- rocclr/runtime/device/gpu/gpuprogram.cpp | 18 +++++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/rocclr/runtime/device/device.cpp b/rocclr/runtime/device/device.cpp index ae07254ca2..378fd59a37 100644 --- a/rocclr/runtime/device/device.cpp +++ b/rocclr/runtime/device/device.cpp @@ -770,7 +770,11 @@ cl_int Program::link(const std::vector& inputPrograms, } } else { - amd::option::parseAllOptions(compileOptions_, options); + if (!amd::option::parseAllOptions(compileOptions_, options)) { + buildStatus_ = CL_BUILD_ERROR; + buildLog_ += options.optionsLog(); + LogError("Parsing compile options failed."); + } } uint64_t start_time = 0; @@ -972,7 +976,7 @@ Program::getCompileOptionsAtLinking(const std::vector& inputPrograms, if (!amd::option::parseAllOptions(program->compileOptions_, *thisCompileOptions)) { buildLog_ += thisCompileOptions->optionsLog(); - LogError("Bad compile options from input binary"); + LogError("Parsing compile options failed."); return false; } @@ -993,7 +997,7 @@ Program::getCompileOptionsAtLinking(const std::vector& inputPrograms, if (!amd::option::parseLinkOptions(program->linkOptions_, thisLinkOptions)) { buildLog_ += thisLinkOptions.optionsLog(); - LogError("Bad link options from input binary"); + LogError("Parsing link options failed."); return false; } if (thisLinkOptions.oVariables->clEnableLinkOptions) @@ -1002,7 +1006,7 @@ Program::getCompileOptionsAtLinking(const std::vector& inputPrograms, if (linkOptsCanOverwrite) { if (!thisCompileOptions->setOptionVariablesAs(*linkOptions)) { buildLog_ += thisCompileOptions->optionsLog(); - LogError("Bad compile options from input binary"); + LogError("Setting link options failed."); return false; } } diff --git a/rocclr/runtime/device/gpu/gpuprogram.cpp b/rocclr/runtime/device/gpu/gpuprogram.cpp index 82fae39cf1..3815c79c1c 100644 --- a/rocclr/runtime/device/gpu/gpuprogram.cpp +++ b/rocclr/runtime/device/gpu/gpuprogram.cpp @@ -1957,7 +1957,11 @@ HSAILProgram::getCompilationStagesFromBinary(std::vector& completeStage } std::string sCurOptions = compileOptions_ + linkOptions_; amd::option::Options curOptions; - amd::option::parseAllOptions(sCurOptions, curOptions); + if (!amd::option::parseAllOptions(sCurOptions, curOptions)) { + buildLog_ += curOptions.optionsLog(); + LogError("Parsing compile options failed."); + return ACL_TYPE_DEFAULT; + } switch (from) { // compile from HSAIL text, no matter prev. stages and options case ACL_TYPE_HSAIL_TEXT: @@ -2036,8 +2040,16 @@ HSAILProgram::getNextCompilationStageFromBinary(amd::option::Options* options) { std::string sBinOptions = std::string((char*)opts, symSize); std::string sCurOptions = compileOptions_ + linkOptions_; amd::option::Options curOptions, binOptions; - amd::option::parseAllOptions(sBinOptions, binOptions); - amd::option::parseAllOptions(sCurOptions, curOptions); + if (!amd::option::parseAllOptions(sBinOptions, binOptions)) { + buildLog_ += binOptions.optionsLog(); + LogError("Parsing compile options from binary failed."); + return ACL_TYPE_DEFAULT; + } + if (!amd::option::parseAllOptions(sCurOptions, curOptions)) { + buildLog_ += curOptions.optionsLog(); + LogError("Parsing compile options failed."); + return ACL_TYPE_DEFAULT; + } if (!curOptions.equals(binOptions)) { recompile = true; }