platform/upstream/dotnet/runtime.git
7 years agoFix VN propagation for binops.
Pat Gavlin [Fri, 4 Nov 2016 22:34:24 +0000 (15:34 -0700)]
Fix VN propagation for binops.

When value numbering processes certain binary operators, it may attempt
to propagate the value number of one operand to the operator itself.
Unfortunately, this propagation was done irrespective of the type of the
operand, and therefore produced incorrect results when the type of the
operand did not match the type of the operator. This change only
performs this sort of propagation only when the types of the operator
and the operand agree.

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

7 years agoMerge pull request dotnet/coreclr#7996 from JosephTremoulet/OptRepeat
Joseph Tremoulet [Fri, 4 Nov 2016 21:54:51 +0000 (17:54 -0400)]
Merge pull request dotnet/coreclr#7996 from JosephTremoulet/OptRepeat

Add JitOptRepeat debug config flags

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

7 years agomake the returning of DTFI & NFI in CultureInfo atomic (dotnet/coreclr#7998)
Tarek Mahmoud Sayed [Fri, 4 Nov 2016 20:15:17 +0000 (13:15 -0700)]
make the returning of DTFI & NFI in CultureInfo atomic (dotnet/coreclr#7998)

we got some cases when more than one thread trying to get DTFI or NFI from the shared current culture object which can result returning different instances.
Although the returning object contents will be exactly but it'll be better to return same instance as apps may assume that. also returning the same instance will help reduce reinitializing more deeper fields when get requested.

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

7 years agoMerge pull request dotnet/coreclr#7911 from JosephTremoulet/CloneExprsForUnroll
Joseph Tremoulet [Fri, 4 Nov 2016 19:11:57 +0000 (15:11 -0400)]
Merge pull request dotnet/coreclr#7911 from JosephTremoulet/CloneExprsForUnroll

Clone exprs for unroll

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

7 years agoAdd unroller support to CloneBlockState
Joseph Tremoulet [Fri, 14 Oct 2016 17:57:38 +0000 (13:57 -0400)]
Add unroller support to CloneBlockState

This helper is used by the loop cloner to copy a block's attributes and
statements.  Expand it so it can also be used by the loop unroller:
 - Accept var/val parameters to pass through to `gtCloneExpr` to
   perform in-place substitutions
 - When presented with an expression that `gtCloneExpr` can't clone,
   return false rather than dereferencing null

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

7 years agoClear *_ASG_LHS flags in ResetOptAnnotations
Joseph Tremoulet [Wed, 26 Oct 2016 21:01:57 +0000 (17:01 -0400)]
Clear *_ASG_LHS flags in ResetOptAnnotations

This works around an apparent bug in SSA construction (GitHub issue dotnet/coreclr#7846),
specifically `fgPerNodeLocalVarLiveness`, where heap uses are not
considered upwards-exposed if they follow a heap def in their block (which
is incorrect because the store and load are not necessarily must-alias).
In the non-repeat configuration, these flags are always cleared coming
into SSA construction, because `TreeRenameVariables` is the only thing
that sets them.

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

7 years agoReset EH pred cache in ResetOptAnnotations
Joseph Tremoulet [Fri, 30 Sep 2016 19:14:10 +0000 (15:14 -0400)]
Reset EH pred cache in ResetOptAnnotations

The cache created in the first iteration may not be correct in the second.
It seems there is a more general problem with failure to invalidate this
cache (GitHub issue dotnet/coreclr#7844), that this change is working around for the
optRepeat case.

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

7 years agoAdd JitOptRepeat debug config flags
Joseph Tremoulet [Wed, 28 Sep 2016 16:57:01 +0000 (12:57 -0400)]
Add JitOptRepeat debug config flags

Add flag JitOptRepeat that specifies a set of methods on which to
iteratively perform global optimizations multiple times, and flag
JitOptRepeatCount to set the number of iterations (default 2) to apply
when JitOptRepeat kicks in.

These flags are debug-only; they are intended to facilitate performing
experiments investigating optimization opportunities missed due to phase
ordering issues.

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

7 years agoClear defnums and post-order nums in fgResetForSsa
Joseph Tremoulet [Thu, 3 Nov 2016 15:50:05 +0000 (11:50 -0400)]
Clear defnums and post-order nums in fgResetForSsa

SSA construction will overwrite these annotations, but only for reachable
code.  Clear the annotations in all code in `fgResetForSsa` so that
downstream analysis won't stumble over stale/invalid SSA annotations
in unreachable code.

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

7 years agoClear heap PerSsaData, heapSsaMap in fgResetForSsa
Joseph Tremoulet [Fri, 30 Sep 2016 19:18:55 +0000 (15:18 -0400)]
Clear heap PerSsaData, heapSsaMap in fgResetForSsa

These need to be cleared for the same reasons as the locals' PerSsaData;
their omission seems to be a simple oversight.

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

7 years agoMerge pull request dotnet/coreclr#7983 from pgavlin/VSO284785
Pat Gavlin [Fri, 4 Nov 2016 18:20:55 +0000 (11:20 -0700)]
Merge pull request dotnet/coreclr#7983 from pgavlin/VSO284785

Fix int->long cast folding for 32-bit platforms.

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

7 years agoAvoid clobbering FldSeq annotations in cloneExpr
Joseph Tremoulet [Wed, 19 Oct 2016 22:14:24 +0000 (18:14 -0400)]
Avoid clobbering FldSeq annotations in cloneExpr

The overload of cloneExpr that takes a variable number and value to
perform replacements is intended to be used by the loop unroller, which
runs between Morph (where FldSeq annotations are generated) and value
numbering (where FldSeq annotations are consumed).  Update that codepath
to call `LabelIndex` when replacing a `GTF_VAR_ARR_INDEX` node, and to
avoid calling `gtFoldExpr` (which does not preserve these annotations).
Downstream constant folding should be capable of doing that optimization.

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

7 years agoDo not replace assign LHS in gtCloneExpr
Joseph Tremoulet [Fri, 14 Oct 2016 17:34:45 +0000 (13:34 -0400)]
Do not replace assign LHS in gtCloneExpr

Split the var/val parameters into two sets -- one for the current level of
recursion, the other for deeper levels.  Use this to suppress one level of
replacement when recursing to the LHS of an assign.  This both avoids
creating nonsensical assign-to-immediate trees and allows replacing uses
of the given var while leaving defs in the code.

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

7 years agoJit: fix regression in non-AVX SIMD codegen (dotnet/coreclr#7989)
Andy Ayers [Fri, 4 Nov 2016 04:28:16 +0000 (21:28 -0700)]
Jit: fix regression in non-AVX SIMD codegen (dotnet/coreclr#7989)

Vector codegen for dot product was inadvertenly altered in non-DEBUG
builds.

Closes dotnet/coreclr#7977.

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

7 years agoAdd the serialization ctor for CryptographicException to model.xml (dotnet/coreclr...
Alex Ghiondea [Fri, 4 Nov 2016 04:28:01 +0000 (21:28 -0700)]
Add the serialization ctor for CryptographicException to model.xml (dotnet/coreclr#7974)

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

7 years agoFix check for float args under windows x64 remorph
Joseph Tremoulet [Wed, 2 Nov 2016 15:46:06 +0000 (11:46 -0400)]
Fix check for float args under windows x64 remorph

When re-morphing, `argx` will not have the argument's type if the argument
has been moved to the late args list, so check the arg table entry
instead.  The unix x64 codepath already had the correct code, so just
remove the ifdef.

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

7 years agoClear GTF_VAR_USEDEF when folding <op>= forms
Joseph Tremoulet [Thu, 3 Nov 2016 18:51:17 +0000 (14:51 -0400)]
Clear GTF_VAR_USEDEF when folding <op>= forms

The `GTF_VAR_USEDEF` flag is applied to the def of an expression like "x =
x + y".  The `GTF_VAR_USEASG` flag is applied to the op1 of an expression
like "x += y".  Update the code to clear the `GTF_VAR_USEDEF` flag (in
addition to setting the `GTF_VAR_USEASG` flag) when folding the former to
the latter.

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

7 years agoMerge pull request dotnet/coreclr#7991 from dotnet/revert-7946-armci_crashed
Jan Kotas [Fri, 4 Nov 2016 03:35:50 +0000 (20:35 -0700)]
Merge pull request dotnet/coreclr#7991 from dotnet/revert-7946-armci_crashed

Revert "ARM-CI : Use archived root-fs and run tests with --sequential option"

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

7 years agoRevert "ARM-CI : Use archived root-fs and run tests with --sequential option"
Jan Kotas [Fri, 4 Nov 2016 03:35:35 +0000 (20:35 -0700)]
Revert "ARM-CI : Use archived root-fs and run tests with --sequential option"

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

7 years agoDo not use FP registers when soft-fp ABI is used (dotnet/coreclr#7869)
Jonghyun Park [Fri, 4 Nov 2016 02:43:24 +0000 (11:43 +0900)]
Do not use FP registers when soft-fp ABI is used (dotnet/coreclr#7869)

Soft FP ABI enforces a return value to be passed via integer registers
even though it is of float/double type (which means that 'r0 ~ r4' should
be preseved even for functions that return a float/double value).

The current implementation of 'ArgIteratorTemplate<ARGITERATOR_BASE>::ComputeReturnFlags()' does
not consider this ABI difference, which makes 'CallDescrWorkerInternal'
function to preserve FP registers instead of 'r0 ~ r4' (and spoils
'r0/r1' during preservation), which leads to dotnet/coreclr#7868.

This commit revises this function in order to fix dotnet/coreclr#7868.

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

7 years agoARM-CI : Use archived root-fs and run tests with --sequential option (dotnet/coreclr...
Sujin Kim [Fri, 4 Nov 2016 02:31:30 +0000 (11:31 +0900)]
ARM-CI : Use archived root-fs and run tests with --sequential option (dotnet/coreclr#7946)

* ARM-CI : Use archived root-fs and run tests with --sequential option

To make sure the reason of test failure ramdomly( dotnet/coreclr#6298 ),
We checked segmentation faults occurred from mounted rootfs and the multi thread processing.

So I changed root-fs to archived root-fs and run tests with --sequential option.

* change to original clang version

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

7 years agoFix JIT build host/target confusion (dotnet/coreclr#7979)
Bruce Forstall [Fri, 4 Nov 2016 00:58:29 +0000 (17:58 -0700)]
Fix JIT build host/target confusion (dotnet/coreclr#7979)

Also, add RyuJIT to Windows ARM32 cross components build (as protojit.dll).

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

7 years agoMerge pull request dotnet/coreclr#7978 from AlexGhiondea/RemoveSecureStringMarshal
Jan Kotas [Fri, 4 Nov 2016 00:57:48 +0000 (17:57 -0700)]
Merge pull request dotnet/coreclr#7978 from AlexGhiondea/RemoveSecureStringMarshal

The SecureStringMarshal type was an artifact of the layering we had i…

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

7 years agoMerge pull request dotnet/coreclr#7982 from dotnet/revert-7677-StructOpts
Jan Kotas [Fri, 4 Nov 2016 00:12:04 +0000 (17:12 -0700)]
Merge pull request dotnet/coreclr#7982 from dotnet/revert-7677-StructOpts

Revert "Enable optimization of structs"

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

7 years agoMerge pull request dotnet/coreclr#7972 from adiaaida/storeShiftRotate32
Michelle McDaniel [Thu, 3 Nov 2016 23:38:26 +0000 (16:38 -0700)]
Merge pull request dotnet/coreclr#7972 from adiaaida/storeShiftRotate32

Force store of lcl var for shift/rotate by 32

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

7 years agoMerge pull request dotnet/coreclr#7965 from ramarag/GetType
Rama krishnan Raghupathy [Thu, 3 Nov 2016 23:02:20 +0000 (16:02 -0700)]
Merge pull request dotnet/coreclr#7965 from ramarag/GetType

Enabling Type.Getype with overloads for assembly and type resolvers

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

7 years agoMerge pull request dotnet/coreclr#7945 from ramarag/MemoryFailPoint
Rama krishnan Raghupathy [Thu, 3 Nov 2016 23:02:03 +0000 (16:02 -0700)]
Merge pull request dotnet/coreclr#7945 from ramarag/MemoryFailPoint

Disabling checks in MemoryFailPoint for Xplat

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

7 years agoRevert "Enable optimization of structs"
Jan Kotas [Thu, 3 Nov 2016 22:33:08 +0000 (15:33 -0700)]
Revert "Enable optimization of structs"

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

7 years agoFix int->long cast folding for 32-bit platforms.
Pat Gavlin [Thu, 3 Nov 2016 22:00:16 +0000 (15:00 -0700)]
Fix int->long cast folding for 32-bit platforms.

The RyuJIT frontend does not allow for the folding of an int->long cast
that is known to overflow into a throw outside of global morph. The
folding, however, was unconditionally changing the operand to the cast
from an integer constant to a long constant, which can change the
behavior of the cast. This rewrite is not necessary, so this change
simply removes it.

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

7 years agoEnabling Type.GetType with overloads for assembly and type resolvers
Rama Krishnan Raghupathy [Thu, 3 Nov 2016 19:05:56 +0000 (12:05 -0700)]
Enabling Type.GetType with overloads for assembly and type resolvers

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

7 years agoThe SecureStringMarshal type was an artifact of the layering we had in CoreFx.
Alex Ghiondea [Thu, 3 Nov 2016 21:09:32 +0000 (14:09 -0700)]
The SecureStringMarshal type was an artifact of the layering we had in CoreFx.

This type should not have been added to CoreCLR as part of the SecureString move.

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

7 years agoForce store of lcl var for shift/rotate by 32
Michelle McDaniel [Thu, 3 Nov 2016 16:13:06 +0000 (09:13 -0700)]
Force store of lcl var for shift/rotate by 32

In the shift/rotate by 32 case, we move the lo op into the high op. In the
shift case, we set the lo op to 0, in the rotate case, we are swapping lo
and hi, so we also move hi into lo. In the instance that we are reusing
the same lclvars, we need to explicitly store the ops that we are moving
so that we don't overwrite the vars before using them. This change
explicitly replaces the uses of the ops with lclvars so we don't overwrite
vars before finishing the swap.

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

7 years agoMerge pull request dotnet/coreclr#7908 from sandreenko/fix_tail_call_in_R2R
sandreenko [Thu, 3 Nov 2016 20:58:25 +0000 (13:58 -0700)]
Merge pull request dotnet/coreclr#7908 from sandreenko/fix_tail_call_in_R2R

Correct pattern check for tail calls

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

7 years agoFix a issue where ETW was losing RCW and CCW in heap dumps. (dotnet/coreclr#7971)
Vance Morrison [Thu, 3 Nov 2016 20:37:53 +0000 (13:37 -0700)]
Fix a issue where ETW was losing RCW and CCW in heap dumps. (dotnet/coreclr#7971)

Basically our builk events for RCWs and CCWs were too big, causing ETW to reject them, and thus losing information.

However you have to have at least several hundred befor you have enough to force the problem.

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

7 years agoMerge pull request dotnet/coreclr#7958 from pgavlin/VSO280123
Pat Gavlin [Thu, 3 Nov 2016 19:09:50 +0000 (12:09 -0700)]
Merge pull request dotnet/coreclr#7958 from pgavlin/VSO280123

Make a few VN methods tolerant of NoVN.

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

7 years agoMake CrossGen documentation up to date (dotnet/coreclr#7973)
John Chen [Thu, 3 Nov 2016 18:59:40 +0000 (11:59 -0700)]
Make CrossGen documentation up to date (dotnet/coreclr#7973)

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

7 years agoCorrect pattern check
Sergey Andreenko [Mon, 31 Oct 2016 19:31:10 +0000 (12:31 -0700)]
Correct pattern check

sequense
localVariable = cast.int(call.small_type());
return localVaribale
is correct tail call pattern.

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

7 years agoMerge pull request dotnet/coreclr#7956 from pgavlin/VSO280110
Pat Gavlin [Thu, 3 Nov 2016 17:35:28 +0000 (10:35 -0700)]
Merge pull request dotnet/coreclr#7956 from pgavlin/VSO280110

Properly update block flags during branch opt.

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

7 years agoFormat code.
Pat Gavlin [Thu, 3 Nov 2016 17:35:05 +0000 (10:35 -0700)]
Format code.

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

7 years agoMerge pull request dotnet/coreclr#7959 from pgavlin/VSO280116
Pat Gavlin [Thu, 3 Nov 2016 17:29:57 +0000 (10:29 -0700)]
Merge pull request dotnet/coreclr#7959 from pgavlin/VSO280116

Fix an assert condition in lowering.

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

7 years agoFormat code.
Pat Gavlin [Thu, 3 Nov 2016 17:29:32 +0000 (10:29 -0700)]
Format code.

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

7 years agoMerge pull request dotnet/coreclr#7968 from AndyAyersMS/CaptureNewObservations
Andy Ayers [Thu, 3 Nov 2016 17:11:25 +0000 (10:11 -0700)]
Merge pull request dotnet/coreclr#7968 from AndyAyersMS/CaptureNewObservations

Inliner: capture new observations

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

7 years agoMark NonRandomizedStringEqualityComparer as serializable (dotnet/coreclr#7966)
Stephen Toub [Thu, 3 Nov 2016 10:06:36 +0000 (06:06 -0400)]
Mark NonRandomizedStringEqualityComparer as serializable (dotnet/coreclr#7966)

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

7 years agoInliner: capture new observations
Andy Ayers [Tue, 1 Nov 2016 23:22:10 +0000 (16:22 -0700)]
Inliner: capture new observations

Rebase the DiscretionaryPolicy on the EnhancedLegacyPolicy, and
capture and report some of the new observations that have been added
recently.

This change adds a new HAS_GC_STRUCT observation in addition to the
more specific RARE_GC_STRUCT, so that the DiscretionaryPolicy can
be notified of GC struct locals and temps for all candidates, not
just ones invoked from rare call sites.

No changes in codegen.

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

7 years agoRevises 'JitTimer::PrintCsvHeader' to use 'append' mode (dotnet/coreclr#7073)
Jonghyun Park [Thu, 3 Nov 2016 02:46:19 +0000 (11:46 +0900)]
Revises 'JitTimer::PrintCsvHeader' to use 'append' mode (dotnet/coreclr#7073)

* Revises 'JitTimer::PrintCsvHeader' to use 'append' mode

The current implementation of 'JitTimer::PrintCsvHeader' opens a CSV
file with 'read' mode and re-opens it with 'write' mode if it is absent.

The current implementation has two problems:
First, "read" file pointer will be closed even if it is null,
which is reported in dotnet/coreclr#7072.
Second, "write" file pointer will be leaked as there is no corresponding
fclose.

This commit rewrites 'JitTimer::PrintCsvHeader' to fix dotnet/coreclr#7072.

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

7 years agoParseNumber & related more efficient (dotnet/coreclr#3163)
varocarbas [Thu, 3 Nov 2016 02:33:46 +0000 (03:33 +0100)]
ParseNumber & related more efficient (dotnet/coreclr#3163)

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

7 years agoMerge pull request dotnet/coreclr#7936 from vancem/EventSourceDisposeRace.11-01-16
David Mason [Thu, 3 Nov 2016 02:23:18 +0000 (19:23 -0700)]
Merge pull request dotnet/coreclr#7936 from vancem/EventSourceDisposeRace.11-01-16

Fix Deadlock associated with ETW commands happening during dispose.

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

7 years agoFix race condition (dotnet/coreclr#7928)
Dmitry-Me [Thu, 3 Nov 2016 01:38:49 +0000 (04:38 +0300)]
Fix race condition (dotnet/coreclr#7928)

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

7 years agoSuppress SOS.NETCore.dll error msg in release mode (dotnet/coreclr#6975)
chunseoklee [Wed, 2 Nov 2016 22:18:53 +0000 (07:18 +0900)]
Suppress SOS.NETCore.dll error msg in release mode (dotnet/coreclr#6975)

Suppress error msg when running coreclr without
SOS.NETCore.dll in release mode

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

7 years agoFix an assert condition in lowering.
Pat Gavlin [Wed, 2 Nov 2016 21:52:58 +0000 (14:52 -0700)]
Fix an assert condition in lowering.

Tail calls via the tail call helper must live in GC-safe blocks. A block
is GC-safe if either it or all of its dominators are also GC-safe. If we
are not optimizing, we will not compute dominators, and will therfore
not mark blocks whose dominators are all GC-safe. When deciding whether
or not we need to make a block GC-safe during tail call morphing,
however, we allow a tail call in an unmarked block iff the entry block
is GC-safe, as the entry block trivially dominates every reachable
block. This change fixes an assert that was not allowing for a tail call
in a block that is not marked GC-safe where the entry block is marked
GC-safe.

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

7 years agoSet pRetVal as NULL on error inside 'VIRTUALCommitMemory' (dotnet/coreclr#7920)
Jonghyun Park [Wed, 2 Nov 2016 21:44:24 +0000 (06:44 +0900)]
Set pRetVal as NULL on error inside 'VIRTUALCommitMemory' (dotnet/coreclr#7920)

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

7 years agoMerge pull request dotnet/coreclr#7917 from pgavlin/VSO280120
Pat Gavlin [Wed, 2 Nov 2016 21:23:09 +0000 (14:23 -0700)]
Merge pull request dotnet/coreclr#7917 from pgavlin/VSO280120

Fix VSO280120.

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

7 years agoMake a few VN methods tolerant of NoVN.
Pat Gavlin [Wed, 2 Nov 2016 21:08:41 +0000 (14:08 -0700)]
Make a few VN methods tolerant of NoVN.

There were a few methods on the VN store that were not resilient to
being provided with the "no value number" sentinel value. This lack of
resilience caused assertion failures during assertion propagation when
generating assertions for trees marked with "no value number".

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

7 years agoProperly update block flags during branch opt.
Pat Gavlin [Wed, 2 Nov 2016 19:39:40 +0000 (12:39 -0700)]
Properly update block flags during branch opt.

`fgOptimizeBranch` was updating the flags for the predecessor block
using the flags from the wrong destination block. This was causing an
assert in `AllocateObjects` when verifying that all blocks that contain
`allocObj` nodes are properly marked with `BBF_HAS_NEWOBJ`.

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

7 years agoFix VSO280120.
Pat Gavlin [Mon, 31 Oct 2016 22:32:29 +0000 (15:32 -0700)]
Fix VSO280120.

st.lclFld decomposition was splitting a st.lclFld into two of the same
without bumping the destination var's ref count.

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

7 years agoCheck pointer before dereferencing it (dotnet/coreclr#7930)
Dmitry-Me [Wed, 2 Nov 2016 17:42:41 +0000 (20:42 +0300)]
Check pointer before dereferencing it (dotnet/coreclr#7930)

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

7 years agoMerge pull request dotnet/coreclr#7953 from dotnet-bot/from-tfs
Jan Kotas [Wed, 2 Nov 2016 16:54:14 +0000 (09:54 -0700)]
Merge pull request dotnet/coreclr#7953 from dotnet-bot/from-tfs

Merge changes from TFS

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

7 years agoMerge pull request dotnet/coreclr#7943 from sivarv/rotateFix
Sivarv [Wed, 2 Nov 2016 15:01:42 +0000 (08:01 -0700)]
Merge pull request dotnet/coreclr#7943 from sivarv/rotateFix

Exclude GT_ROL/ROR from ==/!= 0 compare peep optimization

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

7 years agoSpecify .NETCoreApp,Version=v1.1 for test projects (dotnet/coreclr#7937)
Davis Goodin [Wed, 2 Nov 2016 14:37:33 +0000 (09:37 -0500)]
Specify .NETCoreApp,Version=v1.1 for test projects (dotnet/coreclr#7937)

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

7 years agoFix build break
Jan Kotas [Wed, 2 Nov 2016 14:35:30 +0000 (07:35 -0700)]
Fix build break

[tfs-changeset: 1636334]

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

7 years agoMerge pull request dotnet/coreclr#7951 from jkotas/revert-correct-parameter-names
Jan Kotas [Wed, 2 Nov 2016 14:08:50 +0000 (07:08 -0700)]
Merge pull request dotnet/coreclr#7951 from jkotas/revert-correct-parameter-names

Revert "Correct parameter names."

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

7 years agoRevert "Correct parameter names."
Jan Kotas [Wed, 2 Nov 2016 14:06:30 +0000 (07:06 -0700)]
Revert "Correct parameter names."

This reverts commit dotnet/coreclr@0cae769f3c60bf2a696d02a88527a46d5b211cd5.

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

7 years agoMerge pull request dotnet/coreclr#7950 from jkotas/revert-parameter-name-changes
Jan Kotas [Wed, 2 Nov 2016 13:55:43 +0000 (06:55 -0700)]
Merge pull request dotnet/coreclr#7950 from jkotas/revert-parameter-name-changes

Revert "Correct parameter names."

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

7 years agoRevert "Correct parameter names."
Jan Kotas [Wed, 2 Nov 2016 13:53:53 +0000 (06:53 -0700)]
Revert "Correct parameter names."

This reverts commit dotnet/coreclr@a212082aa4cea8529b4c78844e2a7408ff6f7969.

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

7 years ago[ARM] Implement BitPosition with arm intrinsics (dotnet/coreclr#7819)
Hanjoung Lee [Wed, 2 Nov 2016 13:23:57 +0000 (22:23 +0900)]
[ARM] Implement BitPosition with arm intrinsics (dotnet/coreclr#7819)

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

7 years agoMerge pull request dotnet/coreclr#7904 from shrah/master
Faizur Rahman [Wed, 2 Nov 2016 06:53:04 +0000 (23:53 -0700)]
Merge pull request dotnet/coreclr#7904 from shrah/master

Update S.R.InteropServices to ns2.0

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

7 years agoFix build break 814276: FEATURE_SPAN_OF_T disabled in runtime but enabled in DAC
John Chen [Wed, 2 Nov 2016 05:50:56 +0000 (22:50 -0700)]
Fix build break 814276: FEATURE_SPAN_OF_T disabled in runtime but enabled in DAC

[tfs-changeset: 1636322]

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

7 years agoMerge pull request dotnet/coreclr#7944 from dotnet-bot/from-tfs
Jan Kotas [Wed, 2 Nov 2016 01:59:16 +0000 (18:59 -0700)]
Merge pull request dotnet/coreclr#7944 from dotnet-bot/from-tfs

Merge changes from TFS

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

7 years agoExpose missing API in models.xml (dotnet/coreclr#7940)
Ian Hays [Wed, 2 Nov 2016 01:58:47 +0000 (18:58 -0700)]
Expose missing API in models.xml (dotnet/coreclr#7940)

progress towards https://github.com/dotnet/corefx/issues/12812 and https://github.com/dotnet/corefx/issues/12398

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

7 years agoUpdate GCInfoDecoder with CoreRT changes (dotnet/coreclr#7938)
Jan Kotas [Wed, 2 Nov 2016 01:57:36 +0000 (18:57 -0700)]
Update GCInfoDecoder with CoreRT changes (dotnet/coreclr#7938)

Porting most of the changes from https://github.com/dotnet/corert/pull/2116 to make GCInfoDecoder compile in CoreRT to keep the different copies in sync.

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

7 years agoDisabling checks in MemoryFailPoint for Xplat till primitives like VirtualQuery
DDCloud [Wed, 2 Nov 2016 00:48:23 +0000 (17:48 -0700)]
Disabling checks in MemoryFailPoint for Xplat till primitives like VirtualQuery
are implmemented properly

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

7 years agoRotate Left/Right xarch instructions don't set ZF and ZF flag.
sivarv [Wed, 2 Nov 2016 00:00:32 +0000 (17:00 -0700)]
Rotate Left/Right xarch instructions don't set ZF and ZF flag.

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

7 years agoFix GitHub build break caused by change dotnet/coreclr#1636179
John Chen [Tue, 1 Nov 2016 23:20:08 +0000 (16:20 -0700)]
Fix GitHub build break caused by change dotnet/coreclr#1636179

[tfs-changeset: 1636227]

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

7 years agoEnable the rest of netstandard1.7 globalization APIs (dotnet/coreclr#7935)
Tarek Mahmoud Sayed [Tue, 1 Nov 2016 23:17:50 +0000 (16:17 -0700)]
Enable the rest of netstandard1.7 globalization APIs (dotnet/coreclr#7935)

* Enable more netstandard 1.7 Globalization APIs

* Enable Windows support for the new APIs

* Fix spaces and line alignments

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

7 years agoMerge pull request dotnet/coreclr#7923 from AndyAyersMS/FixNoCandidateBug
Andy Ayers [Tue, 1 Nov 2016 20:18:03 +0000 (13:18 -0700)]
Merge pull request dotnet/coreclr#7923 from AndyAyersMS/FixNoCandidateBug

Jit: spill stack for non-candidate calls

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

7 years agoFix deadlock when commands race with EventSource Shutdown
Vance Morrison [Tue, 1 Nov 2016 19:21:34 +0000 (12:21 -0700)]
Fix deadlock when commands race with EventSource Shutdown

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

7 years agoCrossGen: Copy all entries of Debug Directory Table (dotnet/coreclr#7849)
John Chen [Tue, 1 Nov 2016 18:34:27 +0000 (11:34 -0700)]
CrossGen: Copy all entries of Debug Directory Table (dotnet/coreclr#7849)

Fixes issue dotnet/coreclr#6482.

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

7 years agoFix build break 814217 by removing inconsistencies between BCL and runtime
dotnet-bot [Tue, 1 Nov 2016 18:26:34 +0000 (11:26 -0700)]
Fix build break 814217  by removing inconsistencies between BCL and runtime

[tfs-changeset: 1636179]

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

7 years agoHandle simd checks in OptimizeRangeCheck
Joseph Tremoulet [Fri, 14 Oct 2016 18:20:49 +0000 (14:20 -0400)]
Handle simd checks in OptimizeRangeCheck

When the index is a constant, this code applies to `GT_SIMD_CHK` equally
well as it applies to `GT_ARR_BOUNDS_CHECK`.

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

7 years agoUse nameof throughout mscorlib (dotnet/coreclr#7929)
Stephen Toub [Tue, 1 Nov 2016 15:47:18 +0000 (11:47 -0400)]
Use nameof throughout mscorlib (dotnet/coreclr#7929)

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

7 years agoMerge pull request dotnet/coreclr#7677 from CarolEidt/StructOpts
Carol Eidt [Tue, 1 Nov 2016 15:42:01 +0000 (08:42 -0700)]
Merge pull request dotnet/coreclr#7677 from CarolEidt/StructOpts

Enable optimization of structs

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

7 years agoMerge pull request dotnet/coreclr#7926 from dotnet-bot/from-tfs
Jan Kotas [Tue, 1 Nov 2016 14:06:37 +0000 (07:06 -0700)]
Merge pull request dotnet/coreclr#7926 from dotnet-bot/from-tfs

Merge changes from TFS

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

7 years agoMerge pull request dotnet/coreclr#7883 from adiaaida/fixDecomposeRotate
Michelle McDaniel [Tue, 1 Nov 2016 13:47:54 +0000 (06:47 -0700)]
Merge pull request dotnet/coreclr#7883 from adiaaida/fixDecomposeRotate

Fix DecomposeRotate for > 32 case

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

7 years agoUse resolver to get IL header and size (dotnet/coreclr#7924)
Mukul Sabharwal [Tue, 1 Nov 2016 13:28:58 +0000 (14:28 +0100)]
Use resolver to get IL header and size (dotnet/coreclr#7924)

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

7 years agoFix build break on x86
Jan Kotas [Tue, 1 Nov 2016 05:58:49 +0000 (22:58 -0700)]
Fix build break on x86

[tfs-changeset: 1636135]

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

7 years agoUse normal verbosity logging when building tests (dotnet/coreclr#7921)
Andy Ayers [Tue, 1 Nov 2016 05:57:25 +0000 (22:57 -0700)]
Use normal verbosity logging when building tests (dotnet/coreclr#7921)

Test build log file is ~4GB with diag verbosity. With normal it's about 20MB.
This seems to speed up the test build for me considerably.

See dotnet/coreclr#7916.

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

7 years agoMove SR adapter into root (dotnet/coreclr#7925)
Jeremy Kuhne [Tue, 1 Nov 2016 05:57:11 +0000 (22:57 -0700)]
Move SR adapter into root (dotnet/coreclr#7925)

CoreFX creates SR in the System namespace. While putting the CoreCLR SR
adapter in the root may be unconventional, it allows us to keep the
shared code identical.

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

7 years agoMerge pull request dotnet/coreclr#7915 from dotnet-bot/from-tfs
Jan Kotas [Tue, 1 Nov 2016 05:56:58 +0000 (22:56 -0700)]
Merge pull request dotnet/coreclr#7915 from dotnet-bot/from-tfs

Merge changes from TFS

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

7 years agoMerge pull request dotnet/coreclr#7912 from JosephTremoulet/FlagVectorCounts
Joseph Tremoulet [Tue, 1 Nov 2016 05:31:02 +0000 (01:31 -0400)]
Merge pull request dotnet/coreclr#7912 from JosephTremoulet/FlagVectorCounts

Flag vector counts

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

7 years agoMerge pull request dotnet/coreclr#7910 from JosephTremoulet/FixInitTest
Joseph Tremoulet [Tue, 1 Nov 2016 05:29:57 +0000 (01:29 -0400)]
Merge pull request dotnet/coreclr#7910 from JosephTremoulet/FixInitTest

Fix check for initial induction variable value

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

7 years agoFix check for initial induction variable value
Joseph Tremoulet [Thu, 27 Oct 2016 19:04:40 +0000 (15:04 -0400)]
Fix check for initial induction variable value

Checking that `head` dominates `entry` is insufficient, becuase there may
be a codepath from `head` through other nodes that modify the induction
variable to `entry`.  Check instead that all preds of `entry` are either
`head` or in the loop.

Resolves dotnet/coreclr#7906.

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

7 years agoMerge pull request dotnet/coreclr#7909 from JosephTremoulet/FixLoopEntryCheck
Joseph Tremoulet [Tue, 1 Nov 2016 05:24:10 +0000 (01:24 -0400)]
Merge pull request dotnet/coreclr#7909 from JosephTremoulet/FixLoopEntryCheck

Skip removed loops in `optBlockIsLoopEntry`

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

7 years agoFix build break
Jan Kotas [Tue, 1 Nov 2016 03:14:32 +0000 (20:14 -0700)]
Fix build break

[tfs-changeset: 1636112]

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

7 years agoJit: spill stack for non-candidate calls
Andy Ayers [Tue, 1 Nov 2016 00:26:07 +0000 (17:26 -0700)]
Jit: spill stack for non-candidate calls

Closes dotnet/coreclr#7907.

Spill the evaluation stack at non-candidate calls since the call may
modify locals or args that are currently live on the stack.

In the attached test case I can't get the problematic IL sequence to
happen for the `F0` variant, but it is there for the `F1` variant.

No diffs seen in corlib or any of the framework assemblies that are
run via jit-dasm.

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

7 years agoMerge pull request dotnet/coreclr#7854 from dotnet-bot/master-UpdateDependencies
Gaurav Khanna [Tue, 1 Nov 2016 00:03:50 +0000 (17:03 -0700)]
Merge pull request dotnet/coreclr#7854 from dotnet-bot/master-UpdateDependencies

Update CoreClr, CoreFx to beta-24631-02, beta-24631-01, respectively (master)

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

7 years agoMerge pull request dotnet/coreclr#7918 from RussKeldorph/repoint-corefx-1.1.0
Russ Keldorph [Mon, 31 Oct 2016 23:52:44 +0000 (16:52 -0700)]
Merge pull request dotnet/coreclr#7918 from RussKeldorph/repoint-corefx-1.1.0

Make dotnet/coreclr reference corresponding dotnet/corefx branch

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

7 years agoMerge pull request dotnet/coreclr#7867 from Clockwork-Muse/ArgumentException
Jan Kotas [Mon, 31 Oct 2016 23:46:32 +0000 (16:46 -0700)]
Merge pull request dotnet/coreclr#7867 from Clockwork-Muse/ArgumentException

Replace hardcoded parameter names to ArgumentException with nameof

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

7 years agoMake dotnet/coreclr reference corresponding dotnet/corefx branch
Russ Keldorph [Mon, 31 Oct 2016 23:18:11 +0000 (16:18 -0700)]
Make dotnet/coreclr reference corresponding dotnet/corefx branch

We run CoreFx tests under JitStress modes in CoreCLR.  Previously, we were
always pulling down CoreFx master, which is bad for CoreCLR release
branches when things are out of synch.

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

7 years agoMerge pull request dotnet/coreclr#7885 from pgavlin/VSO278376.2
Pat Gavlin [Mon, 31 Oct 2016 22:33:53 +0000 (15:33 -0700)]
Merge pull request dotnet/coreclr#7885 from pgavlin/VSO278376.2

Fix VSO 278376.

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

7 years agoMerge pull request dotnet/coreclr#7905 from pgavlin/VSO279380
Pat Gavlin [Mon, 31 Oct 2016 22:33:29 +0000 (15:33 -0700)]
Merge pull request dotnet/coreclr#7905 from pgavlin/VSO279380

Fix VSO 279380.

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