summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorExpressionDAGChecker.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-06-10 13:46:51 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-06-10 13:46:51 (GMT)
commit477e4136ef525e16e9d91174bf3bfebf8b0d2650 (patch)
tree941962dad0f5642c6b3b2d162efb1b3542a27203 /Source/cmGeneratorExpressionDAGChecker.cxx
parent9ac601618ef93ac4c5c6805fe3bb7d19a56bf5a6 (diff)
downloadCMake-477e4136ef525e16e9d91174bf3bfebf8b0d2650.zip
CMake-477e4136ef525e16e9d91174bf3bfebf8b0d2650.tar.gz
CMake-477e4136ef525e16e9d91174bf3bfebf8b0d2650.tar.bz2
Add missing 'seen' check for evaluating COMPILE_OPTIONS.
Commit 089fe1c1 (Optimize genex evaluation for includes and defines., 2013-02-01) introduced an optimization on DAG processing to not reprocess properties on targets which have already been seen. This was refactored slightly in commit 8dfdf1c7 (Fix the tests for evaluating includes and defines., 2013-02-18), but was not extended to cover COMPILE_OPTIONS in commit 80ca9c4b (Add COMPILE_OPTIONS target property., 2013-05-16). This omission causes the same performance regression in running cmake on LLVM which 089fe1c1 fixed before, but this time for the transitive evaluation of the COMPILE_OPTIONS property.
Diffstat (limited to 'Source/cmGeneratorExpressionDAGChecker.cxx')
-rw-r--r--Source/cmGeneratorExpressionDAGChecker.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx
index e5ffb0c..6c6a7d4 100644
--- a/Source/cmGeneratorExpressionDAGChecker.cxx
+++ b/Source/cmGeneratorExpressionDAGChecker.cxx
@@ -34,7 +34,8 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
this->CheckResult = this->checkGraph();
if (CheckResult == DAG && (top->EvaluatingIncludeDirectories()
- || top->EvaluatingCompileDefinitions()))
+ || top->EvaluatingCompileDefinitions()
+ || top->EvaluatingCompileOptions()))
{
std::map<cmStdString, std::set<cmStdString> >::const_iterator it
= top->Seen.find(target);