aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/ModuleSymbolTable.cpp
diff options
context:
space:
mode:
authorJonathan Peyton <jonathan.l.peyton@intel.com>2018-12-13 23:18:55 +0000
committerJonathan Peyton <jonathan.l.peyton@intel.com>2018-12-13 23:18:55 +0000
commitbdb0a2ffaa18ea494ce81c32cb4454ad57735946 (patch)
treeddb450f7d71fe1a32217360a605744420eb84ce3 /llvm/lib/Object/ModuleSymbolTable.cpp
parent6d88e049dc51be8a9ba2e853e17fdf8c4fa6026b (diff)
downloadllvm-bdb0a2ffaa18ea494ce81c32cb4454ad57735946.zip
llvm-bdb0a2ffaa18ea494ce81c32cb4454ad57735946.tar.gz
llvm-bdb0a2ffaa18ea494ce81c32cb4454ad57735946.tar.bz2
[OpenMP] Fix transient divide by zero bug in 32-bit code
The value returned by __kmp_now_nsec() can overflow 32-bit values causing incorrect values to be returned. The overflow can end up causing a divide by zero error because in __kmp_initialize_system_tick(), the value (__kmp_now_nsec() - nsec) can end up being much larger than the numerator: 1e6 * (delay + (now - goal)) during a pathological timing where the current time calculated is much larger than nsec. When this happens, the value of __kmp_ticks_per_msec is set to zero which is then used as the denominator in the KMP_NOW_MSEC() macro leading to the divide by zero error. Differential Revision: https://reviews.llvm.org/D55300 llvm-svn: 349090
Diffstat (limited to 'llvm/lib/Object/ModuleSymbolTable.cpp')
0 files changed, 0 insertions, 0 deletions