summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseOpenMP.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-07-22 06:07:09 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-07-22 06:07:09 +0000
commit8b5126027406918e5b1f6ff4be2e98d231bb7704 (patch)
treea691cbc8ee1a1b224bf20222ca8680deeac4ee44 /clang/lib/Parse/ParseOpenMP.cpp
parentfc3d8f0a78fe326cd5403e86cfc03b0abf668f31 (diff)
downloadbcm5719-llvm-8b5126027406918e5b1f6ff4be2e98d231bb7704.tar.gz
bcm5719-llvm-8b5126027406918e5b1f6ff4be2e98d231bb7704.zip
Fix std::make_heap's worst case time complexity
std::make_heap is currently implemented by iteratively applying a siftup-type algorithm. Since sift-up is O(ln n), this gives std::make_heap a worst case time complexity of O(n ln n). The C++ standard mandates that std::make_heap make no more than O(3n) comparisons, this makes our std::make_heap out of spec. Fix this by introducing an implementation of __sift_down and switch std::make_heap to create the heap using it. This gives std::make_heap linear time complexity in the worst case. This fixes PR20161. llvm-svn: 213615
Diffstat (limited to 'clang/lib/Parse/ParseOpenMP.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud