Kyungwoo Lee [Fri, 4 Mar 2016 20:29:11 +0000 (12:29 -0800)]
Merge pull request #3509 from kyulee1/arm64build
Fix for disabling incremental build for ARM64
Aditya Mandaleeka [Fri, 4 Mar 2016 20:27:06 +0000 (12:27 -0800)]
Merge pull request #3497 from adityamandaleeka/threading_test_port
[WIP] Open source some more threading tests
Andy Ayers [Fri, 4 Mar 2016 19:27:22 +0000 (11:27 -0800)]
Merge pull request #3500 from AndyAyersMS/InlineRefactorInlineHints
Inline refactoring: convert hints into observations
Rahul Kumar [Fri, 4 Mar 2016 17:56:52 +0000 (09:56 -0800)]
Merge pull request #3491 from rahku/Helix
add TargetsWindows property required by cloudtest.targets in buildtools package
Rahul Kumar [Tue, 1 Mar 2016 23:31:11 +0000 (15:31 -0800)]
add TargetsWindows property required by cloudtest.targets in buildtools package
Aditya Mandaleeka [Fri, 4 Mar 2016 17:44:12 +0000 (09:44 -0800)]
Change priority of tests in baseservices/threading to 1.
Jan Kotas [Fri, 4 Mar 2016 17:36:05 +0000 (09:36 -0800)]
Merge pull request #3502 from myungjoo/fix/3462_arm_linux_stack
ARM-Linux Fixes (Issue #3462)
Jan Kotas [Fri, 4 Mar 2016 17:33:26 +0000 (09:33 -0800)]
Merge pull request #3503 from dotnet-bot/from-tfs
Merge changes from TFS
Mike McLaughlin [Fri, 4 Mar 2016 17:31:15 +0000 (09:31 -0800)]
Merge pull request #3404 from gregg-miskelly/DbgShimFix
DbgShim!RegisterForRuntimeStartup: Avoid extra call to callback
Sejong Oh [Fri, 4 Mar 2016 17:08:22 +0000 (09:08 -0800)]
Merge pull request #3156 from sejongoh/add_gc_stress_modes
Add GC stress modes
Sejong Oh [Fri, 4 Mar 2016 17:06:27 +0000 (09:06 -0800)]
Merge pull request #3337 from sejongoh/reuse_existing_function_to_set_stress_modes
reuse getStressModeScriptStep
Andy Ayers [Wed, 2 Mar 2016 23:21:50 +0000 (15:21 -0800)]
Inline refactoring: convert hints into observations
This change updates the inlining code to use observations in place of
the InlineHints and hint-like things (eg "HasSimd"). A number of new
observations were added in support of this.
The `compInlineeHints` member of the compiler object was removed as
the same information is now tracked by the inline policy. The policy
also now contains most of the weights and combining logic used to
compute the profitabiliy boost for the candidate.
There is one subtle and tricky aspect to the change. For the most part
the hints were ignored during the prejit-root analysis, but the mostly
load-store hint was propagated and influenced the inlines done when
crossgenning mscorlib. See #3482 for more on this particular quirk.
I've preserved this behavior by "passing" the prejit inline result
into `fgFindJumpTargets`. In actuality the result is passed by
temporarily setting the `compInlineResult` compiler member variable.
Then, in `fgFindJumpTargets`, the load-store observation is the only
one not guarded by `compIsForInlining`. In a subsequent change I'll redo
the guards at other observation sites and put the policy aspects of these
observations into the policy object.
This addresses another piece of the work outlined in #3371.
Kyungwoo Lee [Fri, 4 Mar 2016 16:38:05 +0000 (08:38 -0800)]
Fix for disabling incremental build for ARM64
The fix (
d58885c9a37d857f10d90f6db7246630d4ce8980) broke ARM64 debug
build.
The right fix is to disable such flag for all archs.
Maoni Stephens [Fri, 4 Mar 2016 07:33:35 +0000 (23:33 -0800)]
197654 [x86] [scanRuntime] Fix contracts in gcenv.os.cpp
[tfs-changeset: 1581565]
MyungJoo Ham [Fri, 4 Mar 2016 04:38:15 +0000 (13:38 +0900)]
Fix Stack Unwind Behavior of Libunwind-ARM
Disable UNW_ARM_METHOD_DWARF, which gets problematic with
assembly-created stacks in ARM systems.
Although previous commits have fixed the compatibility issues
between cpp stacks and libunwind-arm, the assembly part
(asmhelpers.S) had similar problems.
Fix #3462
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Wed, 2 Mar 2016 12:27:00 +0000 (21:27 +0900)]
Fix PAL_VirtualUnwind Behavior with Clutters in PC
Libunwind-ARM recommends to read LR to get value of PC
while unwinding stack, which often causes the caller
(PAL_VirtualUnwind) to have LSB of PC set.
Such behavior incurs errornous behavior of PAL_VirtualUnwind
if the output is fed back to PAL_VirtualUnwind as the input,
which is observed with VirtualUnwindToFirstManagedCallFrame().
This commit clears LSB of PC in WinContext to prevent it.
Note that this is a partial fix for the issue #3462.
(this does not fix assembly stacks)
Fix #3462
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Sejong Oh [Fri, 12 Feb 2016 09:23:35 +0000 (01:23 -0800)]
Add GC stress modes
Kyungwoo Lee [Fri, 4 Mar 2016 02:04:56 +0000 (18:04 -0800)]
Merge pull request #3498 from kyulee1/disinc
Fix for disabling incremental link in Windows
Sejong Oh [Wed, 24 Feb 2016 05:44:38 +0000 (21:44 -0800)]
reuse getStressModeScriptStep
William Godbe [Fri, 4 Mar 2016 00:35:04 +0000 (16:35 -0800)]
Merge pull request #3499 from wtgodbe/nameTooLong
Fix file-name-too-long error for all builds, not just pri1
William Godbe [Fri, 4 Mar 2016 00:27:39 +0000 (16:27 -0800)]
Fix file-name-too-long error for all builds, not just pri1
Aditya Mandaleeka [Fri, 4 Mar 2016 00:05:49 +0000 (16:05 -0800)]
Remove needless references to test library.
Andy Ayers [Thu, 3 Mar 2016 23:49:29 +0000 (15:49 -0800)]
Merge pull request #3472 from AndyAyersMS/InlineRefactorFixPlumbing
Inline refactoring: rework logic in compCompileHelper
Kyungwoo Lee [Thu, 3 Mar 2016 23:38:08 +0000 (15:38 -0800)]
Fix for disabling incremental link in Windows
I'm still getting linker error (mostly debug build) which often caused a
trouble to reboot the machine.
Looking at vcxproj files, we didn't correctly disable incremental link.
There is some ordering issues in linker flag definitions.
The disabling flag should be at the end for each build type
to override the default behavior.
Pat Gavlin [Thu, 3 Mar 2016 23:09:31 +0000 (15:09 -0800)]
Merge pull request #3494 from dotnet-bot/from-tfs
Merge changes from TFS
Aditya Mandaleeka [Thu, 3 Mar 2016 23:09:00 +0000 (15:09 -0800)]
Add license headers to ported threading tests.
Aditya Mandaleeka [Thu, 3 Mar 2016 22:15:53 +0000 (14:15 -0800)]
Remove Monitor/EnterExit15.
Pat Gavlin [Thu, 3 Mar 2016 22:12:09 +0000 (14:12 -0800)]
Merge pull request #3488 from benpye/arm-redefinition
Fix ARM build regression
Pat Gavlin [Thu, 3 Mar 2016 21:00:03 +0000 (13:00 -0800)]
Add two files that should have been part of changeset #1581242.
[tfs-changeset: 1581263]
Aditya Mandaleeka [Thu, 3 Mar 2016 20:28:27 +0000 (12:28 -0800)]
Exclude DefaultStackCommit test from non-Windows platforms.
Aditya Mandaleeka [Thu, 3 Mar 2016 20:24:52 +0000 (12:24 -0800)]
Open source tests from baseservices/threading.
Pat Gavlin [Thu, 3 Mar 2016 19:51:59 +0000 (11:51 -0800)]
Refactor Utilcode's IAllocators.
- `DefaultAllocator` has been replaced with `HostAllocator` in RyuJIT, which
uses the JIT hosting interface to allocate and free memory.
- The definition of `DefaultAllocator` has been moved into its own file, as it
remains in use by the interpreter and the binder.
- `ProcessHeapAllocator` has been moved into JIT32, as that was its only
remaining user.
- `AllowZeroAllocator`'s static field has been changed to an instance field
to avoid the need to define storage for the static field in Utilcode.
[tfs-changeset: 1581242]
Lubomir Litchev [Thu, 3 Mar 2016 17:48:53 +0000 (09:48 -0800)]
Merge pull request #3459 from LLITCHEV/Issue3382-1
Fix GC holes for all AMD64 platforms (Windows and System V) and a bug…
MyungJoo Ham [Mon, 29 Feb 2016 08:11:10 +0000 (17:11 +0900)]
Fix CMake Script for libunwind Feature Check
Check the availability correctly for Linux.
The cmake configuration script has been trying to find out
the availability of functions directly with check_function_exists,
which depends on the symbol names in .so files.
However, the libunwind implementation uses macros to
redefine functions names for each architecture making it
impossible to directly look up symbol tables of .so files.
In order to allow the script to use the information in
header files, check_function_exists should be replaced
with check_cxx_source_compiles.
Besides config.h.in had missing declarations for the
CMAKE variables
Fix #3372
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
MyungJoo Ham [Mon, 29 Feb 2016 08:07:31 +0000 (17:07 +0900)]
Fix Stack Unwind for ARM/Linux
Make context information compatible with libunwind-arm.
In Linux/ARM, seh-unwind.cpp has been updating unw_cursor_t
to point another stack by updating the cursor's register
entries. However, that does not work in libunwind-arm in
Linux, which breaks PAL_VirtualUnwind() functions.
Getting the stack information from the cursor had
a compatibility issue as well.
This patch make both "context->cursor" and "cursor->context"
methods compatible with ARM/Linux.
Fix #3312
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Ben Pye [Thu, 3 Mar 2016 15:16:33 +0000 (15:16 +0000)]
Fix ARM build regression
Lubomir Litchev [Mon, 29 Feb 2016 06:43:16 +0000 (22:43 -0800)]
Fix GC holes for all AMD64 platforms (Windows and System V) and a bug for System V OSs in the codegen
for GS cookie comparison on amd64.
Fixes issue #3382.
There is a bug in the genEmitGSCookieCheck method for amd64 having to do
with potentially trashing a second rgister (RDX) for a 2 register returned
struct.
It also sets the byref state for RAX, if needed. And GCRef and BrRef for
RDX, if needed.
Conflicts:
tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs
Russ Keldorph [Thu, 3 Mar 2016 01:50:22 +0000 (17:50 -0800)]
Merge pull request #3457 from RussKeldorph/Reenable
Reenable tests after #2728 workaround in place
Sejong Oh [Thu, 3 Mar 2016 00:58:38 +0000 (16:58 -0800)]
Merge pull request #3284 from sejongoh/pull_down_coredistool
Pulling down coredistool package for gcstress test
Matt Mitchell [Thu, 3 Mar 2016 00:48:17 +0000 (16:48 -0800)]
Merge pull request #3476 from mmitche/fix-triggers
Fix triggers
Davis Goodin [Thu, 3 Mar 2016 00:46:47 +0000 (18:46 -0600)]
Merge pull request #3405 from dagood/new-cli
Upgrade dotnet CLI version, accumulated project.json changes
Matt Mitchell [Thu, 3 Mar 2016 00:25:29 +0000 (16:25 -0800)]
Fix triggers
The github triggers were broken with two types of windows builds using the same context next. One was the build only job that is just used to feed into the *Nix testing. We don't need to launch these builds at all, since they are just used for internal testing.
See also #3475
Pat Gavlin [Thu, 3 Mar 2016 00:09:10 +0000 (16:09 -0800)]
Merge pull request #1668 from Dmitry-Me/assignmentOpReturningUnsuitableType
Impossible implicit downcast in assignment operator
Sivarv [Wed, 2 Mar 2016 23:45:05 +0000 (15:45 -0800)]
Merge pull request #3467 from sivarv/emitInsMovFix
Fix to intermittent failure of jit test 200w1d-09_cpp_r.exe
Jan Kotas [Wed, 2 Mar 2016 22:09:51 +0000 (14:09 -0800)]
Merge pull request #3471 from dotnet-bot/from-tfs
Merge changes from TFS
Mike McLaughlin [Wed, 2 Mar 2016 21:01:08 +0000 (13:01 -0800)]
Merge pull request #3466 from mikem8361/armfix
Fixes issue #3453 ARM build break.
Maoni Stephens [Wed, 2 Mar 2016 20:23:49 +0000 (12:23 -0800)]
Integrate GC changes from full framework
[tfs-changeset: 1580785]
Andy Ayers [Wed, 2 Mar 2016 17:35:01 +0000 (09:35 -0800)]
Inline refactoring: rework logic in compCompileHelper
This change reworks the logic in `compCompileHelper` to split
out the invocation of `fgFindBasicBlocks` for the special
prejit-root case (see #3371). As a side benefit the two InlineResults
needed for the prejit inline scan can be merged.
Andy Ayers [Wed, 2 Mar 2016 19:43:48 +0000 (11:43 -0800)]
Merge pull request #3447 from AndyAyersMS/ForceInlineFix
Inliner: restore some force inline overrides
Jarret Shook [Wed, 2 Mar 2016 19:38:59 +0000 (11:38 -0800)]
Merge pull request #3468 from jashook/amr64_rel
Turn off testing for arm64 for debug and checked builds.
jashook [Wed, 2 Mar 2016 19:31:25 +0000 (11:31 -0800)]
Turn off testing for arm64 for debug and checked builds.
Jarret Shook [Wed, 2 Mar 2016 18:48:27 +0000 (10:48 -0800)]
Merge pull request #3435 from jashook/arm64_testing
Small changes to netci to enable arm64 testing.
Mike McLaughlin [Wed, 2 Mar 2016 18:42:40 +0000 (10:42 -0800)]
Fixes issue #3453 ARM build break.
Andy Ayers [Wed, 2 Mar 2016 18:34:41 +0000 (10:34 -0800)]
Merge pull request #3460 from AndyAyersMS/FixBadInlineeRedundancy
Inliner: fix assert for multiple failure reasons when inlining
Davis Goodin [Tue, 1 Mar 2016 23:18:01 +0000 (17:18 -0600)]
Change all dependency versions to match what was actually restored in the checked-in lockfiles.
Used a tool to look at lockfiles: when a dependency did not have a corresponding downloaded package, found the latest version that was downloaded and changed the project.json to match. This fixes any packages that don't exist (such as some beta-23302) and floating dependencies (*).
Davis Goodin [Wed, 24 Feb 2016 00:57:04 +0000 (18:57 -0600)]
Remove RestorePackages = true from all test csproj's.
Restore is performed once as a batch. csproj's share project.jsons, so restoring for each one was a race to update the lockfile.
Davis Goodin [Wed, 24 Feb 2016 00:11:15 +0000 (18:11 -0600)]
Use tooling to add Platforms dependencies and imports where necessary.
Davis Goodin [Tue, 23 Feb 2016 23:14:23 +0000 (17:14 -0600)]
Remove all lockfiles from source control.
Davis Goodin [Tue, 23 Feb 2016 20:37:36 +0000 (14:37 -0600)]
Upgrade CLI version and buildtools, and make build file changes.
Unset CORE_ROOT in environment on Windows before doing restore so that dotnet CLI doesn't try to run using binaries from the test CORE_ROOT.
Restore the xunit wrapper projects in a batch rather than individually to save a lot of time.
Work around xunit.runner.msbuild not having compatible package layout by ignoring errors and adding import so that a future fix will work.
Hard-code C# language for generated wrapper projects: the $(Language) property wasn't set.
Also Change www.myget.org to dotnet.myget.org, as we switched to enterprise myget.
Add System.ObjectModel to tests\src\JIT\config\benchmark+serialize\project.json to manually upgrade it to a version that doesn't require lifting for runtime. This fixes System.ObjectModel.dll being missing from CORE_ROOT and causing the test to fail.
Switch to v3 nuget feeds and sync NuGet.Configs.
sivarv [Wed, 2 Mar 2016 18:26:17 +0000 (10:26 -0800)]
Fix to intermittent failure of jit test 200w1d-09_cpp_r.exe
This is a long standing bug in xarch emitter that repros when a static field
access results in the following IR
lclvar = GT_IND(GT_LEA(GT_CLS_VAR_ADDR, offset=200))
GT_CLAS_VAR_ADDR represents address of the static class object and
offset is used to access a field of a static class.
In this case codegen of GT_IND would call emitInsMov(treeNode= GT_IND)
emiInsMov is checking whether 'base' of addr is GT_CLS_VAR_ADDR and if
so is disregarding offset/indiex/scale fields within addr mode. As a
result code generated is
lea rdx, [reloc classVar[0xddc44ce8]]
movsd xmm10, qword ptr [reloc classVar[0xddc44ce8]]
The bug is that emitInsMov() should be checking that oper of addr of GT_IND
is GT_CLS_VAR_ADDR. Same issue exists in GT_STOREIND case. After the
fix the following code is generated
lea rdx, [reloc classVar[0xdc5a4ce8]]
movsd xmm10, qword ptr [rdx+200]
Why this bug repros intermittently? fgMorphField() when morphing a static
field access obtains static's addr and checks to see whether its addr
can be encoded as pc-relative 32-bit offset. If so then fgMorphField() will create
GT_CLS_VAR_ADDR to represent static's addr. If static's addr cannot be
encoded pc-relative 32-bit offset then it will create long type icon to represent the
address. Later long icon + offset is folded into a single long constant
and the test passes in this case. The test fails whenver GT_CLS_VAR_ADDR +
offset materializes in IR which in turn depends on the distance between
jitted code address and the static's address. In most cases statics
were at a distance that cannot be encoded as pc-relative and hence works
correctly. Hence the intermittent failure of this test.
Kyungwoo Lee [Wed, 2 Mar 2016 18:14:34 +0000 (10:14 -0800)]
Merge pull request #3444 from kyulee1/mul
ARM64: Fix for Multiplication with Overflow Check
Kyungwoo Lee [Tue, 1 Mar 2016 17:33:13 +0000 (09:33 -0800)]
ARM64: Fix for Multiplication with Overflow Check
For 4 byte integer multiplication, JIT emits a bad-code which is valid
only for 8 byte (i8) multiplication.
For the fix, I use ```smull```(signed)/```umull```(unsigned) instructions
that contain 8 byte results from 4 byte by 4 byte multiplication.
So only one multiplication is needed instead of two for this case.
By simply shifting the results, we could get the upper results that is
used to detect overflow.
Similar transform is made for the unsigned case.
Lower is also changed to reserve a register for overflow check.
Before
smulh w10, w8, w9 --> Incorrect use: smulh is for obtaining the upper
bits [127:64] of x8 * x9
mul w8, w8, w9
cmp x10, x8, ASR #63
After
smull x8, x8, x9 --> x8 = w8 * w9
lsr x10, x8, #32 --> shift the upper bit of x8 to get sign bit
cmp w10, w8, ASR #31 --> check sign bit
Pat Gavlin [Wed, 2 Mar 2016 18:07:11 +0000 (10:07 -0800)]
Merge pull request #3464 from kyulee1/deltest
Delete a bad test (b06435) for double to long conversion
jashook [Tue, 1 Mar 2016 01:06:40 +0000 (17:06 -0800)]
Small changes to netci to enable arm64 testing.
Jan Kotas [Wed, 2 Mar 2016 17:59:39 +0000 (09:59 -0800)]
Merge pull request #3456 from bbowyersmyth/StringReplace
Port String.Replace(char, char) from CoreRT
Kyungwoo Lee [Wed, 2 Mar 2016 01:17:14 +0000 (17:17 -0800)]
Delete a bad test (b06435) for double to long conversion
This test relies on unspecified value when a large double value
is converted to a long value where overflow occurs.
For x64(cvttsd2si), this value is MIN_INT(0x8000000000000000) while ARM64(fcvtzs) produces MAX_INT(0x7fffffffffffffff).
According to ECMA spec, the value is unspecified, so I simply delete this test.
Sejong OH [Sat, 20 Feb 2016 20:44:13 +0000 (12:44 -0800)]
Add pulling down coredistool package for gcstress test
Jan Kotas [Wed, 2 Mar 2016 11:45:39 +0000 (03:45 -0800)]
Merge pull request #3458 from dotnet-bot/from-tfs
Merge changes from TFS
Andy Ayers [Wed, 2 Mar 2016 07:24:43 +0000 (23:24 -0800)]
Inliner: fix assert for multiple failure reasons when inlining
Change #3436 added asserts that checked that the LegacyPolicy would not
see multiple failing observations when inlining because we expect the
inliner to fail fast when it hits the first bad observation.
This change adds a test case that shows one example where we could get
two failing observations, along with code changes to fix the issue.
When an inlinee has invalid IL, an exception is raised and caught in
`jitNativeCode`. The catch there sets the inline result to the never
state. A failure code is propagated back to `fgInvokeInlineeCompiler`
which redundantly sets the inline result to a failing state with a
generic "something bad happened" observation. This second observation
triggers an assert since the jit is inlining and the result is already
known to be a failure.
The fix is to check in `fgInvokeInlineeCompiler` if the inline result
is already known to be in a failing state, and if so, forgo the new
observation.
John Chen [Wed, 2 Mar 2016 06:43:03 +0000 (22:43 -0800)]
Fix build break on arm caused by long path support change
[tfs-changeset: 1580615]
Russ Keldorph [Wed, 2 Mar 2016 05:05:34 +0000 (21:05 -0800)]
Reenable tests after #2728 workaround in place
Reenable CscBench and serialization tests that were failing due to #2728
now that a workaround should be in place.
Also remove callipinvoke tests that were tagged as both "failing" and
"unsupported" on non-Windows platforms. Leave them in the more specific
"unsupported" file.
Sean Gillespie [Wed, 2 Mar 2016 04:02:52 +0000 (20:02 -0800)]
Merge pull request #3448 from swgillespie/license_headers
Fix license header for test files
Bruce Bowyer-Smyth [Wed, 2 Mar 2016 03:49:41 +0000 (13:49 +1000)]
Port String.Replace(char, char) from CoreRT
Andy Ayers [Tue, 1 Mar 2016 21:11:59 +0000 (13:11 -0800)]
Inliner: restore some force inline overrides
Force inline should override the IL size and maxstack limits imposed
for normal inlines. This change undoes an unintentional behavior change
from recent refactoring.
Added some test cases which are sensitive to this behavior.
Also, since we now track failing inlines, dump the inline tree even
if no methods were successfully inlined.
Swaroop Sridhar [Tue, 1 Mar 2016 22:21:13 +0000 (14:21 -0800)]
Merge pull request #3438 from swaroop-sridhar/corjithost
Export CorJitHost interface
Mike McLaughlin [Tue, 1 Mar 2016 21:58:43 +0000 (13:58 -0800)]
Merge pull request #3445 from mikem8361/buildsymbols
Enable source/line info on "release" builds
John Chen [Tue, 1 Mar 2016 21:48:22 +0000 (13:48 -0800)]
Merge pull request #3433 from JohnChen0/longpath
Support long paths in CoreCLR runtime on Windows
Gaurav Khanna [Tue, 1 Mar 2016 19:42:21 +0000 (11:42 -0800)]
Merge pull request #3440 from gkhanna79/InitToolsUpdate
Map RHEL distribution to download CentOS CLI
Andy Ayers [Tue, 1 Mar 2016 19:02:10 +0000 (11:02 -0800)]
Merge pull request #3436 from AndyAyersMS/InlineRefactorResilientPolicy
Inliner refactoring: allow repeated bad observations
Kyungwoo Lee [Tue, 1 Mar 2016 17:35:54 +0000 (09:35 -0800)]
Merge pull request #3385 from kyulee1/fixmod1
ARM64: Fix for Mod 1
Mike McLaughlin [Tue, 1 Mar 2016 17:26:07 +0000 (09:26 -0800)]
Enable source/line info on "release" builds
The symbol info will be stripped and put into a separate *-dbg by dotnet cli (soon).
Kyungwoo Lee [Fri, 26 Feb 2016 19:30:23 +0000 (11:30 -0800)]
ARM64: Fix for Mod 1
In Arm64, mod a % b is simulated as a - a / b * b.
When b (divisor) is 1, the result is simply 0.
This optimization is done in the post-pass of morph
while JIT already expands the mod operation in the pre-pass of morph.
This unnessary expansion results in bad codegen down the road.
So, the fix is to move this special case handling in the pre-pass.
Before
fgMorphTree BB02, stmt 2 (after)
[000035] ------------- /--* lclVar int V02 tmp1
[000036] -A----------- /--* comma int
[000001] ------------- | | /--* const int 0xffffffff80000000
[000034] -A----------- | \--* = int
[000033] D------N----- | \--* lclVar int V02 tmp1
[000041] -A----------- /--* - int
[000040] ------------- | \--* lclVar int V02
[000006] -A----------- * = int
[000005] D------N----- \--* lclVar int V01 tmp0
After
[000033] ------------- /--* const int 0
[000006] -A----------- * = int
[000005] D------N----- \--* lclVar int V01 tmp0
Gaurav Khanna [Tue, 1 Mar 2016 06:50:01 +0000 (22:50 -0800)]
Map RHEL distribution to download CentOS CLI
Lubomir Litchev [Tue, 1 Mar 2016 05:29:51 +0000 (21:29 -0800)]
Merge pull request #3351 from LLITCHEV/Issue2757
Add support for emitting GC-ness of the second return register for 16…
Brian Sullivan [Tue, 1 Mar 2016 03:21:28 +0000 (19:21 -0800)]
Merge pull request #3437 from briansull/update-tests
Updated arm64 Tests.lst for PR #3430
This is a test metadata only update, it contains no source code changes
Brian Sullivan [Tue, 1 Mar 2016 02:57:36 +0000 (18:57 -0800)]
Moved 42 tests from UNSTABLE to EXPECTED_PASS
Swaroop Sridhar [Tue, 1 Mar 2016 02:24:28 +0000 (18:24 -0800)]
Export CorJitHost interface
Export the CorJitHost interface to the build directory, so that
alternate JITs can use it.
This change is necessary to fix LLILC build break.
Brian Sullivan [Tue, 1 Mar 2016 01:58:53 +0000 (17:58 -0800)]
Updated arm64 Tests.lst for PR #3430
That PR fixed Issue #3104 and we now have 20 new passing tests
There are still 5 tests with that tag that still fail and now are marked with NEED_TRIAGE
The tests that fail when we do not set COMPLUS_GCgen0size=
50000000 are now tagged with REQ_LARGE_GEN0
Andy Ayers [Mon, 29 Feb 2016 22:59:46 +0000 (14:59 -0800)]
Inliner refactoring: allow repeated bad observations
The LegacyPolicy now allows repeated observations leading to never
or failing inlines, provided the policy is used as part of the prejit
scan and the observations all have the same impact (that is, all nevers
or all failures). Only the first bad observation is remembered and it
is used as the reason for badness.
This addresses another of the items in issue #3371.
Also, clean up a few things:
Fix a few copy and paste errors in comment headers.
Fix broken "disallow copy-assignment" pattern for InlineResult
and uncomment and fix same for InlinePolicy.
Remove an accidentally duplicated comment block (original is still
there in inline.h).
Lubomir Litchev [Thu, 25 Feb 2016 05:26:55 +0000 (21:26 -0800)]
Add support for emitting GC-ness of the second return register for 16 byte
structs.
This changeset adds support for emitting the GC-ness of the second return
register (RDX for System V Amd64) for multi-register return structs.
It closes a hole in the GC info and resolves multiple GC stress failures.
Fixes #2757.
Pat Gavlin [Mon, 29 Feb 2016 23:50:37 +0000 (15:50 -0800)]
Merge pull request #3434 from dotnet-bot/from-tfs
Merge changes from TFS
Andy Ayers [Mon, 29 Feb 2016 23:48:10 +0000 (15:48 -0800)]
Merge pull request #3432 from AndyAyersMS/InlineRefactorRemoveLRMode
Inliner refactoring: remove the LR sampling mode
Pat Gavlin [Mon, 29 Feb 2016 22:40:59 +0000 (14:40 -0800)]
Fix a build break in ArenaAllocator.
The toolset used by the internal build (and the ARM build in CI) seems to be a bit
buggy w.r.t. move assignment and deleted assignment operators. In particular,
it attempts to generate an assignment operator for a derived type whose base
type has deleted the corresponding operator and it chooses deleted copy
assignment operators over move assignment operators unless std::move is
used.
[tfs-changeset: 1579941]
John Chen (JOCHEN7) [Wed, 24 Feb 2016 04:36:07 +0000 (20:36 -0800)]
Support long paths in CoreCLR runtime on Windows
The CoreCLR runtime is updated to support long file paths on Windows.
Pending updates to mscorlib.dll, the following scenarios are supported:
* Run managed apps from a long path.
* Load CoreCLR runtime and framework from a long path.
* Load user assemblies from a long path.
* Run CrossGen from a long path, with its input/output from a long path.
* Generate debug log file at a long path.
The following scenarios are not yet supported, and will be fixed in
future commits:
* Mscorlib.dll and framework assemblies are not yet long path compatible.
Note that until mscorlib.dll is fixed, most of the runtime changes can't
actually be used.
* Support on non-Windows platforms.
* Support for debugging and error reporting.
* Tools such as ilasm or ildasm.
Andy Ayers [Mon, 29 Feb 2016 18:33:23 +0000 (10:33 -0800)]
Inliner refactoring: remove the LR sampling mode
Remove code that sampled methods and provided data for the linear
regresssion (LR) size model used by the inliner. We plan on preserving
the current model for legacy behavior and creating new and different
models for future work.
Addreses one part of #3371.
Pat Gavlin [Mon, 29 Feb 2016 20:55:50 +0000 (12:55 -0800)]
Merge pull request #3431 from CarolEidt/ProtojitAltJit
Define ALT_JIT for protojit.dll
Pat Gavlin [Mon, 29 Feb 2016 19:33:15 +0000 (11:33 -0800)]
Merge pull request #3389 from pgavlin/AllocatorRefactor
Refactor the pooled ArenaAllocator.
Pat Gavlin [Mon, 29 Feb 2016 19:32:46 +0000 (11:32 -0800)]
Merge pull request #3429 from kyulee1/pow
ARM64: Fix for pow test
Rahul Kumar [Mon, 29 Feb 2016 19:21:29 +0000 (11:21 -0800)]
Merge pull request #3430 from rahku/arm64
Fixes issue #2643 and #2731
Carol Eidt [Mon, 29 Feb 2016 19:18:02 +0000 (11:18 -0800)]
Define ALT_JIT for protojit.dll
This enables the use of the COMPlus variables for controlling which
files use the altjit, as well as for dumps, etc.