platform/upstream/coreclr.git
7 years ago[ARM32/Linux] Copy tests.zip only for CI test
Hyeongseok Oh [Tue, 16 May 2017 10:37:03 +0000 (19:37 +0900)]
[ARM32/Linux] Copy tests.zip only for CI test

Copy tests.zip only from x64 Windows build for CI test
We can reduce saved build results of linux/arm in CI machine

7 years agoAdds System.Runtime.CompilerServices.Runtimefeature.PortablePdb (#11845)
Tomáš Matoušek [Thu, 25 May 2017 06:48:05 +0000 (23:48 -0700)]
Adds System.Runtime.CompilerServices.Runtimefeature.PortablePdb (#11845)

7 years agoRemove g_fEEManagedEXEStartup and g_fEEIJWStartup. (#11907)
Aditya Mandaleeka [Thu, 25 May 2017 06:47:28 +0000 (23:47 -0700)]
Remove g_fEEManagedEXEStartup and g_fEEIJWStartup. (#11907)

7 years agoMark the EventPipe crst as host breakable. (#11899)
Brian Robbins [Thu, 25 May 2017 01:19:22 +0000 (18:19 -0700)]
Mark the EventPipe crst as host breakable. (#11899)

7 years agoUpdate CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively (master...
dotnet bot [Thu, 25 May 2017 01:15:00 +0000 (18:15 -0700)]
Update CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively (master) (#11809)

* Update CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively

* Update corefx package versions in projects

7 years ago[x86/Linux] Reentrant PEImage::Load (#11867)
Jonghyun Park [Thu, 25 May 2017 00:42:31 +0000 (09:42 +0900)]
[x86/Linux] Reentrant PEImage::Load (#11867)

* [x86/Linux] Reentrant PEImage::Load

* Use HasLoadedLayout and add comments

7 years agoMerge pull request #11894 from pgavlin/gh11804
Pat Gavlin [Wed, 24 May 2017 23:45:04 +0000 (16:45 -0700)]
Merge pull request #11894 from pgavlin/gh11804

Never enregister type-punned regStruct lclVars.

7 years agoFix Issue 11861 (#11886)
Xiang Fan [Wed, 24 May 2017 22:51:38 +0000 (15:51 -0700)]
Fix Issue 11861 (#11886)

* Fix issues exposed by building with MSVC and /permissive-.

Using full-qualified name to declare members inside class is ill-formed and incorrectly allowed by MSVC.
MSVC now gives error when /permissive- is used.

* Add a forward declaration for SafeAddRef from utilcode.h.
SafeAddRef in holder.h calls SafeAddRef in utilcode.h. The latter hasn't been declared yet, so it isn't a valid candidate during overload resolution.
It happens to work in MSVC default mode because of the lack of two phase name lookup.

7 years agoAllow RelativePointer::SetValue usage for non-DAC builds only (#11891)
gbalykov [Wed, 24 May 2017 22:50:26 +0000 (01:50 +0300)]
Allow RelativePointer::SetValue usage for non-DAC builds only (#11891)

7 years agoMerge pull request #11893 from JosephTremoulet/WeakenIBRAssert
Joseph Tremoulet [Wed, 24 May 2017 22:12:28 +0000 (18:12 -0400)]
Merge pull request #11893 from JosephTremoulet/WeakenIBRAssert

Weaken type assertion in gtNewLclNode

7 years agoMerge pull request #11883 from JosephTremoulet/PromotedStructRefs
Joseph Tremoulet [Wed, 24 May 2017 21:44:28 +0000 (17:44 -0400)]
Merge pull request #11883 from JosephTremoulet/PromotedStructRefs

Update full-struct references to promoted IBR args

7 years agoIndicate if thread time events are in managed or native code. (#11892)
Brian Robbins [Wed, 24 May 2017 21:43:54 +0000 (14:43 -0700)]
Indicate if thread time events are in managed or native code. (#11892)

7 years agoMerge pull request #11832 from jashook/add_1_mod_1_case
Jarret Shook [Wed, 24 May 2017 20:37:59 +0000 (13:37 -0700)]
Merge pull request #11832 from jashook/add_1_mod_1_case

Add the case 1 % 1 to our bringup test

7 years agoNever enregister type-punned regStruct lclVars.
Pat Gavlin [Wed, 24 May 2017 19:34:09 +0000 (12:34 -0700)]
Never enregister type-punned regStruct lclVars.

Type-punned lclVars--i.e. lclVars that are accessed via
`(INDIR Tx (ADDR (LCLVAR Ty V)))`--are currently considered
enregisterable if they are SIMD-typed, have not been the accessed by
field, and have not otherwise been declared unenregisterable. This
appears to be an oversight, as the JIT is not able to generate correct
code for the type-punned access if the lclVar is in fact enregistered.

This change removes the special case for these SIMD-typed lclVars.

Fixes #11804.

7 years agoWeaken type assertion in gtNewLclNode
Joseph Tremoulet [Wed, 24 May 2017 20:08:36 +0000 (16:08 -0400)]
Weaken type assertion in gtNewLclNode

Implicit byref parameters originally have struct type in both the lvaTable
and on their appearances in the IR.  In fgRetypeImplicitByRefArgs, the
types in the lvaTable are updated, and subsequently, during global morph,
in fgMorphImplicitByRefArgs, the types of their appearances in the IR are
updated.  Weaken an assertion in lcl var creation to allow the type
disagreement for implicit byref parameter references during global morph.

Fixes #11831.

7 years agoImprove comments around implicit byref rewrite
Joseph Tremoulet [Wed, 24 May 2017 19:37:15 +0000 (15:37 -0400)]
Improve comments around implicit byref rewrite

A number of fields on the LclVarDsc get hijacked during the multi-stage
rewrite of implicit-by-reference parameters; add comments at the fields'
declarations as well as the hijacking uses.

7 years ago[Arm64/Win] Revise JIT_MemSet (#11420)
Steve MacLean [Wed, 24 May 2017 18:31:44 +0000 (14:31 -0400)]
[Arm64/Win] Revise JIT_MemSet (#11420)

* [Arm64/Win] Revise JIT_MemSet

This is the Windows equivalent of #11217 which merged

* [Arm64/Win] Use csel<con> for csel

MS Assembler expects csel<cond> for the csel instruction

7 years ago[x86/Linux] Thread-safe UMThunkMarshInfo::RunTimeInit (#11864)
Jonghyun Park [Wed, 24 May 2017 17:34:59 +0000 (02:34 +0900)]
[x86/Linux] Thread-safe UMThunkMarshInfo::RunTimeInit (#11864)

7 years agoUpdate full-struct references to promoted IBR args
Joseph Tremoulet [Wed, 24 May 2017 16:23:52 +0000 (12:23 -0400)]
Update full-struct references to promoted IBR args

Update fgMorphImplicitByRefArgs to rewrite references to struct-promoted
implicit-by-reference parameters as references to the new struct temps
created in fgRetypeImplicitByRefArgs; fgMorphStructField isn't updating
these because it's only interested in field references, and runs upstream
of fgRetypeImplicitByRefArgs where the full struct temp is created,
anyway.
Invert the sense of lvPromoted for implicit byref args in the interim
between fgRetypeImplicitByRefArgs and fgMarkDemotedImplicitByRefArgs,
since now fgMarkDemotedImplicitByRefArgs needs to update both and would
look horribly backwards the other way around.

Fixes #11814.

7 years agoILLink performance: Disable Roslyn Test
Swaroop Sridhar [Tue, 23 May 2017 21:33:36 +0000 (14:33 -0700)]
ILLink performance: Disable Roslyn Test

Temporarily disable roslyn test, since it is failing in the lab.

7 years agoScale back [Serializable] on CoreCLR types (#11765)
Morgan Brown [Wed, 24 May 2017 00:11:24 +0000 (17:11 -0700)]
Scale back [Serializable] on CoreCLR types (#11765)

Removes SerializableAttribute from CoreCLR types not intended to be serializable as well as adding special handling to MulticastDelegate to prevent serializing delegates (which can't be correctly serialized cross platform/runtime).

7 years agoReturn early if EventPipeBuffer is empty. (#11855)
Brian Robbins [Tue, 23 May 2017 23:11:44 +0000 (16:11 -0700)]
Return early if EventPipeBuffer is empty. (#11855)

7 years agoDelete special handling of IJW RVA fields at NGen time (#11818)
Jan Kotas [Tue, 23 May 2017 22:09:03 +0000 (15:09 -0700)]
Delete special handling of IJW RVA fields at NGen time (#11818)

Mixed mode managed C++ is not supported by CoreCLR so this is not needed for anything.

Fixes #11761

7 years agoMerge pull request #11694 from JosephTremoulet/IconHoist
Joseph Tremoulet [Tue, 23 May 2017 21:57:56 +0000 (17:57 -0400)]
Merge pull request #11694 from JosephTremoulet/IconHoist

Don't hoist IConHandle statics above cctors

7 years agoAdd the case 1 % 1 to our bringup test
jashook [Tue, 23 May 2017 16:50:33 +0000 (09:50 -0700)]
Add the case 1 % 1 to our bringup test

Addresses lack of coverage shown in #7168.

7 years agoMerge pull request #11366 from ruben-ayrapetyan/remove-zap-code-relocs-for-linux...
Bruce Forstall [Tue, 23 May 2017 16:38:03 +0000 (09:38 -0700)]
Merge pull request #11366 from ruben-ayrapetyan/remove-zap-code-relocs-for-linux-arm32

Change relocations in ngen-ed code with PC-relative constants for Linux ARM32

7 years agoMerge pull request #10275 from mikedn/x86-cmp-long-lower
Pat Gavlin [Tue, 23 May 2017 15:29:45 +0000 (08:29 -0700)]
Merge pull request #10275 from mikedn/x86-cmp-long-lower

Lower long compares that are materialized into a register

7 years agoRemove "corerun" sos plugin command. (#11812)
Mike McLaughlin [Tue, 23 May 2017 15:01:25 +0000 (08:01 -0700)]
Remove "corerun" sos plugin command. (#11812)

It broke building on debug osx and isn't used or needed anymore.

7 years agoDirect mapping of IL-assembly images that don't contain writeable sections.
Ruben Ayrapetyan [Wed, 5 Apr 2017 18:08:32 +0000 (21:08 +0300)]
Direct mapping of IL-assembly images that don't contain writeable sections.

7 years agoExtract PEImage::CreateLayoutMapped and PEImage::CreateLayoutFlat from PEImage::GetLa...
Ruben Ayrapetyan [Fri, 7 Apr 2017 10:25:42 +0000 (13:25 +0300)]
Extract PEImage::CreateLayoutMapped and PEImage::CreateLayoutFlat from PEImage::GetLayoutInternal.

7 years agoMerge pull request #10990 from mikedn/narrow-test
Pat Gavlin [Tue, 23 May 2017 06:09:25 +0000 (23:09 -0700)]
Merge pull request #10990 from mikedn/narrow-test

Narrow TEST instructions when possible

7 years agoDelete long compare support from x86 codegen
Mike Danes [Sun, 19 Mar 2017 12:57:19 +0000 (14:57 +0200)]
Delete long compare support from x86 codegen

7 years agoLower long compares that are materialized into a register
Mike Danes [Sat, 18 Mar 2017 00:39:25 +0000 (02:39 +0200)]
Lower long compares that are materialized into a register

7 years agoIntroduce GT_CMP and GT_SETCC(condition)
Mike Danes [Sat, 18 Mar 2017 09:02:35 +0000 (11:02 +0200)]
Introduce GT_CMP and GT_SETCC(condition)

7 years agoUse sigInst.methInstCount != 0 to detect generic methods (#11780)
Michal Strehovský [Tue, 23 May 2017 01:27:19 +0000 (18:27 -0700)]
Use sigInst.methInstCount != 0 to detect generic methods (#11780)

`methInstCount` is the thing that RyuJIT uses to detect generic virtual
methods in another place. `CORINFO_CALLCONV_GENERIC` reporting was added
because nobody knew about `methInstCount`. We already report
`methodInstCount` in CoreRT. We can delete a couple of lines on the
CoreRT side by switching to this scheme.

7 years agoMerge pull request #11810 from BruceForstall/FixUninitWarning
Bruce Forstall [Tue, 23 May 2017 00:51:45 +0000 (17:51 -0700)]
Merge pull request #11810 from BruceForstall/FixUninitWarning

Fix VC++ C4201 warning on desktop build

7 years agoMerge pull request #11797 from BruceForstall/CommonizeAdr
Bruce Forstall [Tue, 23 May 2017 00:51:22 +0000 (17:51 -0700)]
Merge pull request #11797 from BruceForstall/CommonizeAdr

Handle INS_adr in emitIns_R_L on both arm32 and arm64

7 years agoBump the version of the xUnit-Performance package (#11793)
José Rivero [Mon, 22 May 2017 23:50:05 +0000 (16:50 -0700)]
Bump the version of the xUnit-Performance package (#11793)

- In a previous PR this was reverted and broke the Profile On/Off perf runs

7 years agoQuiet warning C2220
Joseph Tremoulet [Mon, 22 May 2017 21:27:30 +0000 (17:27 -0400)]
Quiet warning C2220

This warning reports "potentially uninitialized local variable
`fieldOffset` used".  The use is guarded by a check on `fieldHnd` being
non-null, and `fieldOffset` gets initialized properly on all paths that
set `fieldHnd` to something other than null, so the fix is simply to
initialize `fieldOffset` to 0 at its declaration so the compiler won't
complain.

Resolves #11800.

7 years agoFix VC++ C4201 warning on desktop build
Bruce Forstall [Mon, 22 May 2017 23:07:08 +0000 (16:07 -0700)]
Fix VC++ C4201 warning on desktop build

Fixes #11808

7 years agoFix off-by-one error
Joseph Tremoulet [Mon, 22 May 2017 21:23:50 +0000 (17:23 -0400)]
Fix off-by-one error

The code in loop hoisting visiting a comma for a static init helper call
and static field access tried to clear the childrenHoistable bit for the
field, but had an off-by-one error and was instead clearing the bit for
the helper call, which could lead to missed legal helper call hoists.
Update that code to simply assert that the flag is already set for the
field (using the correct index), which must be true since the check is
guarded by a check that childIsCctorDependent is true for it.

7 years agoRevert "Fixed tests build on Linux"
Russ Keldorph [Mon, 22 May 2017 18:24:09 +0000 (11:24 -0700)]
Revert "Fixed tests build on Linux"

7 years agoMerge pull request #11776 from parjong/fix/x86_STDMETHODCALLTYPE_as_cdecl
Bruce Forstall [Mon, 22 May 2017 20:08:42 +0000 (13:08 -0700)]
Merge pull request #11776 from parjong/fix/x86_STDMETHODCALLTYPE_as_cdecl

[x86/Linux] Set CDECL as STDMETHODCALLTYPE

7 years agoMerge pull request #11778 from hqueue/arm/ryujit/float_ld_st
Bruce Forstall [Mon, 22 May 2017 20:06:34 +0000 (13:06 -0700)]
Merge pull request #11778 from hqueue/arm/ryujit/float_ld_st

[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float

7 years agoHandle INS_adr in emitIns_R_L on both arm32 and arm64
Bruce Forstall [Mon, 22 May 2017 18:34:15 +0000 (11:34 -0700)]
Handle INS_adr in emitIns_R_L on both arm32 and arm64

7 years agoMerge pull request #11750 from pgavlin/gh11734
Pat Gavlin [Mon, 22 May 2017 19:59:33 +0000 (12:59 -0700)]
Merge pull request #11750 from pgavlin/gh11734

Fix legality checks in SetRegOptionalForBinOp.

7 years agoUpdate Unix SafeHandle to throw NotFound correctly (#11757)
Jeremy Kuhne [Mon, 22 May 2017 19:49:08 +0000 (12:49 -0700)]
Update Unix SafeHandle to throw NotFound correctly (#11757)

* Update Unix SafeHandle to throw NotFound correctly

Need to match Windows semantics for missing files. This means throwing
FileNotFound only if the last segment of the path can't be found.

* Dispose handle and trim ending separator properly

7 years agoUse operator/operand size for legality checks.
Pat Gavlin [Mon, 22 May 2017 18:08:16 +0000 (11:08 -0700)]
Use operator/operand size for legality checks.

7 years agoMerge pull request #11542 from BruceForstall/RefactorXarchCodegen
Bruce Forstall [Mon, 22 May 2017 18:05:11 +0000 (11:05 -0700)]
Merge pull request #11542 from BruceForstall/RefactorXarchCodegen

Refactor xarch codegen

7 years ago[ARM32/RyuJIT] Enable passing struct argument that use stack only (#11541)
Hyeongseok Oh [Mon, 22 May 2017 16:42:10 +0000 (01:42 +0900)]
[ARM32/RyuJIT] Enable passing struct argument that use stack only (#11541)

* [ARM32/RyuJIT] Enable passing struct argument that use stack only

Enable passing struct argument when it uses stack only.
Cannot pass splitted struct argument that uses stack and register(s) yet.

* Remove redundant GC type assignment and fix internal register count

- Remove redundant GC type assignment in genPutArgStk
- Fix internal register count for ARM32: 2 -> 1

7 years agoFix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner...
Igor Kulaychuk [Mon, 22 May 2017 16:30:40 +0000 (19:30 +0300)]
Fix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner type (#10941)

* Fix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner type

To get the exact type from FieldDesc, field signature should point past the calling convention.

7 years agoDelete default copy/move constructors and assignment operators of RelativePointer...
Ruben Ayrapetyan [Mon, 22 May 2017 14:38:20 +0000 (17:38 +0300)]
Delete default copy/move constructors and assignment operators of RelativePointer and RelativeFixupPointer. (#11745)

7 years agoRefactor genCodeForTreeNode for xarch to match arm32/arm64
Bruce Forstall [Fri, 12 May 2017 06:39:39 +0000 (23:39 -0700)]
Refactor genCodeForTreeNode for xarch to match arm32/arm64

Almost all code in genCodeForTreeNode() has been placed in
separate functions, that match the names of function for
arm32/arm64.

7 years agoMerge pull request #11710 from sjsinju/jump
Bruce Forstall [Mon, 22 May 2017 14:07:45 +0000 (07:07 -0700)]
Merge pull request #11710 from sjsinju/jump

[RyuJit/ARM32] Enable loading arguments when jump instruction

7 years agoReport Span/ReadOnlySpan intrinsics to RyuJIT (dotnet/corert#3669) (#11775)
dotnet bot [Mon, 22 May 2017 14:02:09 +0000 (07:02 -0700)]
Report Span/ReadOnlySpan intrinsics to RyuJIT (dotnet/corert#3669) (#11775)

This lets RyuJIT optimize range checks on Span same way as it does for
arrays.

* Annotate the intrinsics
* Uncomment them in the table
* Report `sigInst` for all intrinsics

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
7 years ago[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float
Hyung-Kyu Choi [Mon, 22 May 2017 07:03:26 +0000 (16:03 +0900)]
[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float

- Implement load/store for float where address is [base + index * scale]
- Add NYI assertion for not implemented cases to enable AltJit

Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
7 years ago[x86/Linux] Use CDECL (instead of STDCALL) as STDMETHODCALLTYPE
Jonghyun Park [Tue, 16 May 2017 05:30:36 +0000 (14:30 +0900)]
[x86/Linux] Use CDECL (instead of STDCALL) as STDMETHODCALLTYPE

7 years agoMerge pull request #11526 from mskvortsov/MulLong
Bruce Forstall [Mon, 22 May 2017 05:09:20 +0000 (22:09 -0700)]
Merge pull request #11526 from mskvortsov/MulLong

[RyuJIT/ARM32] Enable GT_MUL_LONG codegen

7 years agoImplement HasSameMetadataDefinitionAs() on CoreCLR (#11774)
Atsushi Kanamori [Mon, 22 May 2017 04:52:23 +0000 (21:52 -0700)]
Implement HasSameMetadataDefinitionAs() on CoreCLR (#11774)

This api was approved here:

  https://github.com/dotnet/corefx/issues/5884

and is a necessary step to fixing the System.Dynamic.Runtime.Tests
failure:

  https://github.com/dotnet/corefx/issues/19895

which is caused by Microsoft.CSharp trying to do the impossible
and emulate this api without GetMetadataToken() support.

This approach opts for the most straightforward and efficient
implementation without any special-casing for weird situations
(this is also what Microsoft.CSharp implements today as
well as what someone else trying to trampoline members
across generic instantaitions is like to do.)

This results in the following behavior for these
corner cases. With the possible exception of #3,
I think they are tolerable enough to accept and codify:

1. "other" implemented by an entirely different Reflection
   provider than "this".

   Behavior:
     returns false without invoking any methods on the
     "other" Member.

   To change it to throw an ArgumentException would
   mean extra cast checks against the 6 possible
   Runtime types (or having said RuntimeTypes implement
   a sentinel interface.)

   Given that HasSameMetadataDefinitionAs() is a
   "looser cousin of Equals()" and "Equals()"
   doesn't throw for objects from a different universe,
   this seems reasonable.

2. Arrays, ByRefs, Pointers and Types from GetTypeFromCLSID()

   Behavior:
     Arrays, ByRefs, Pointers all return token 0x0600000
     and so they'll return "true" wrt to each other (provided
     both types are implemented by the same provider.)

     CLSID types all return the typedef of __ComObject
     so they'll return "true" wrt to each other.

     The constructor exposed by CLSID types all return
     the typedef of some constructor on __ComObject so
     they'll return "true" wrt to each other.

   I do not think these are interesting cases that merit
   special handling. These types will never appear
   in an enumeration of the members of a type. (The
   fact that Reflection surfaces them in objects
   that are assignable to MemberInfo is a structural
   flaw in Reflection's object model.)

3. Synthesized constructors and methods on array types.

   Behavior:
     These methods all return 0x06000000 as a token
     so the constructors will all compare true wrt
     each other, and likewise with the methods.

   This is a bit crummy though it's not clear
   what the "right" policy should look like.
   I could be persuaded to throw NotSupported
   for these, to leave the possibility open
   for a better story later. On the other hand,
   I wouldn't demand it either.

7 years ago[RyuJit/ARM32] Enable loading arguments when jump instruction
sjsujinkim [Thu, 18 May 2017 10:27:26 +0000 (19:27 +0900)]
[RyuJit/ARM32] Enable loading arguments when jump instruction

There was no code generation for GT_JMP node on ARM32. So it has made 'NYI: Unimplemented node type jump' message.
That was implemented as genJmpMethod() on other archtectures.

It is about loading arguments node when jump instruction. and the implementation of that for ARM64 seems not much different from that.

So it just merged genJmpMethod from codegenarm64.cpp to codegenarmarch.cpp after some modification.

7 years agoMerge pull request #11718 from jashook/add_nyi_typ_struct_fast_tail_call
Jarret Shook [Sun, 21 May 2017 15:46:52 +0000 (08:46 -0700)]
Merge pull request #11718 from jashook/add_nyi_typ_struct_fast_tail_call

[*64] NYI: TYP_STRUCT, fastTailCall stack fixup

7 years agoRemove explicit passing of ConfigurationGroup=Release from pipebuild (#11751)
William Godbe [Sun, 21 May 2017 14:47:54 +0000 (07:47 -0700)]
Remove explicit passing of ConfigurationGroup=Release from pipebuild (#11751)

7 years agoFix ReadMemory error reading DSO link_map name. (#11759)
Mike McLaughlin [Sun, 21 May 2017 00:18:30 +0000 (17:18 -0700)]
Fix ReadMemory error reading DSO link_map name. (#11759)

7 years agoFix package Publish in official builds (#11767)
Gaurav Khanna [Sat, 20 May 2017 16:48:01 +0000 (09:48 -0700)]
Fix package Publish in official builds (#11767)

7 years ago[Arm64/Win] Revise JIT_MemCpy (#11261)
Steve MacLean [Sat, 20 May 2017 16:10:00 +0000 (12:10 -0400)]
[Arm64/Win] Revise JIT_MemCpy (#11261)

* [Arm64/Win] Revise JIT_MemCpy

This is the Windows equivalent of #11143 which merged

* [Arm64/Win] Use b<cond> instead of newer b.<cond>

Looks like Windows arm64 assembler does not support the newer assembly mnemonic

7 years agoLinux/x86: Fix clang 4.0 build (#11610)
mskvortsov [Sat, 20 May 2017 14:51:54 +0000 (17:51 +0300)]
Linux/x86: Fix clang 4.0 build (#11610)

7 years agoMerge pull request #10453 from JosephTremoulet/ImplicitByRef
Joseph Tremoulet [Sat, 20 May 2017 13:52:46 +0000 (09:52 -0400)]
Merge pull request #10453 from JosephTremoulet/ImplicitByRef

Promote implicit-byref struct arguments

7 years agoNO_WRITE_BARRIER hasn't been used in ages and we don't think it will be used (#11762)
Maoni Stephens [Sat, 20 May 2017 04:51:52 +0000 (21:51 -0700)]
NO_WRITE_BARRIER hasn't been used in ages and we don't think it will be used (#11762)

7 years agoMerge pull request #11521 from JosephTremoulet/SpanAssert
Joseph Tremoulet [Sat, 20 May 2017 02:25:50 +0000 (22:25 -0400)]
Merge pull request #11521 from JosephTremoulet/SpanAssert

Propagate assertions for more checked bounds

7 years ago[RyuJIT/ARM32] Fix src register trashing in genFloatToIntCast (#11644)
mskvortsov [Sat, 20 May 2017 01:23:58 +0000 (04:23 +0300)]
[RyuJIT/ARM32] Fix src register trashing in genFloatToIntCast (#11644)

RyuJIT/ARM32: Fix src register trashing in genFloatToIntCast

7 years agoDon't hoist IConHandle statics above cctors
Joseph Tremoulet [Wed, 17 May 2017 20:32:14 +0000 (16:32 -0400)]
Don't hoist IConHandle statics above cctors

These constants appear loop invariant, hence so do their dereferences
when a loop has no memory side-effects.  Add flag `GTF_ICON_INITCLASS`
similar to `GTF_FLD_INITCLASS`/`GTF_CLS_VAR_INITCLASS`, and use it to
prevent hoisting such references without also hoisting their static
init helper calls.

Resolves #11689

7 years agoMerge pull request #10946 from JosephTremoulet/RationalFlags
Joseph Tremoulet [Sat, 20 May 2017 00:20:12 +0000 (20:20 -0400)]
Merge pull request #10946 from JosephTremoulet/RationalFlags

Clear GTF_ASG from non-stores in rationalize

7 years agoMerge pull request #10532 from rartemev/fix_tests_build
Roman Artemev [Fri, 19 May 2017 23:30:23 +0000 (16:30 -0700)]
Merge pull request #10532 from rartemev/fix_tests_build

Made possible to build tests on Linux too

7 years ago[ARM32] Simplify getting aligment value when remorphing (#11709)
Hyeongseok Oh [Fri, 19 May 2017 23:12:09 +0000 (08:12 +0900)]
[ARM32] Simplify getting aligment value when remorphing (#11709)

* [ARM32] Skip getting aligment when remorphing

Skip aligment computation in morphing phase when remorphing
It simplify getting alignment value for struct
morphed to FIELD_LIST in ARM32/RyuJIT

* Move comment

Move comment about `InferOpSizeAlign`

7 years agoTest build fixes for Linux
Roman Artemev [Wed, 8 Mar 2017 23:37:31 +0000 (15:37 -0800)]
Test build fixes for Linux

7 years agoMerge pull request dotnet/corert#3654 from dotnet/nmirror
Michal Strehovský [Fri, 19 May 2017 04:47:46 +0000 (21:47 -0700)]
Merge pull request dotnet/corert#3654 from dotnet/nmirror

Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
7 years agoMerge pull request #11714 from hqueue/arm/ryujit/init_val
Bruce Forstall [Fri, 19 May 2017 22:50:10 +0000 (15:50 -0700)]
Merge pull request #11714 from hqueue/arm/ryujit/init_val

[RyuJIT/ARM32] Implement GT_INIT_VAL

7 years agoMerge pull request #11713 from mskvortsov/Ckfinite
Bruce Forstall [Fri, 19 May 2017 22:48:46 +0000 (15:48 -0700)]
Merge pull request #11713 from mskvortsov/Ckfinite

[RyuJIT/ARM32] Ckfinite codegen

7 years agoMerge pull request #11209 from erozenfeld/MorphCastNarrowing
Eugene Rozenfeld [Fri, 19 May 2017 22:38:04 +0000 (15:38 -0700)]
Merge pull request #11209 from erozenfeld/MorphCastNarrowing

Add missing opcodes for morph cast narrowing.

7 years agoMerge pull request #11680 from mskvortsov/CleanupLongNYIs
Bruce Forstall [Fri, 19 May 2017 22:36:41 +0000 (15:36 -0700)]
Merge pull request #11680 from mskvortsov/CleanupLongNYIs

[RyuJIT/ARM32] Clean up remaining GT_LONG NYIs

7 years agoMerge pull request #11643 from hqueue/arm/ryujit/cast_smalltype2float
Bruce Forstall [Fri, 19 May 2017 22:23:50 +0000 (15:23 -0700)]
Merge pull request #11643 from hqueue/arm/ryujit/cast_smalltype2float

[RyuJIT/ARM32] Enable casting from small int to float

7 years agoremove unnecessary return copy (#11133)
Fei Peng [Fri, 19 May 2017 22:00:57 +0000 (15:00 -0700)]
remove unnecessary return copy (#11133)

7 years agoMerge pull request #11700 from BruceForstall/CleanupGTFlags
Bruce Forstall [Fri, 19 May 2017 21:54:57 +0000 (14:54 -0700)]
Merge pull request #11700 from BruceForstall/CleanupGTFlags

Un-clang-format GTF_ flags

7 years agoMerge pull request #11594 from mikedn/lower-shift-mask
Bruce Forstall [Fri, 19 May 2017 21:47:45 +0000 (14:47 -0700)]
Merge pull request #11594 from mikedn/lower-shift-mask

Removes unnecessary shift count masking

7 years ago[ARM/Linux] Support unaligned struct read/write (#11290)
Jonghyun Park [Fri, 19 May 2017 21:26:27 +0000 (06:26 +0900)]
[ARM/Linux] Support unaligned struct read/write (#11290)

* [ARM/Linux] Support unaligned struct read

* Fix format error

* Support unaligned struct write

7 years agoMerge pull request #11011 from mikedn/imp-runtime-lookup
Bruce Forstall [Fri, 19 May 2017 21:20:39 +0000 (14:20 -0700)]
Merge pull request #11011 from mikedn/imp-runtime-lookup

Simplify runtime lookup tree

7 years agoMerge pull request #11720 from wtgodbe/BuildToolsCleanup
William Godbe [Fri, 19 May 2017 21:14:33 +0000 (14:14 -0700)]
Merge pull request #11720 from wtgodbe/BuildToolsCleanup

Clean up 2.0.0 BuildTools PR

7 years agoLSRA throughput tweaks (#11698)
Bruce Forstall [Fri, 19 May 2017 21:00:07 +0000 (14:00 -0700)]
LSRA throughput tweaks (#11698)

Convert LinearScan::getVarReg() to take a tracked var index, not varNum

Change LSRA to create Intervals only for tracked variables

Change getIntervalForLocalVar() to take a tracked variable index.

Create getIntervalForLocalVarNode()

This reduces instruction count of superpmi replay over minopts tests by 0.6%.

7 years agoImprove BitVecOps<>::Iter::NextElem (#11696)
Bruce Forstall [Fri, 19 May 2017 20:58:35 +0000 (13:58 -0700)]
Improve BitVecOps<>::Iter::NextElem (#11696)

* Improve BitVecOps<>::Iter::NextElem

Tweak the implementation, to reduce the number of instructions
executed in the hot path.

Also, don't pass "env" to NextElem; it can be stored by Init()
if required. For non-inlined calls, this saves setting up one
argument.

Use a `m_bsEnd` end condition. This eliminates the need to handle
short/long differently, and reduces conditions when updating
the current bits to iterate over in the long case.

Overall, pin shows this reduces instruction count of superpmi over
a minopts test run by 2.6% (NextElem is very hot).

Also, fix BitSetAsUInt64 NextElem() iterator: It should store and updated
its own bit count, and not depend on the value passed in to be the
correct latest bit count.

7 years agoMerge pull request #11746 from pgavlin/gh11733
Pat Gavlin [Fri, 19 May 2017 20:36:21 +0000 (20:36 +0000)]
Merge pull request #11746 from pgavlin/gh11733

Do not reverse operands for user-call intrinsics.

7 years agoRemove `GTF_REVERSE_OPS` from LIR. (#10698)
Pat Gavlin [Fri, 19 May 2017 19:45:45 +0000 (12:45 -0700)]
Remove `GTF_REVERSE_OPS` from LIR. (#10698)

In HIR, this flag indicates that the second operand to a binary node will execute before
the node's first operand. LIR, however, no longer determines ordering via use edges, so
this flag only affects the order in which operands to a node are considered. The sole
constraint on this use ordering is that for a given node, the same ordering must be used
in liveness, LSRA, and the code generator; this is due to the correspondence between
use ordering and spill/reload/last-use ordering. As a result, the reverse ops flag is
unnecessary and rather unhelpful in LIR, causing little more than a bit of extra complexity
throughout the backend.

This change removes `GTF_REVERSE_OPS` from LIR by clearing this flag during rationalize
and verifying that it remains clear in `LIR::CheckLIR`. We could reuse this bit for an
additional backend-specific purpose in the future with a bit more work in the checker.

7 years agoFormat code.
Pat Gavlin [Fri, 19 May 2017 18:24:13 +0000 (11:24 -0700)]
Format code.

7 years agoFix legality checks in SetRegOptionalForBinOp.
Pat Gavlin [Fri, 19 May 2017 18:17:22 +0000 (11:17 -0700)]
Fix legality checks in SetRegOptionalForBinOp.

It is not legal to make an operand register optional on xarch if the type
of the operand is narrower than the type of the operator and the contents
of the upper bits are not known to be zero. `SetRegOptionalForBinOp` was
not considering the case where `op1` was legal but `op2` was the preferred
register-optional operand and was illegal.

Fixes #11734.

7 years agoSet StrongName=None for System.Private.CoreLib
Wes Haggard [Fri, 19 May 2017 17:59:39 +0000 (10:59 -0700)]
Set StrongName=None for System.Private.CoreLib

We don't ship the managed version of System.Private.CoreLib so
it doesn't need a strong name signature. We always crossgen it
so it is native.

7 years agoMerge pull request #11741 from mskvortsov/FixUBFX
Bruce Forstall [Fri, 19 May 2017 18:09:03 +0000 (11:09 -0700)]
Merge pull request #11741 from mskvortsov/FixUBFX

[ARM32] Fix ubfx instruction encoding

7 years ago[*64] NYI: TYP_STRUCT, fastTailCall stack fixup
jashook [Mon, 15 May 2017 17:52:46 +0000 (10:52 -0700)]
[*64] NYI: TYP_STRUCT, fastTailCall stack fixup

This will add an NYI for AMD64 and Arm64 during fastTailCall stack fixup which requires
a temp. Currently this code path is very difficult to execute for the case of TYP_STRUCT
because we will have already created copies of structs that are passed on the stack
during morph. The NYI will avoid silent bad codegen in the case that we make changes in
earlier stages that will force this code path to hit.

7 years agoClean up 2.0.0 BuildTools PR
wtgodbe [Thu, 18 May 2017 18:22:42 +0000 (11:22 -0700)]
Clean up 2.0.0 BuildTools PR

7 years agoMerge pull request #10662 from helloguo/VectorConversion
Bruce Forstall [Fri, 19 May 2017 17:24:18 +0000 (10:24 -0700)]
Merge pull request #10662 from helloguo/VectorConversion

Add JIT intrinsics support for vector conversion on AMD64 and x86

7 years agoMerge pull request #11747 from weshaggard/UpdateSigning
Wes Haggard [Fri, 19 May 2017 17:22:49 +0000 (10:22 -0700)]
Merge pull request #11747 from weshaggard/UpdateSigning

Update signing for coreclr repo

7 years agoUpdate signing for coreclr repo
Wes Haggard [Fri, 19 May 2017 17:18:04 +0000 (10:18 -0700)]
Update signing for coreclr repo

Make sign.builds consistent with corefx and only add strongname
signatures for managed assemblies and not native assemblies