platform/upstream/dotnet/runtime.git
8 years agoAdd parameter names to exception.
Stephen A. Imhoff [Sun, 26 Jun 2016 05:35:29 +0000 (14:35 +0900)]
Add parameter names to exception.

Commit migrated from https://github.com/dotnet/coreclr/commit/db472c4ffad271a2816ec2641b6a8b9aa2ace8d0

8 years agoSwitch from literal parameter names to nameof
Stephen A. Imhoff [Sun, 26 Jun 2016 05:23:54 +0000 (14:23 +0900)]
Switch from literal parameter names to nameof

Commit migrated from https://github.com/dotnet/coreclr/commit/da1cfa31d7d9e5ebcd6dd40cd340c73dcd3cf84f

8 years agoMerge pull request dotnet/coreclr#5993 from briansull/fix-5639
Brian Sullivan [Sat, 25 Jun 2016 06:18:36 +0000 (23:18 -0700)]
Merge pull request dotnet/coreclr#5993 from briansull/fix-5639

Fix for issue 5639

Commit migrated from https://github.com/dotnet/coreclr/commit/8e958879ebadab7760c8368e070d34f3b7cf6950

8 years agoMerge pull request dotnet/coreclr#5998 from briansull/Update-ReturnTypeDesc
Brian Sullivan [Sat, 25 Jun 2016 06:18:03 +0000 (23:18 -0700)]
Merge pull request dotnet/coreclr#5998 from briansull/Update-ReturnTypeDesc

Incremental work on ReturnTypeDesc for multiReg return support

Commit migrated from https://github.com/dotnet/coreclr/commit/8c93f49cbc5c0055b6ac63470e21332129e7842a

8 years agoMerge pull request dotnet/coreclr#5985 from ericstj/incrementCoreCLR+Jit
Eric StJohn [Fri, 24 Jun 2016 23:28:35 +0000 (16:28 -0700)]
Merge pull request dotnet/coreclr#5985 from ericstj/incrementCoreCLR+Jit

Update CoreCLR & JIT package versions

Commit migrated from https://github.com/dotnet/coreclr/commit/255985165bad4a9c7ffd5cac493a22f7bae46c9e

8 years agoMerge pull request dotnet/coreclr#5979 from kyulee1/boolfold
Kyungwoo Lee [Fri, 24 Jun 2016 22:06:10 +0000 (15:06 -0700)]
Merge pull request dotnet/coreclr#5979 from kyulee1/boolfold

ARM64: Fix Fold Type For optOptimizeBools

Commit migrated from https://github.com/dotnet/coreclr/commit/58a45c26ea2065fc9fb35bd7c10087a26fd9448e

8 years agoUse libc.so as default libc name (dotnet/coreclr#5990)
Peter Jas [Fri, 24 Jun 2016 22:01:11 +0000 (01:01 +0300)]
Use libc.so as default libc name (dotnet/coreclr#5990)

Based on https://github.com/dotnet/coreclr/pull/5727#discussion_r68369439,
it turned out `/lib/libc.musl-x86_64.so.1` was just a symlink in
Alpine Linux to actual lib `/lib/ld-musl-x86_64.so.1`.

This delta makes libc.so as default name for libc and removes all the
detection for musl and FreeBSD from cmake etc.

Commit migrated from https://github.com/dotnet/coreclr/commit/66f12f84f1d7a764adf715591fe3283f20f034d8

8 years agoChanges to ReturnTypeDesc support more than two return registers
Brian Sullivan [Thu, 23 Jun 2016 02:37:59 +0000 (19:37 -0700)]
Changes to ReturnTypeDesc support more than two return registers

Changed m_regType into an array
Renamed the Initialize method to InitializeReturnType

Commit migrated from https://github.com/dotnet/coreclr/commit/7f24c64895638fc22530da8f5fae878433e14465

8 years agoFix for issue 5639
Brian Sullivan [Fri, 24 Jun 2016 18:24:46 +0000 (11:24 -0700)]
Fix for issue 5639

Added check for hfa type
Update Test.lst removing the appropriate R2R_FAIL tags

Commit migrated from https://github.com/dotnet/coreclr/commit/81b2abba239fad281ede4e715beac3856477e61c

8 years agoUpdate supported profiler APIs
noahfalk [Fri, 24 Jun 2016 20:25:11 +0000 (13:25 -0700)]
Update supported profiler APIs

Commit migrated from https://github.com/dotnet/coreclr/commit/78ea6cd595e96cee9c54d6f4090fbc894c3e1c04

8 years agoARM64: Fix Small Operation For optOptimizeBools
Kyungwoo Lee [Thu, 23 Jun 2016 22:30:08 +0000 (15:30 -0700)]
ARM64: Fix Small Operation For optOptimizeBools

Fixes https://github.com/dotnet/coreclr/issues/5955

When merging two boolean operations (cmp/jmp) in optOptimizeBools, JIT
creates type based on operand type.
There is a case the operand type is bool (1 byte) so JIT creates a tree
that does 1 byte operation which arm64 cannot encode.
The fix is to bail out such case for arm in general.

This passes all 1375 tests in System.Net.Http.Unit.Tests.

Commit migrated from https://github.com/dotnet/coreclr/commit/1ba04a0d6deaae6152c816bbde33430fd73b088a

8 years agoMerge pull request dotnet/coreclr#5991 from kyulee1/stacklimit
Kyungwoo Lee [Fri, 24 Jun 2016 20:03:23 +0000 (13:03 -0700)]
Merge pull request dotnet/coreclr#5991 from kyulee1/stacklimit

ARM64: Fix StackLimit

Commit migrated from https://github.com/dotnet/coreclr/commit/dd28137183076265cc1779515ab48c8460301dda

8 years agoMerge pull request dotnet/coreclr#5973 from cmckinsey/DevDiv_216571
Chris McKinsey [Fri, 24 Jun 2016 19:05:47 +0000 (12:05 -0700)]
Merge pull request dotnet/coreclr#5973 from cmckinsey/DevDiv_216571

Fix SBCG in value-numbering constant assertprop

Commit migrated from https://github.com/dotnet/coreclr/commit/72c186f35a5410b8cb7ba711213b7ab2d444e69a

8 years agoMerge pull request dotnet/coreclr#5940 from briansull/retbuf-nonstandard
Brian Sullivan [Fri, 24 Jun 2016 18:18:07 +0000 (11:18 -0700)]
Merge pull request dotnet/coreclr#5940 from briansull/retbuf-nonstandard

ARM64: Change the fixed return buffer argument to be handled as a non-standard argument

Commit migrated from https://github.com/dotnet/coreclr/commit/4fb89705e1ad6d6e6fc91c7a9b0cb833a29dbc46

8 years agoFix SBCG in value-numbering constant assertprop
Chris McKinsey [Tue, 21 Jun 2016 17:59:32 +0000 (10:59 -0700)]
Fix SBCG in value-numbering constant assertprop

Value-numbering can assign the same value number to nodes
of different type as long as they have the same bit-representation.
However when substituting a constant into a tree node of different
type, we want the bit-exact representation and not the same value.
Assertion prop should reinterpret int/float value changes rather
than coercing them.

Add an il test that exposes a bug in assertionprop when doing
value-numbering based constant propagation. A cpblk can be used
to copy a scalar value between differing types but for which there
is no change in bit representation.

Commit migrated from https://github.com/dotnet/coreclr/commit/9a6a40d9edcc3ea85a005afc3727d4fc0cc2ae7c

8 years agoARM64: Fix StackLimit
Kyungwoo Lee [Fri, 24 Jun 2016 13:31:21 +0000 (06:31 -0700)]
ARM64: Fix StackLimit

Fixes https://github.com/dotnet/coreclr/issues/5640
We often got AV for tests that do a large stack allocations.
The fix is to match stack limt setup same as x64.

Commit migrated from https://github.com/dotnet/coreclr/commit/496615cb51e70c28d0632acd877ad86c5d8e263a

8 years agoMerge pull request dotnet/coreclr#5986 from dotnet-bot/UpdateDependencies20160624051958
Gaurav Khanna [Fri, 24 Jun 2016 13:55:32 +0000 (06:55 -0700)]
Merge pull request dotnet/coreclr#5986 from dotnet-bot/UpdateDependencies20160624051958

Updating External dependencies to beta-24224-00

Commit migrated from https://github.com/dotnet/coreclr/commit/20c8d0d8ba3a637fa3d5da39897956041bf5676a

8 years agoFix typo to apply mac build workaround only on OSX (dotnet/coreclr#5988)
Ivan Baravy [Fri, 24 Jun 2016 12:59:51 +0000 (16:59 +0400)]
Fix typo to apply mac build workaround only on OSX (dotnet/coreclr#5988)

/init-tools.sh:72 tries to compare strings like this:
if [ "$OS"=="OSX" ]; then

What it actually does is different to what it looks like:
$ echo $OS
$ if [ "$OS"=="OSX" ]; then echo EQUAL; fi
EQUAL
$ if [ "$OS" == "OSX" ]; then echo EQUAL; fi
$

This commit fixes the typo and makes OSX workaround run on macs only.

Commit migrated from https://github.com/dotnet/coreclr/commit/422f37e2ee9eb7a8c5237811c12151072312cf12

8 years agoFix Issue dotnet/coreclr#5542 (dotnet/coreclr#5827)
chunseoklee [Fri, 24 Jun 2016 12:56:55 +0000 (21:56 +0900)]
Fix Issue dotnet/coreclr#5542 (dotnet/coreclr#5827)

On arm32, NullReference exception for interface call is not handled
properly. Especially, when callsite is a virtualstub(dispatch/resolve), AV exception
occurs on indirect cell. Since this stub is not a part of
managed or markedjithelper, exception handler considers this is a native
seg fault.
I added :
(1) FaultingExceptionFrame construction routine for virtualstub
(2) Checking and IP-adjusting routine for VirtualStub

Commit migrated from https://github.com/dotnet/coreclr/commit/27e0e1414b7405fa6bb49eecbf97fa1df57fb0b5

8 years agoUse BIT64 define for 64-bit specific code. (dotnet/coreclr#5987)
MyungJoo Ham [Fri, 24 Jun 2016 12:51:53 +0000 (21:51 +0900)]
Use BIT64 define for 64-bit specific code. (dotnet/coreclr#5987)

Using WIN32/WIN64 for 32/64-bit architecture dependent code confuses
developers especially those who develop coreclr for non-Windows
systems. Therefore, such definitions are modified to BIT64.

Fixes dotnet/coreclr#4737

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/99c0410601955552920079a7465c64e725814c2c

8 years agoUpdating External dependencies to beta-24224-00
dotnet-bot [Fri, 24 Jun 2016 05:19:58 +0000 (05:19 +0000)]
Updating External dependencies to beta-24224-00

Commit migrated from https://github.com/dotnet/coreclr/commit/258adaded5651d84d712757cb6b14d89502586ec

8 years agoUpdate CoreCLR & JIT package versions
Eric St. John [Fri, 24 Jun 2016 04:42:15 +0000 (21:42 -0700)]
Update CoreCLR & JIT package versions

Increment these versions to facilitate stable repack of 1.0.2.

Commit migrated from https://github.com/dotnet/coreclr/commit/83931058afb1600034e1aeed1e600cbec9adf2bf

8 years agoMerge pull request dotnet/coreclr#5983 from prajwal-aithal/devel/arm-ci-checked-fix
Jarret Shook [Fri, 24 Jun 2016 03:35:02 +0000 (20:35 -0700)]
Merge pull request dotnet/coreclr#5983 from prajwal-aithal/devel/arm-ci-checked-fix

ARM-CI: Prevent creation of job for Checked configuration (rebased over dotnet/coreclr#5961)

Commit migrated from https://github.com/dotnet/coreclr/commit/3b8b48461a2db92136e87952f8737fb0917107b0

8 years agoMerge pull request dotnet/coreclr#5980 from dotnet-bot/from-tfs
Jan Kotas [Fri, 24 Jun 2016 03:18:16 +0000 (20:18 -0700)]
Merge pull request dotnet/coreclr#5980 from dotnet-bot/from-tfs

Merge changes from TFS

Commit migrated from https://github.com/dotnet/coreclr/commit/690a092fd9d553935f7422197d4df4224677c04a

8 years agoARM-CI: Prevent creation of job for Checked configuration
Prajwal A N [Thu, 23 Jun 2016 07:14:18 +0000 (16:14 +0900)]
ARM-CI: Prevent creation of job for Checked configuration

Previously we checked if the configuration being built is either of Debug or Release
after the job had already been created. This resulted in a job being created for
Checked configuration with no commands to execute (for this job).
We prevent the unnecessary creation of job for the Checked configuration by
returning control at the very beginning of the <LinuxARMEmulator, arm, Checked> iteration

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/bb4009985fb4ee694d9920539301d6b8bed2ead1

8 years agoMerge pull request dotnet/coreclr#5960 from pgavlin/CheckDefPython3
Pat Gavlin [Fri, 24 Jun 2016 02:39:35 +0000 (19:39 -0700)]
Merge pull request dotnet/coreclr#5960 from pgavlin/CheckDefPython3

Make check-definitions compatible with Python 3.

Commit migrated from https://github.com/dotnet/coreclr/commit/36bb7ad45332804709ad93962aa4c79a838e4dd6

8 years agoMerge pull request dotnet/coreclr#5923 from mikedn/x86-store-lclvar
Chris McKinsey [Fri, 24 Jun 2016 02:18:52 +0000 (19:18 -0700)]
Merge pull request dotnet/coreclr#5923 from mikedn/x86-store-lclvar

Fix statement insertion point in GT_STORE_LCL_VAR decomposition

Commit migrated from https://github.com/dotnet/coreclr/commit/b1aa2c187172aa33c5d01eccfa1f23923f3b8e0f

8 years ago[SOS][Linux] Support of reading local variables from portable PDB (dotnet/coreclr...
Evgeny Pavlov [Fri, 24 Jun 2016 02:00:47 +0000 (06:00 +0400)]
[SOS][Linux] Support of reading local variables from portable PDB (dotnet/coreclr#5897)

* Initial support of reading local variables from portable pdb using System.Diagnostics.Debug.SymbolReader.dll

* Use SysAllocString and SysFreeString for memory management

* Fix coding style after review

Commit migrated from https://github.com/dotnet/coreclr/commit/b5ab11484efe588de4b3d25de72a2f49b4a55c2c

8 years agoMerge pull request dotnet/coreclr#5961 from jashook/arm32_ci_ubuntu_cross_fix
Jarret Shook [Fri, 24 Jun 2016 00:46:28 +0000 (17:46 -0700)]
Merge pull request dotnet/coreclr#5961 from jashook/arm32_ci_ubuntu_cross_fix

Seperate the ubuntu-arm build and emulator build

Commit migrated from https://github.com/dotnet/coreclr/commit/9e7fb905a9d14059b12b56cb57aed4c631d6a75a

8 years agoUndo accidental change
Jan Kotas [Thu, 23 Jun 2016 23:52:36 +0000 (16:52 -0700)]
Undo accidental change

[tfs-changeset: 1614521]

Commit migrated from https://github.com/dotnet/coreclr/commit/7f4d9ea84d0c139fceb2ba4a306a1a16157d9db3

8 years agoAdd missing contracts
Jan Kotas [Thu, 23 Jun 2016 23:51:31 +0000 (16:51 -0700)]
Add missing contracts

[tfs-changeset: 1614520]

Commit migrated from https://github.com/dotnet/coreclr/commit/1082b257a94f1493ec83ec91bb745498d5c24ddd

8 years agoSeperate the ubuntu-arm build and emulator build
jashoo [Thu, 23 Jun 2016 17:23:09 +0000 (10:23 -0700)]
Seperate the ubuntu-arm build and emulator build

The name for the arm32 ubuntu cross build and the arm32 emulator build are the same. This
also disables the ubuntu cross build per pr.

Commit migrated from https://github.com/dotnet/coreclr/commit/3a4d5f83f8428a4c257f61c46228329cbceb8e74

8 years agoMerge pull request dotnet/coreclr#5968 from RussKeldorph/jitstress
Russ Keldorph [Thu, 23 Jun 2016 23:39:03 +0000 (16:39 -0700)]
Merge pull request dotnet/coreclr#5968 from RussKeldorph/jitstress

Move R2R JitStress jobs into the jitstress folder with the others.

Commit migrated from https://github.com/dotnet/coreclr/commit/daf0bab5c4059e40a489b0e89a5544afc09dc1cd

8 years agoMerge pull request dotnet/coreclr#5959 from pgavlin/AOTPlaceholderFile
Pat Gavlin [Thu, 23 Jun 2016 23:32:48 +0000 (16:32 -0700)]
Merge pull request dotnet/coreclr#5959 from pgavlin/AOTPlaceholderFile

Add AOT placeholder files to the JIT package.

Commit migrated from https://github.com/dotnet/coreclr/commit/f8a525c1a65ba71de2181ff0b6327ea8d6901584

8 years agoAdd braces to avoid operator priority confusion (dotnet/coreclr#5964)
Jan Kotas [Thu, 23 Jun 2016 21:44:44 +0000 (14:44 -0700)]
Add braces to avoid operator priority confusion (dotnet/coreclr#5964)

Commit migrated from https://github.com/dotnet/coreclr/commit/e0787c6f35d5cf9e440461cc252fe92d0d9bce19

8 years agoSupport for updating a nonStandard arg in-place the ArrayStack when it is modified...
Brian Sullivan [Thu, 23 Jun 2016 21:15:37 +0000 (14:15 -0700)]
Support for updating a nonStandard arg in-place the ArrayStack when it is modified by fgMorphTree

Commit migrated from https://github.com/dotnet/coreclr/commit/082a175b35fab4fe8d92fd5f54d0aba9515cdd0e

8 years agoMerge pull request dotnet/coreclr#5963 from dotnet-bot/from-tfs
Aditya Mandaleeka [Thu, 23 Jun 2016 20:59:35 +0000 (13:59 -0700)]
Merge pull request dotnet/coreclr#5963 from dotnet-bot/from-tfs

Merge changes from TFS

Commit migrated from https://github.com/dotnet/coreclr/commit/930c1d91af7f8138ec5280993cd533fabc000a23

8 years agoAdd AOT placeholder files to the JIT package.
Pat Gavlin [Thu, 23 Jun 2016 16:41:49 +0000 (09:41 -0700)]
Add AOT placeholder files to the JIT package.

This is intended to prevent accidental inclusion in UWP projects.

Commit migrated from https://github.com/dotnet/coreclr/commit/8dacb9571422b67605096bdb0f6782dcfc880639

8 years agoFix GC profiling on arm-softfp (dotnet/coreclr#5952)
Ivan Baravy [Thu, 23 Jun 2016 20:18:06 +0000 (00:18 +0400)]
Fix GC profiling on arm-softfp (dotnet/coreclr#5952)

This commit updates one preprocessor directive inside gc.h to initialize
dwEtwRootKind field of ScanContext when GC_PROFILING is defined while
FEATURE_EVENT_TRACE is not. This happens to platforms like arm-softfp.

Commit migrated from https://github.com/dotnet/coreclr/commit/46d9787d18437733815b3a6fd35df2474cea792d

8 years agoMove R2R JitStress jobs into the jitstress folder with the others.
Russ Keldorph [Thu, 23 Jun 2016 19:28:07 +0000 (12:28 -0700)]
Move R2R JitStress jobs into the jitstress folder with the others.

Commit migrated from https://github.com/dotnet/coreclr/commit/93e0d1a5b6a0dbd3b3695f1dee6927d37f2eed8e

8 years agoMerge pull request dotnet/coreclr#5939 from BruceForstall/FixPinvoke
Bruce Forstall [Thu, 23 Jun 2016 19:32:21 +0000 (12:32 -0700)]
Merge pull request dotnet/coreclr#5939 from BruceForstall/FixPinvoke

Fix RyuJIT/x86 P/Invoke inlining

Commit migrated from https://github.com/dotnet/coreclr/commit/b37ac862ec8274cbcc698dfabaaa493cffdd2858

8 years agoMerge branch 'master' into retbuf-nonstandard
Brian Sullivan [Thu, 23 Jun 2016 18:25:53 +0000 (11:25 -0700)]
Merge branch 'master' into retbuf-nonstandard

Commit migrated from https://github.com/dotnet/coreclr/commit/c09eddd91a7f5c9634ef41b3b10e90617f3ef502

8 years agoFix build break in internal build
Jan Kotas [Thu, 23 Jun 2016 18:13:01 +0000 (11:13 -0700)]
Fix build break in internal build

[tfs-changeset: 1614475]

Commit migrated from https://github.com/dotnet/coreclr/commit/9b8c43f7801269899558fda7248a058175bff68e

8 years agoMerge pull request dotnet/coreclr#5935 from rahku/test
Rahul Kumar [Thu, 23 Jun 2016 18:06:43 +0000 (11:06 -0700)]
Merge pull request dotnet/coreclr#5935 from rahku/test

Fix test runner batch file to provide correct TPA path

Commit migrated from https://github.com/dotnet/coreclr/commit/393760ccd7aeb2473d715e819d2f0f24619641f9

8 years agoMerge pull request dotnet/coreclr#5936 from briansull/fullIntArgRegMask
Brian Sullivan [Thu, 23 Jun 2016 17:37:53 +0000 (10:37 -0700)]
Merge pull request dotnet/coreclr#5936 from briansull/fullIntArgRegMask

Introduce the method fullIntArgRegMask() to replace many uses of RBM_ARG_REGS

Commit migrated from https://github.com/dotnet/coreclr/commit/b2190ababb0552b09845567da7700415ccdfc22d

8 years agoMerge pull request dotnet/coreclr#5937 from ellismg/pass-build-id-flag-to-linker
Matt Ellis [Thu, 23 Jun 2016 17:35:38 +0000 (10:35 -0700)]
Merge pull request dotnet/coreclr#5937 from ellismg/pass-build-id-flag-to-linker

Pass --build-id=sha1 to linker explicitly

Commit migrated from https://github.com/dotnet/coreclr/commit/316fc8e0c0ad848d78025f354893cf18a2b55317

8 years agoMerge pull request dotnet/coreclr#5962 from dotnet/revert-5945-devel/arm-ci-checked-fix
Jarret Shook [Thu, 23 Jun 2016 17:28:50 +0000 (10:28 -0700)]
Merge pull request dotnet/coreclr#5962 from dotnet/revert-5945-devel/arm-ci-checked-fix

Revert "ARM-CI: Prevent creation of job for Checked configuration"

Commit migrated from https://github.com/dotnet/coreclr/commit/907789db331e449e09f092fb28584854f812597a

8 years agoRevert "ARM-CI: Prevent creation of job for Checked configuration"
Jarret Shook [Thu, 23 Jun 2016 17:28:42 +0000 (10:28 -0700)]
Revert "ARM-CI: Prevent creation of job for Checked configuration"

Commit migrated from https://github.com/dotnet/coreclr/commit/3417df606c096de1044633b3645b29e761dbaf5d

8 years agoMake check-definitions compatible with Python 3.
Pat Gavlin [Thu, 23 Jun 2016 17:10:25 +0000 (10:10 -0700)]
Make check-definitions compatible with Python 3.

Import and use the Python 3-compatible print_function from __future__.

Commit migrated from https://github.com/dotnet/coreclr/commit/8fd7bf03cf8301c5081cb9c887eec91a2e33b194

8 years agoEnable RyuJIT/x86 PInvoke lowering
Bruce Forstall [Thu, 12 May 2016 14:31:13 +0000 (07:31 -0700)]
Enable RyuJIT/x86 PInvoke lowering

Fixes dotnet/coreclr#4181 "NYI_X86: Implement PInvoke frame init inlining for x86"

The main work here is to handle the custom calling convention for the
x86 CORINFO_HELP_INIT_PINVOKE_FRAME helper call: it takes EDI as an argument,
trashes only EAX, and returns the TCB in ESI.

The code changes are as follows:
1. Lowering::InsertPInvokeMethodProlog(): don't pass the "secret stub param" for x86.
Also, don't store the InlinedCallFrame.m_pCallSiteSP in the prolog: for x86 this is done
at the call site, due to the floating stack pointer.
2. LinearScan::getKillSetForNode(): for helper calls, call compHelperCallKillSet() to get the killMask,
to account for non-standard kill sets.
3. Morph.cpp::fgMorphArgs(): set non-standard arguments for CORINFO_HELP_INIT_PINVOKE_FRAME.
4. compHelperCallKillSet(): set the correct kill set for CORINFO_HELP_INIT_PINVOKE_FRAME.
5. codegenxarch.cpp::genCallInstruction(): set the ABI return register for CORINFO_HELP_INIT_PINVOKE_FRAME.
6. lowerxarch.cpp::TreeNodeInfoInit(): set the GT_CALL dstCandidates for CORINFO_HELP_INIT_PINVOKE_FRAME.

5 & 6 are both needed to avoid a copy.

With this change, the dotnet/coreclr#1 NYI with 18415 hits over the tests is gone.
The total number of NYI is now 29516.

Commit migrated from https://github.com/dotnet/coreclr/commit/3c7ecfeea45ba11eb59ae5615ddd5d89ea980ea5

8 years agoEnable out-of-proc unwinding on ARM (dotnet/coreclr#5946)
kvochko [Thu, 23 Jun 2016 16:23:20 +0000 (20:23 +0400)]
Enable out-of-proc unwinding on ARM (dotnet/coreclr#5946)

Fix dotnet/coreclr#5855

Commit migrated from https://github.com/dotnet/coreclr/commit/50dd30e88897c8ee213fa76fb55624eead12f382

8 years agoMerge pull request dotnet/coreclr#5890 from adiaaida/x86LongCallFinal
Michelle McDaniel [Thu, 23 Jun 2016 15:14:49 +0000 (08:14 -0700)]
Merge pull request dotnet/coreclr#5890 from adiaaida/x86LongCallFinal

Enable GT_CALL with long ret types for x86 RyuJIT

Commit migrated from https://github.com/dotnet/coreclr/commit/26d4a8c05f6502226c13a3fb257c9b7cf2fea2e8

8 years agoMerge pull request dotnet/coreclr#5945 from prajwal-aithal/devel/arm-ci-checked-fix
Jarret Shook [Thu, 23 Jun 2016 15:05:21 +0000 (08:05 -0700)]
Merge pull request dotnet/coreclr#5945 from prajwal-aithal/devel/arm-ci-checked-fix

ARM-CI: Prevent creation of job for Checked configuration

Commit migrated from https://github.com/dotnet/coreclr/commit/4ba2204b724ba106af8494ed244eb36a76d59e27

8 years agoMerge pull request dotnet/coreclr#5944 from dotnet-bot/UpdateDependencies20160623052003
Gaurav Khanna [Thu, 23 Jun 2016 14:17:56 +0000 (07:17 -0700)]
Merge pull request dotnet/coreclr#5944 from dotnet-bot/UpdateDependencies20160623052003

Updating External dependencies to beta-24223-00

Commit migrated from https://github.com/dotnet/coreclr/commit/0b2cf6f20bd4202d201846abf5a4e2eb4dd5b069

8 years agoScripts: verify compiler definitions of native and managed (dotnet/coreclr#4675)
MyungJoo Ham [Thu, 23 Jun 2016 11:13:46 +0000 (20:13 +0900)]
Scripts: verify compiler definitions of native and managed (dotnet/coreclr#4675)

* Scripts: find out compiler definitions of CMake

In order to find mismatch between native and managed,
we need to know the list of definitions of native.

The copmiler definitions are stored at cmake.definitions

This addresses the complaints of dotnet/coreclr#4674

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
* Scripts: add check-definitions.py

scripts/check-definitions.py checks the consistency between
the native-build (CMake) compiler definitions and
the managed-build (MSBuild/mscorlib) compiler definitions
at build-time and prints out potentially dangerous
inconsistencies.

In order to get the proper results, managed build should
be executed after the native build (build.sh will do so
if no options such as skipnative or skipmanaged are given.)

Fix dotnet/coreclr#4674

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
* Scripts: allow check-definitions py to ignore the harmless

The third argument of check-definitions.py specifies harmless keywords
to be suppressed from emitting warning messages.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
* Scripts: add ignored cdefine keywords for warning

As an example of how to declare compiler definition keywords
that are harmless to be inconsistent between the native and the
managed, we have added FEATURE_IMPLICIT_TLS and FEATURE_HIJACK.

Developers may add more keywords in System.Private.CoreLib.csproj
if the keywords are verified to be harmless; i.e., although
the keywords exist in both cmake and clr.coreclr.props,
the keywords are NEVER used in either side of the sources
or the keywords only happen to have the same name while they
denote the completely different semantics and may be disjoint.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/9ae38ddd84ac77e52f76a04c1c87a17742ba06da

8 years agoARM-CI: Prevent creation of job for Checked configuration
Prajwal A N [Thu, 23 Jun 2016 07:14:18 +0000 (16:14 +0900)]
ARM-CI: Prevent creation of job for Checked configuration

Previously we checked if the configuration being built is either of Debug or Release
after the job had already been created. This resulted in a job being created for
Checked configuration with no commands to execute (for this job).
We prevent the unnecessary creation of job for the Checked configuration by
returning control at the very beginning of the <LinuxARMEmulator, arm, Checked> iteration

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/4dcadad3cfbd2e9a1d9e386e190df027c713bc83

8 years agoMerge pull request dotnet/coreclr#5934 from Maoni0/gcwhere
Maoni Stephens [Thu, 23 Jun 2016 07:07:49 +0000 (00:07 -0700)]
Merge pull request dotnet/coreclr#5934 from Maoni0/gcwhere

enable GCWhere on PAL

Commit migrated from https://github.com/dotnet/coreclr/commit/70ac3533bfd4d4ebce6d834c3656b2d6c5bae941

8 years agoBuild the GC as part of its own CMake target (dotnet/coreclr#5932)
Sean Gillespie [Thu, 23 Jun 2016 06:40:41 +0000 (23:40 -0700)]
Build the GC as part of its own CMake target (dotnet/coreclr#5932)

Commit migrated from https://github.com/dotnet/coreclr/commit/0dbc3f62bd3ce5184cc27884e3239e3deae3cc9a

8 years agoUpdating External dependencies to beta-24223-00
dotnet-bot [Thu, 23 Jun 2016 05:20:03 +0000 (05:20 +0000)]
Updating External dependencies to beta-24223-00

Commit migrated from https://github.com/dotnet/coreclr/commit/bfc4a48d44ccb3911e51d255f9f9bf61c5f49755

8 years agoMerge pull request dotnet/coreclr#5211 from prajwal-aithal/devel/automate-arm-ci
Jarret Shook [Thu, 23 Jun 2016 03:46:08 +0000 (20:46 -0700)]
Merge pull request dotnet/coreclr#5211 from prajwal-aithal/devel/automate-arm-ci

ARM-CI: Make the Linux ARM emulator check automatic

Commit migrated from https://github.com/dotnet/coreclr/commit/63796e5a7ae5076ceb310a2dca89e94e09b5e5f2

8 years agoARM-CI: Make the Linux ARM emulator check automatic
Prajwal A N [Wed, 25 May 2016 10:48:38 +0000 (19:48 +0900)]
ARM-CI: Make the Linux ARM emulator check automatic

* Previously the Linux ARM emulator build had to be triggered manually
* Making this check automatic based on the stability of emulator build

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/e86ea35b030abd01252c3bbf9268875e9dd2d049

8 years agoMerge pull request dotnet/coreclr#5942 from prajwal-aithal/devel/arm-ci-results-fix
Jarret Shook [Thu, 23 Jun 2016 02:49:09 +0000 (19:49 -0700)]
Merge pull request dotnet/coreclr#5942 from prajwal-aithal/devel/arm-ci-results-fix

ARM-CI: Resolving typo in result path

Commit migrated from https://github.com/dotnet/coreclr/commit/2134a6e21a028fb287bea8fa7f88a24754b19e9a

8 years agoARM-CI: Resolving typo in result path
Prajwal A N [Thu, 23 Jun 2016 02:14:10 +0000 (11:14 +0900)]
ARM-CI: Resolving typo in result path

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/855381485ddbe939c06f627a062abcec958f274d

8 years agoMerge pull request dotnet/coreclr#5941 from prajwal-aithal/devel/arm-ci-results-fix
Jarret Shook [Thu, 23 Jun 2016 01:54:49 +0000 (18:54 -0700)]
Merge pull request dotnet/coreclr#5941 from prajwal-aithal/devel/arm-ci-results-fix

ARM-CI: Change result archiving from emulated to cross build

Commit migrated from https://github.com/dotnet/coreclr/commit/2650b5bb353ee0d6b97c49bd8e912355ade19d53

8 years agoARM-CI: Change result archiving from emulated to cross build
Prajwal A N [Thu, 23 Jun 2016 01:16:34 +0000 (10:16 +0900)]
ARM-CI: Change result archiving from emulated to cross build

Previous PR assumed emulated build and thus archived the binaries inside the emulator.
But since cross build produces binaries inside the source folder, change the result path

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/0e87c6c35cb91fd4031b09f553ee30c737f540c2

8 years agoChange the Arm64 fixed return buffer argument to be handled as a non-standard argument
Brian Sullivan [Thu, 23 Jun 2016 00:40:39 +0000 (17:40 -0700)]
Change the Arm64 fixed return buffer argument to be handled as a non-standard argument

We already have support for the handling of non-standard arguments and
it is simpler and better to handle the fixed return buffer argument as a non-standard argument.

Commit migrated from https://github.com/dotnet/coreclr/commit/a16ef2fdc676966d285d8d049d2e403825c4f30b

8 years agoPass --build-id=sha1 to linker explicitly
Matt Ellis [Thu, 23 Jun 2016 00:31:15 +0000 (17:31 -0700)]
Pass --build-id=sha1 to linker explicitly

On some platforms, a build-id was not being added to native artifacts
and we would like it to be present. Explicitly pass --build-id=sha1 to
the linker.

Fixes dotnet/coreclr#5796

Commit migrated from https://github.com/dotnet/coreclr/commit/faeb5bcf9f6b76827b658110b910eda8f0151518

8 years agoIntroduce the method fullIntArgRegMask()
Brian Sullivan [Wed, 22 Jun 2016 21:36:45 +0000 (14:36 -0700)]
Introduce the method fullIntArgRegMask()

This method returns the full integer argument register mask
that also include the fixed return buffer argument register.

Commit migrated from https://github.com/dotnet/coreclr/commit/4e0cd4ed5ad3ca1eb66e6d5f832ef1dcb5790233

8 years agoMerge pull request dotnet/coreclr#5931 from briansull/fix-crossgen-arm64
Brian Sullivan [Thu, 23 Jun 2016 00:27:32 +0000 (17:27 -0700)]
Merge pull request dotnet/coreclr#5931 from briansull/fix-crossgen-arm64

Fix for Arm64 crossgen break

Commit migrated from https://github.com/dotnet/coreclr/commit/387d9fc0a11f317a181f750a8a2ce7b44e9a7df8

8 years agoenable GCWhere on PAL and fixed a bug in 859307b where it's missing a function in...
Maoni0 [Wed, 22 Jun 2016 19:23:11 +0000 (12:23 -0700)]
enable GCWhere on PAL and fixed a bug in 859307b where it's missing a function in Linux

Commit migrated from https://github.com/dotnet/coreclr/commit/550b9c5d355918c6e6ce88366bdf0da99d31579f

8 years agoFix test runner batch file to provide correct TPA path
Rahul Kumar [Thu, 23 Jun 2016 00:14:38 +0000 (17:14 -0700)]
Fix test runner batch file to provide correct TPA path

Commit migrated from https://github.com/dotnet/coreclr/commit/f65ea62a24425dc832e6c0869e2901d768bed7fb

8 years agoMerge pull request dotnet/coreclr#3484 from Dmitry-Me/fixBrokenCondition
Aditya Mandaleeka [Thu, 23 Jun 2016 00:11:12 +0000 (17:11 -0700)]
Merge pull request dotnet/coreclr#3484 from Dmitry-Me/fixBrokenCondition

Fix impossible condition

Commit migrated from https://github.com/dotnet/coreclr/commit/e39a3aeddbac22ceb820c1edc64b634f9e152956

8 years agoMerge pull request dotnet/coreclr#5933 from prajwal-aithal/devel/arm-ci-script-fix
Jarret Shook [Wed, 22 Jun 2016 23:49:49 +0000 (16:49 -0700)]
Merge pull request dotnet/coreclr#5933 from prajwal-aithal/devel/arm-ci-script-fix

ARM-CI: Use CI cross build script in emulator

Commit migrated from https://github.com/dotnet/coreclr/commit/bf325ae4ab002048b5049c3dc4cc4598a79e535c

8 years agoARM-CI: Use CI cross build script in emulator
Prajwal A N [Wed, 22 Jun 2016 23:21:54 +0000 (08:21 +0900)]
ARM-CI: Use CI cross build script in emulator

Previous PRs added the build commands to the groovy script.
But this did not work for various reasons.
The current patch makes the CI system execute the bash script
that does the cross build. The bash script is already supplied with the emulator

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/56fa3e782cb00a1be54ffe8250be009584090018

8 years agoMerge pull request dotnet/coreclr#5929 from BruceForstall/CleanUpPinvokeLowering
Bruce Forstall [Wed, 22 Jun 2016 23:15:41 +0000 (16:15 -0700)]
Merge pull request dotnet/coreclr#5929 from BruceForstall/CleanUpPinvokeLowering

Clean up PInvoke lowering

Commit migrated from https://github.com/dotnet/coreclr/commit/0c7f5b415c2106a5c261c9b918bbd6e736b01ebc

8 years agoFix for Arm64 crossgen break
Brian Sullivan [Wed, 22 Jun 2016 22:48:45 +0000 (15:48 -0700)]
Fix for Arm64 crossgen break

Remorphing a call with an x8 Return buffer arg asserts

Commit migrated from https://github.com/dotnet/coreclr/commit/cacee58795e1a97d8ac1ae77bda1bf1dde1c957e

8 years agoClean up PInvoke lowering
Bruce Forstall [Wed, 22 Jun 2016 21:37:31 +0000 (14:37 -0700)]
Clean up PInvoke lowering

Mostly, add lots of comments.

Commit migrated from https://github.com/dotnet/coreclr/commit/898080b8fc4bd814b3ccb5ce96b1121ad55d0c4c

8 years agoEnable GT_CALL with long ret types for x86 RyuJIT
Michelle McDaniel [Tue, 31 May 2016 15:40:16 +0000 (08:40 -0700)]
Enable GT_CALL with long ret types for x86 RyuJIT

1) Enables genMultiRegCallStoreToLocal for x86 RyuJIT. Forces long return
types to be stored to the stack after returning from a call.

2) Update lvaPromoteLongVars to not promote a long if it is a multi reg
arg or ret.

3) Adds NYI for call arguments that are longs and contain adds or
subtracts. We are currently producing the wrong order of operations so
that we can push the argument immediately after performing the arithmetic.
We will do the hi adc/sbb before the carry bit has been set by doing the
lo operation.

4) Adds an NYI for morphing a node into a call node if the call will have
a long return type.

5) Moves the logic for forcing var = call() for calls with long return
types to lower::DecomposeNode().

Commit migrated from https://github.com/dotnet/coreclr/commit/9237cec8009c478e76c6193a5ea628fc8aaa3bf1

8 years agoAdd regression test
Mike Danes [Wed, 22 Jun 2016 20:59:17 +0000 (23:59 +0300)]
Add regression test

Commit migrated from https://github.com/dotnet/coreclr/commit/58c043d6907f1720b4b2bc2cfd2fe34fd15059b7

8 years agoMerge pull request dotnet/coreclr#5926 from kyulee1/cmpxchg
Kyungwoo Lee [Wed, 22 Jun 2016 20:43:29 +0000 (13:43 -0700)]
Merge pull request dotnet/coreclr#5926 from kyulee1/cmpxchg

ARM64: Skip CompareExchangeTClass Test

Commit migrated from https://github.com/dotnet/coreclr/commit/f521e7099273e2764e5d5c81a3a1c1dea6f8676d

8 years agoMerge pull request dotnet/coreclr#5915 from BruceForstall/FgMorphArgsCleanup
Bruce Forstall [Wed, 22 Jun 2016 20:41:25 +0000 (13:41 -0700)]
Merge pull request dotnet/coreclr#5915 from BruceForstall/FgMorphArgsCleanup

Clean up fgMorphArgs

Commit migrated from https://github.com/dotnet/coreclr/commit/7d3623d1b6dca035999e68c2183e21bbae5d8be7

8 years agoMerge pull request dotnet/coreclr#5891 from rahku/arm64retbuf
Rahul Kumar [Wed, 22 Jun 2016 20:35:13 +0000 (13:35 -0700)]
Merge pull request dotnet/coreclr#5891 from rahku/arm64retbuf

Arm64:return buffer arg should be passed in x8

Commit migrated from https://github.com/dotnet/coreclr/commit/702b73a71b67992bad105c482f5641dfb84893e1

8 years agoMerge pull request dotnet/coreclr#5389 from parjong/fix/issue_5357
Carol Eidt [Wed, 22 Jun 2016 20:09:55 +0000 (13:09 -0700)]
Merge pull request dotnet/coreclr#5389 from parjong/fix/issue_5357

Run fgMorphCopyBlock for newly inserted assignment

Commit migrated from https://github.com/dotnet/coreclr/commit/063faa3cd5505ef2168ad9571921588d616d6925

8 years agoMerge pull request dotnet/coreclr#5871 from mikedn/modopt
Carol Eidt [Wed, 22 Jun 2016 20:02:32 +0000 (13:02 -0700)]
Merge pull request dotnet/coreclr#5871 from mikedn/modopt

Improve div/mod by const power of 2

Commit migrated from https://github.com/dotnet/coreclr/commit/3dfe85f3573c12f07495483930beff5a6dbf5e3b

8 years agoMerge pull request dotnet/coreclr#5925 from RussKeldorph/j32_issues
Aditya Mandaleeka [Wed, 22 Jun 2016 19:49:30 +0000 (12:49 -0700)]
Merge pull request dotnet/coreclr#5925 from RussKeldorph/j32_issues

Fix syntax error in x86_jit32_issues.targets

Commit migrated from https://github.com/dotnet/coreclr/commit/8c090bcf954b8ee382f42e8e1767bf99433f2088

8 years agoMerge pull request dotnet/coreclr#5904 from pgavlin/WalkTreePostExecutionOrder
Pat Gavlin [Wed, 22 Jun 2016 18:27:09 +0000 (11:27 -0700)]
Merge pull request dotnet/coreclr#5904 from pgavlin/WalkTreePostExecutionOrder

Obey GTF_REVERSE_OPS in fgWalkTreePost.

Commit migrated from https://github.com/dotnet/coreclr/commit/8ae408fde25abe91219003dd02c70a6f78cc6fc2

8 years agoARM64: Skip CompareExchangeTClass Test
Kyungwoo Lee [Wed, 22 Jun 2016 18:19:24 +0000 (11:19 -0700)]
ARM64: Skip CompareExchangeTClass Test

This test seems to fail often in CI. Disable it for now.

Commit migrated from https://github.com/dotnet/coreclr/commit/d11bc58e1aec026301cbd1c30f0feb25cf24d66f

8 years agoMerge pull request dotnet/coreclr#5905 from sejongoh/group_jitstress_jobs
Sejong Oh [Wed, 22 Jun 2016 18:12:38 +0000 (11:12 -0700)]
Merge pull request dotnet/coreclr#5905 from sejongoh/group_jitstress_jobs

Move all JIT stress jobs into a sub directory on CI

Commit migrated from https://github.com/dotnet/coreclr/commit/f93114dceffe68d24f7c3be34c54665bd340281b

8 years agoFix syntax error in x86_jit32_issues.targets
Russ Keldorph [Wed, 22 Jun 2016 18:09:12 +0000 (11:09 -0700)]
Fix syntax error in x86_jit32_issues.targets

Commit migrated from https://github.com/dotnet/coreclr/commit/374d74b7b8ec5364d67263404f30147714e321e3

8 years agoMerge pull request dotnet/coreclr#5924 from wtgodbe/groovalicious
William Godbe [Wed, 22 Jun 2016 17:46:46 +0000 (10:46 -0700)]
Merge pull request dotnet/coreclr#5924 from wtgodbe/groovalicious

Run all tests under server GC during code coverage job

Commit migrated from https://github.com/dotnet/coreclr/commit/137ec1f61882062ef9ebfcdf83fdcaccf2db1a69

8 years agoRun all tests under server GC
wtgodbe [Wed, 22 Jun 2016 17:43:55 +0000 (10:43 -0700)]
Run all tests under server GC

Commit migrated from https://github.com/dotnet/coreclr/commit/f877851fb6a5da8c45a88a282dad67c018ccd4d0

8 years agoMerge pull request dotnet/coreclr#5921 from JohnChen0/master
John Chen [Wed, 22 Jun 2016 17:43:23 +0000 (10:43 -0700)]
Merge pull request dotnet/coreclr#5921 from JohnChen0/master

Disable a test case till issue dotnet/coreclr#5501 is fixed

Commit migrated from https://github.com/dotnet/coreclr/commit/9edcc2aba269a8b91aec3f93fa95b6139a62af87

8 years ago[SOS] [Linux] Fix incorrect symbol loading from portable pdb (dotnet/coreclr#5896)
Evgeny Pavlov [Wed, 22 Jun 2016 16:56:51 +0000 (20:56 +0400)]
[SOS] [Linux] Fix incorrect symbol loading from portable pdb (dotnet/coreclr#5896)

* Fix incorrect symbol loading from portable pdb

* Change return value to S_OK

Commit migrated from https://github.com/dotnet/coreclr/commit/c95923e1ff48b767cedac760d43be6db89b8bcbe

8 years agoGenerate symbols packages for Windows CoreCLR binaries. (dotnet/coreclr#5902)
Mike McLaughlin [Wed, 22 Jun 2016 16:55:33 +0000 (09:55 -0700)]
Generate symbols packages for Windows CoreCLR binaries. (dotnet/coreclr#5902)

* Generate symbols packages for Windows CoreCLR binaries.

Issue dotnet/coreclr#5832.

* Add dll/exe back to symbol package.

Commit migrated from https://github.com/dotnet/coreclr/commit/f7c5984143a181b8be0cf9268d0bd40925789e9b

8 years agoFix statement insertion point in GT_STORE_LCL_VAR decomposition
Mike Danes [Wed, 22 Jun 2016 16:44:34 +0000 (19:44 +0300)]
Fix statement insertion point in GT_STORE_LCL_VAR decomposition

In some cases a newly created statement is inserted between the current statement and its embedded statements instead of being inserted after the current statement and its embedded statements.

Commit migrated from https://github.com/dotnet/coreclr/commit/b193390eca99368683835efdecb1f382b1443af3

8 years agoDisable a test case till issue dotnet/coreclr#5501 is fixed
John Chen [Wed, 22 Jun 2016 16:12:44 +0000 (09:12 -0700)]
Disable a test case till issue dotnet/coreclr#5501 is fixed

Commit migrated from https://github.com/dotnet/coreclr/commit/c9258739d99be31c50da632a4c4b1f75bd1ffbce

8 years agoOptimize integer div/mod by const power of 2 in lowering
Mike Danes [Mon, 9 May 2016 22:01:12 +0000 (01:01 +0300)]
Optimize integer div/mod by const power of 2 in lowering

Optimizing GT_DIV/GT_UDIV/GT_MOD/GT_UMOD by power of 2 in codegen is problematic because the xarch DIV instruction has special register requirements. By the time codegen decides to perform the optimization the rax and rdx registers have been already allocated by LSRA even though they're not always needed (as it happens in the case of unsigned division where CDQ isn't used).

Since the JIT can't represent a CDQ instruction in its IR an arithmetic shift (GT_RSH) has been instead to extract the dividend sign. xarch's SAR is larger than CDQ but it has the advantage that it doesn't require specific registers. Also, arithmetic shifts are available on architectures other than xarch.

Example: method "static int foo(int x) => x / 8;" is now compiled to
mov      eax, ecx
mov      edx, eax
sar      edx, 31
and      edx, 7
add      edx, eax
mov      eax, edx
sar      eax, 3

instead of
mov      eax, ecx
cdq
and      edx, 7
add      eax, edx
sar      eax, 3

As a side-effect of this change the optimization now also works when the divisor is too large to be contained. Previously this wasn't possible because the divisor constant needed to be modified during codegen but the constant was already loaded into a register.

Example: method "static ulong foo(ulong x) => x / 4294967296;" is now compiled to
mov      rax, rcx
shr      rax, 32

whereas before a DIV instruction was used.

This change also fixes an issue in fgShouldUseMagicNumberDivide. The optimization that is done in lower can handle negative power of 2 divisors but fgShouldUseMagicNumberDivide handled those cases because it didn't check the absolute value of the divisor.

Example: method "static int foo(int x) => return x / -2;" is now compiled to

mov      eax, ecx
mov      edx, eax
shr      edx, 31
add      edx, eax
sar      edx, 1
mov      eax, edx
neg      eax

instead of
mov      eax, 0x7FFFFFFF
imul     edx:eax, ecx
mov      eax, edx
sub      eax, ecx
mov      edx, eax
shr      edx, 31
add      eax, edx

Commit migrated from https://github.com/dotnet/coreclr/commit/babfca85887cc455ece64766c4614d494a3419b8

8 years agoAdd tests for integer div/mod by const
Mike Danes [Sat, 14 Nov 2015 08:46:20 +0000 (10:46 +0200)]
Add tests for integer div/mod by const

Commit migrated from https://github.com/dotnet/coreclr/commit/4286b4006c3c671d9d9cc1b6979498275b526775

8 years agoClean up fgMorphArgs
Bruce Forstall [Wed, 22 Jun 2016 06:25:52 +0000 (23:25 -0700)]
Clean up fgMorphArgs

Simplify a lot of the coding, especially related to non-standard arg and SysV struct arg handling.

Commit migrated from https://github.com/dotnet/coreclr/commit/7952dcf4e5ebe4b93377f192b806da815fa4d7da

8 years agofix build break on ARM caused by f1889 (dotnet/coreclr#5914)
chunseoklee [Wed, 22 Jun 2016 15:12:58 +0000 (00:12 +0900)]
fix build break on ARM caused by f1889 (dotnet/coreclr#5914)

Commit migrated from https://github.com/dotnet/coreclr/commit/5783a073e46b355f2829d4c9a9c0f76dba7d8086