forked from OSchip/llvm-project
kmp_affinity: Fix check if specific bit is set
Clang 4.0 trunk warns: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses] This points to a potential bug if the code really wants to check if the single bit is not set: If for example (buf.edx >> 9) = 2 (has any bit set except the least significant one), 'logical not' will return 0 which stays 0 after the 'bitwise and'. To do this correctly we first need to evaluate the 'bitwise and'. In that case it returns 2 & 1 = 0 which after the 'logical not' evaluates to 1. Differential Revision: https://reviews.llvm.org/D28599 llvm-svn: 291764
This commit is contained in:
parent
eff6e83f23
commit
c9a8a6c030
|
@ -1022,7 +1022,7 @@ __kmp_affinity_create_apicid_map(AddrUnsPair **address2os,
|
|||
// The apic id and max threads per pkg come from cpuid(1).
|
||||
//
|
||||
__kmp_x86_cpuid(1, 0, &buf);
|
||||
if (! (buf.edx >> 9) & 1) {
|
||||
if (((buf.edx >> 9) & 1) == 0) {
|
||||
__kmp_set_system_affinity(oldMask, TRUE);
|
||||
__kmp_free(threadInfo);
|
||||
KMP_CPU_FREE(oldMask);
|
||||
|
|
Loading…
Reference in New Issue