summaryrefslogtreecommitdiff
path: root/src/jit
diff options
context:
space:
mode:
authorSergey Andreenko <seandree@microsoft.com>2019-06-07 15:04:51 -0700
committerGitHub <noreply@github.com>2019-06-07 15:04:51 -0700
commitee62ba30b18f58e460fae2fa8d88572621bf8aff (patch)
tree5e68f269d9692f2e69ccf398cbe18d1f52e76def /src/jit
parent77c1832cf25f43f9e8e6d272f955819d7c35c11b (diff)
parent49e0d43397b801253ce152485c6629070283f841 (diff)
downloadcoreclr-ee62ba30b18f58e460fae2fa8d88572621bf8aff.tar.gz
coreclr-ee62ba30b18f58e460fae2fa8d88572621bf8aff.tar.bz2
coreclr-ee62ba30b18f58e460fae2fa8d88572621bf8aff.zip
Merge pull request #24007 from mikedn/enable-w4
Compile JIT sources with /W4
Diffstat (limited to 'src/jit')
-rw-r--r--src/jit/CMakeLists.txt2
-rw-r--r--src/jit/compiler.h4
-rw-r--r--src/jit/gentree.cpp3
-rw-r--r--src/jit/hashbv.cpp5
-rw-r--r--src/jit/hwintrinsiccodegenxarch.cpp2
-rw-r--r--src/jit/hwintrinsicxarch.cpp14
-rw-r--r--src/jit/unwind.cpp20
-rw-r--r--src/jit/unwindamd64.cpp5
-rw-r--r--src/jit/unwindarm.cpp4
-rw-r--r--src/jit/unwindarm64.cpp4
-rw-r--r--src/jit/unwindx86.cpp4
11 files changed, 30 insertions, 37 deletions
diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt
index b2572a8e6b..38d5e8c935 100644
--- a/src/jit/CMakeLists.txt
+++ b/src/jit/CMakeLists.txt
@@ -8,6 +8,8 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_options(-Wno-error)
endif()
+add_compile_options($<$<CXX_COMPILER_ID:MSVC>:-W4>)
+
if (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64 OR (CLR_CMAKE_TARGET_ARCH_I386 AND NOT CLR_CMAKE_PLATFORM_UNIX))
add_definitions(-DFEATURE_SIMD)
add_definitions(-DFEATURE_HW_INTRINSICS)
diff --git a/src/jit/compiler.h b/src/jit/compiler.h
index da42aa14ce..bdc9a5c262 100644
--- a/src/jit/compiler.h
+++ b/src/jit/compiler.h
@@ -7441,8 +7441,8 @@ private:
#endif // _TARGET_ARM_
#if defined(_TARGET_UNIX_)
- int mapRegNumToDwarfReg(regNumber reg);
- void createCfiCode(FuncInfoDsc* func, UCHAR codeOffset, UCHAR opcode, USHORT dwarfReg, INT offset = 0);
+ short mapRegNumToDwarfReg(regNumber reg);
+ void createCfiCode(FuncInfoDsc* func, UNATIVE_OFFSET codeOffset, UCHAR opcode, short dwarfReg, INT offset = 0);
void unwindPushPopCFI(regNumber reg);
void unwindBegPrologCFI();
void unwindPushPopMaskCFI(regMaskTP regMask, bool isFloat);
diff --git a/src/jit/gentree.cpp b/src/jit/gentree.cpp
index df2bdfef06..a5c718a181 100644
--- a/src/jit/gentree.cpp
+++ b/src/jit/gentree.cpp
@@ -18007,8 +18007,9 @@ bool GenTreeHWIntrinsic::OperIsMemoryLoadOrStore()
{
#ifdef _TARGET_XARCH_
return OperIsMemoryLoad() || OperIsMemoryStore();
-#endif // _TARGET_XARCH_
+#else
return false;
+#endif
}
#endif // FEATURE_HW_INTRINSICS
diff --git a/src/jit/hashbv.cpp b/src/jit/hashbv.cpp
index 5539baa2ca..d3e3c6c8e6 100644
--- a/src/jit/hashbv.cpp
+++ b/src/jit/hashbv.cpp
@@ -793,15 +793,16 @@ void hashBv::setBit(indexType index)
{
assert(index >= 0);
assert(this->numNodes == this->getNodeCount());
- hashBvNode* result = nullptr;
indexType baseIndex = index & ~(BITS_PER_NODE - 1);
indexType base = index - baseIndex;
indexType elem = base / BITS_PER_ELEMENT;
indexType posi = base % BITS_PER_ELEMENT;
+ hashBvNode* result = nodeArr[0];
+
// this should be the 99% case : when there is only one node in the structure
- if ((result = nodeArr[0]) && result->baseIndex == baseIndex)
+ if ((result != nullptr) && (result->baseIndex == baseIndex))
{
result->elements[elem] |= indexType(1) << posi;
return;
diff --git a/src/jit/hwintrinsiccodegenxarch.cpp b/src/jit/hwintrinsiccodegenxarch.cpp
index 72fc44adc1..a12fa1d0fe 100644
--- a/src/jit/hwintrinsiccodegenxarch.cpp
+++ b/src/jit/hwintrinsiccodegenxarch.cpp
@@ -174,7 +174,7 @@ void CodeGen::genHWIntrinsic(GenTreeHWIntrinsic* node)
if ((ival != -1) && varTypeIsFloating(baseType))
{
assert((ival >= 0) && (ival <= 127));
- genHWIntrinsic_R_R_RM_I(node, ins, ival);
+ genHWIntrinsic_R_R_RM_I(node, ins, static_cast<int8_t>(ival));
}
else if (category == HW_Category_MemoryLoad)
{
diff --git a/src/jit/hwintrinsicxarch.cpp b/src/jit/hwintrinsicxarch.cpp
index 3b0c6f8ef0..b9eee2cf79 100644
--- a/src/jit/hwintrinsicxarch.cpp
+++ b/src/jit/hwintrinsicxarch.cpp
@@ -117,7 +117,6 @@ static InstructionSet X64VersionOfIsa(InstructionSet isa)
return InstructionSet_POPCNT_X64;
default:
unreached();
- return InstructionSet_ILLEGAL;
}
}
@@ -396,10 +395,7 @@ GenTree* HWIntrinsicInfo::lookupLastOp(const GenTreeHWIntrinsic* node)
}
default:
- {
unreached();
- return nullptr;
- }
}
}
@@ -660,7 +656,6 @@ GenTree* Compiler::impNonConstFallback(NamedIntrinsic intrinsic, var_types simdT
default:
unreached();
- return nullptr;
}
}
@@ -906,9 +901,9 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
op3 = addRangeCheckIfNeeded(intrinsic, op3, mustExpand);
- argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg2, &argClass)));
- op2 = getArgForHWIntrinsic(argType, argClass);
- var_types op2Type;
+ argType = JITtype2varType(strip(info.compCompHnd->getArgType(sig, arg2, &argClass)));
+ op2 = getArgForHWIntrinsic(argType, argClass);
+ var_types op2Type = TYP_UNDEF;
if (intrinsic == NI_AVX2_GatherVector128 || intrinsic == NI_AVX2_GatherVector256)
{
assert(varTypeIsSIMD(op2->TypeGet()));
@@ -1958,10 +1953,7 @@ GenTree* Compiler::impBMI1OrBMI2Intrinsic(NamedIntrinsic intrinsic,
}
default:
- {
unreached();
- return nullptr;
- }
}
}
diff --git a/src/jit/unwind.cpp b/src/jit/unwind.cpp
index 5197a7e28e..a4ed69e582 100644
--- a/src/jit/unwind.cpp
+++ b/src/jit/unwind.cpp
@@ -120,9 +120,10 @@ void Compiler::unwindGetFuncLocations(FuncInfoDsc* func,
#if defined(_TARGET_UNIX_)
-void Compiler::createCfiCode(FuncInfoDsc* func, UCHAR codeOffset, UCHAR cfiOpcode, USHORT dwarfReg, INT offset)
+void Compiler::createCfiCode(FuncInfoDsc* func, UNATIVE_OFFSET codeOffset, UCHAR cfiOpcode, short dwarfReg, INT offset)
{
- CFI_CODE cfiEntry(codeOffset, cfiOpcode, dwarfReg, offset);
+ noway_assert(static_cast<UCHAR>(codeOffset) == codeOffset);
+ CFI_CODE cfiEntry(static_cast<UCHAR>(codeOffset), cfiOpcode, dwarfReg, offset);
func->cfiCodes->push_back(cfiEntry);
}
@@ -130,9 +131,8 @@ void Compiler::unwindPushPopCFI(regNumber reg)
{
assert(compGeneratingProlog);
- FuncInfoDsc* func = funCurrentFunc();
- unsigned int cbProlog = unwindGetCurrentOffset(func);
- noway_assert((BYTE)cbProlog == cbProlog);
+ FuncInfoDsc* func = funCurrentFunc();
+ UNATIVE_OFFSET cbProlog = unwindGetCurrentOffset(func);
regMaskTP relOffsetMask = RBM_CALLEE_SAVED
#if defined(UNIX_AMD64_ABI) && ETW_EBP_FRAMED
@@ -205,12 +205,11 @@ void Compiler::unwindPushPopMaskCFI(regMaskTP regMask, bool isFloat)
void Compiler::unwindAllocStackCFI(unsigned size)
{
assert(compGeneratingProlog);
- FuncInfoDsc* func = funCurrentFunc();
- unsigned int cbProlog = 0;
+ FuncInfoDsc* func = funCurrentFunc();
+ UNATIVE_OFFSET cbProlog = 0;
if (compGeneratingProlog)
{
cbProlog = unwindGetCurrentOffset(func);
- noway_assert((BYTE)cbProlog == cbProlog);
}
createCfiCode(func, cbProlog, CFI_ADJUST_CFA_OFFSET, DWARF_REG_ILLEGAL, size);
}
@@ -225,9 +224,8 @@ void Compiler::unwindAllocStackCFI(unsigned size)
void Compiler::unwindSetFrameRegCFI(regNumber reg, unsigned offset)
{
assert(compGeneratingProlog);
- FuncInfoDsc* func = funCurrentFunc();
- unsigned int cbProlog = unwindGetCurrentOffset(func);
- noway_assert((BYTE)cbProlog == cbProlog);
+ FuncInfoDsc* func = funCurrentFunc();
+ UNATIVE_OFFSET cbProlog = unwindGetCurrentOffset(func);
createCfiCode(func, cbProlog, CFI_DEF_CFA_REGISTER, mapRegNumToDwarfReg(reg));
if (offset != 0)
diff --git a/src/jit/unwindamd64.cpp b/src/jit/unwindamd64.cpp
index 4117628e3f..8d5cc38f21 100644
--- a/src/jit/unwindamd64.cpp
+++ b/src/jit/unwindamd64.cpp
@@ -18,9 +18,9 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#if defined(_TARGET_AMD64_)
#ifdef UNIX_AMD64_ABI
-int Compiler::mapRegNumToDwarfReg(regNumber reg)
+short Compiler::mapRegNumToDwarfReg(regNumber reg)
{
- int dwarfReg = DWARF_REG_ILLEGAL;
+ short dwarfReg = DWARF_REG_ILLEGAL;
switch (reg)
{
@@ -457,7 +457,6 @@ void Compiler::unwindSaveRegCFI(regNumber reg, unsigned offset)
FuncInfoDsc* func = funCurrentFunc();
unsigned int cbProlog = unwindGetCurrentOffset(func);
- noway_assert((BYTE)cbProlog == cbProlog);
createCfiCode(func, cbProlog, CFI_REL_OFFSET, mapRegNumToDwarfReg(reg), offset);
}
}
diff --git a/src/jit/unwindarm.cpp b/src/jit/unwindarm.cpp
index 936ba1b656..cf82579f3c 100644
--- a/src/jit/unwindarm.cpp
+++ b/src/jit/unwindarm.cpp
@@ -17,9 +17,9 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#endif
#if defined(_TARGET_ARM_) && defined(_TARGET_UNIX_)
-int Compiler::mapRegNumToDwarfReg(regNumber reg)
+short Compiler::mapRegNumToDwarfReg(regNumber reg)
{
- int dwarfReg = DWARF_REG_ILLEGAL;
+ short dwarfReg = DWARF_REG_ILLEGAL;
switch (reg)
{
diff --git a/src/jit/unwindarm64.cpp b/src/jit/unwindarm64.cpp
index 0c4dc51740..81f98e2286 100644
--- a/src/jit/unwindarm64.cpp
+++ b/src/jit/unwindarm64.cpp
@@ -19,9 +19,9 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#if defined(_TARGET_ARM64_)
#if defined(_TARGET_UNIX_)
-int Compiler::mapRegNumToDwarfReg(regNumber reg)
+short Compiler::mapRegNumToDwarfReg(regNumber reg)
{
- int dwarfReg = DWARF_REG_ILLEGAL;
+ short dwarfReg = DWARF_REG_ILLEGAL;
NYI("CFI codes");
diff --git a/src/jit/unwindx86.cpp b/src/jit/unwindx86.cpp
index 40217fba9c..6a41a18d6a 100644
--- a/src/jit/unwindx86.cpp
+++ b/src/jit/unwindx86.cpp
@@ -21,9 +21,9 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#endif // _TARGET_X86_
#if defined(_TARGET_UNIX_)
-int Compiler::mapRegNumToDwarfReg(regNumber reg)
+short Compiler::mapRegNumToDwarfReg(regNumber reg)
{
- int dwarfReg = DWARF_REG_ILLEGAL;
+ short dwarfReg = DWARF_REG_ILLEGAL;
NYI("CFI codes");