diff options
Diffstat (limited to 'source/slang/slang-ir-link.cpp')
| -rw-r--r-- | source/slang/slang-ir-link.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/slang/slang-ir-link.cpp b/source/slang/slang-ir-link.cpp index e652745e7..26d96690f 100644 --- a/source/slang/slang-ir-link.cpp +++ b/source/slang/slang-ir-link.cpp @@ -1135,8 +1135,10 @@ bool isBetterForTarget( if(newCaps.isInvalid()) return false; if(oldCaps.isInvalid()) return true; - if(newCaps != oldCaps) - return newCaps.implies(oldCaps); + bool isEqual = false; + bool isNewBetter = newCaps.isBetterForTarget(oldCaps, targetCaps, isEqual); + if(!isEqual) + return isNewBetter; // All preceding factors being equal, an `[export]` is better // than an `[import]`. @@ -1882,7 +1884,7 @@ LinkedIR linkIR( } // Specialize target_switch branches to use the best branch for the target. - specializeTargetSwitch(targetReq, state->irModule); + specializeTargetSwitch(targetReq, state->irModule, codeGenContext->getSink()); // Diagnose on unresolved symbols if we are compiling into a target that does // not allow incomplete symbols. |
