diff options
author | Sergey Andreenko <seandree@microsoft.com> | 2019-06-07 15:04:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-07 15:04:51 -0700 |
commit | ee62ba30b18f58e460fae2fa8d88572621bf8aff (patch) | |
tree | 5e68f269d9692f2e69ccf398cbe18d1f52e76def /src/jit | |
parent | 77c1832cf25f43f9e8e6d272f955819d7c35c11b (diff) | |
parent | 49e0d43397b801253ce152485c6629070283f841 (diff) | |
download | coreclr-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.txt | 2 | ||||
-rw-r--r-- | src/jit/compiler.h | 4 | ||||
-rw-r--r-- | src/jit/gentree.cpp | 3 | ||||
-rw-r--r-- | src/jit/hashbv.cpp | 5 | ||||
-rw-r--r-- | src/jit/hwintrinsiccodegenxarch.cpp | 2 | ||||
-rw-r--r-- | src/jit/hwintrinsicxarch.cpp | 14 | ||||
-rw-r--r-- | src/jit/unwind.cpp | 20 | ||||
-rw-r--r-- | src/jit/unwindamd64.cpp | 5 | ||||
-rw-r--r-- | src/jit/unwindarm.cpp | 4 | ||||
-rw-r--r-- | src/jit/unwindarm64.cpp | 4 | ||||
-rw-r--r-- | src/jit/unwindx86.cpp | 4 |
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"); |