Switch to llvm::findFirstSet instead of ffs since mingw doesn't have ffs.
ffs() vs findFirstSet() are slightly different, indexing is
0-based instead of 1-based.
Example mingw error:
http://build.chromium.org/p/tryserver.nacl/builders/nacl-toolchain-win7-pnacl-x86_64/builds/1920/steps/llvm_i686_w64_mingw32%20%28build%29/logs/stdio
BUG=none
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/563303002
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
index abc6b41..d1fdfc2 100644
--- a/src/IceTargetLoweringX8632.cpp
+++ b/src/IceTargetLoweringX8632.cpp
@@ -24,10 +24,9 @@
#include "IceTargetLoweringX8632.def"
#include "IceTargetLoweringX8632.h"
#include "llvm/ADT/DenseMap.h"
+#include "llvm/Support/MathExtras.h"
#include "llvm/Support/CommandLine.h"
-#include <strings.h>
-
namespace Ice {
namespace {
@@ -557,7 +556,7 @@
++I) {
Variable *Var = *I;
uint32_t NaturalAlignment = typeWidthInBytesOnStack(Var->getType());
- SizeT LogNaturalAlignment = ffs(NaturalAlignment) - 1;
+ SizeT LogNaturalAlignment = llvm::findFirstSet(NaturalAlignment);
assert(LogNaturalAlignment >= X86_LOG2_OF_MIN_STACK_SLOT_SIZE);
assert(LogNaturalAlignment <= X86_LOG2_OF_MAX_STACK_SLOT_SIZE);
SizeT BucketIndex = LogNaturalAlignment - X86_LOG2_OF_MIN_STACK_SLOT_SIZE;