Andy Ayers [Mon, 8 Feb 2016 19:08:57 +0000 (11:08 -0800)]
Inline refactoring: start untangling observation and policy
Create set of observations that can be made during inlining. These
are implemented as a set of static tables plus some helper methods.
Each observation has an enum name, a type, a description string,
an impact, and a target.
For now most observations are about blocking issues and are classified
as having FATAL impact. There are a handful of INFORMATIONAL and
PERFORMANCE observations but they're not widely used yet.
This change also updates the bulk of the jit code to report
observations to the JitInlineResult instead of directly requesting
changes to the JitInlineResult state. Over on the JitInlineResult side,
the current legacy policy is implemented and fails fast if any blocking
observation is made. For now, any any FATAL impact observation must be
made via `noteFatal`, and all other observations be made via `note`.
As with the previous refactorings, this change tries not to alter
any code generation. There are a few cases where observations that
are made solely about the callee are now targeted that way instead of
being targeted at callsites. For instance a method that is marked by
COMPLUS_JitNoInline will never be inlined. This can sometimes lead to
localized code diffs, since the jit creates slightly different IR for a
call to an inline candidate than a call to a non-candidate, and is not
always able to undo this later if inlining fails. However the number of
diffs should be small. Will verify diffs further before merging. There
are no inlining changes crossgenning mscorlib.
Some of the message strings associated with inlining failures have
changed. The messages use `caller` and `callee` to describe the two
methods involved, and `callsite` for the instance in question, and
deprecate `inlinee`. These message strings can be seen in the jit
dumps and logs and are reported back to the VM where they presumably
make their way into other diagnostic reporting streams.
Subsequent work will re-examine the FATAL observations and likely
reclassify a number of them to have less dramatic immediate impact.
Subsequent work will also begin extracting the policy into a separate
class to lay the groundwork for supporting alternate policies while
still being able to fall back to the legacy policy.
Commit migrated from https://github.com/dotnet/coreclr/commit/
aafcd1a1793e9d1853ef7aa1445447fa11f26a85
John Chen [Tue, 16 Feb 2016 18:44:31 +0000 (10:44 -0800)]
Merge pull request dotnet/coreclr#3179 from JohnChen0/crossgen-fprintf
Fix fprintf in crossgen
Commit migrated from https://github.com/dotnet/coreclr/commit/
e031b222453b0599d9f3909fdb66787eb4d0d2ff
Steve Harter [Tue, 16 Feb 2016 16:02:26 +0000 (10:02 -0600)]
Merge pull request dotnet/coreclr#2992 from steveharter/FixSanitizerClrStartup
Clang sanitizer: remove unaligned address check
Commit migrated from https://github.com/dotnet/coreclr/commit/
28389ae9f7edc8f4589e61e3e54d4e8f56801150
Jan Vorlicek [Mon, 15 Feb 2016 17:57:01 +0000 (18:57 +0100)]
Merge pull request dotnet/coreclr#3183 from janvorli/fix-unwound-funclet-stack-reporting
Fix unwound funclet GC stack reporting on Unix
Commit migrated from https://github.com/dotnet/coreclr/commit/
5a26372691fea92f1ef328f287e1e37243af3e34
Eric Eilebrecht [Mon, 15 Feb 2016 17:30:12 +0000 (09:30 -0800)]
Merge pull request dotnet/coreclr#3157 from benaadams/QueueUserWorkItemCallback
Slimmer QueueUserWorkItemCallback
Commit migrated from https://github.com/dotnet/coreclr/commit/
2ec6a401778e8bd018354c2a868f90efbbf8ba97
Jan Vorlicek [Mon, 15 Feb 2016 12:44:13 +0000 (13:44 +0100)]
Fix unwound funclet GC stack reporting on Unix
This change fixes a problem with reporting object on stack for GC when
GC scan is performed right after a funclet is unwound during exception handling.
In such case, the parent of the funclet should report live object references,
but it was not doing so on Unix.
On Unix, the unwound funclet is detected in a different way than on Windows due
to the fact that the stack frames of the funclet are already reclaimed, while on
Windows, they are still there.
When we detect the unwound funclet on Unix, we set state of the stack walker so
that it behaves in the same way as on Windows. But we were missing one state
variable that makes the parent report the references instead of the funclet,
the m_fDidFuncletReportGCReferences.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e49bd7a992ab038533b745741a26ac3d6208a877
Jan Vorlicek [Mon, 15 Feb 2016 10:21:07 +0000 (11:21 +0100)]
Merge pull request dotnet/coreclr#3170 from krytarowski/netbsd-support-44
Prefer BSD uuid over libuuid
Commit migrated from https://github.com/dotnet/coreclr/commit/
00892398a46db5bc128c481e4cd2246bfda66e10
Jan Vorlicek [Mon, 15 Feb 2016 10:09:11 +0000 (11:09 +0100)]
Merge pull request dotnet/coreclr#3149 from krytarowski/netbsd-support-41
Fix build issue on NetBSD: Include <time.h> for time(3) in gc.cpp
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c07d9ed1ad0a3b8f6ebc5d207a4a92e25e786b4
Jan Vorlicek [Mon, 15 Feb 2016 10:04:34 +0000 (11:04 +0100)]
Merge pull request dotnet/coreclr#3171 from krytarowski/netbsd-support-45
Add more CMake sugar for NetBSD
Commit migrated from https://github.com/dotnet/coreclr/commit/
515d2031ec9b3ae13c81326957473b59e5118a8c
Jan Vorlicek [Mon, 15 Feb 2016 09:58:27 +0000 (10:58 +0100)]
Merge pull request dotnet/coreclr#3160 from josteink/master
Make the coreclr build-process support rtags
Commit migrated from https://github.com/dotnet/coreclr/commit/
d1e0ae21a978240aa9a7be38c881c695925300b0
Jan Kotas [Sun, 14 Feb 2016 22:49:01 +0000 (14:49 -0800)]
Merge pull request dotnet/coreclr#3175 from krytarowski/netbsd-support-46
Fix build issue on NetBSD: Remove unneeded -nostdinc++ flag
Commit migrated from https://github.com/dotnet/coreclr/commit/
73ae4cd9524fb4dd9218f6e28a7287fdd487761c
John Chen (CLR) [Sun, 14 Feb 2016 22:25:32 +0000 (14:25 -0800)]
Fix fprintf in crossgen
CrossGen configures its stdout to allow only Unicode output functions.
Add a wrapper to fprintf to allow it to work inside crossgen.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a4c745bd8fc7018c9e6e47fc2a6a909e51deea3b
Ben Adams [Fri, 12 Feb 2016 09:25:33 +0000 (09:25 +0000)]
Slimmer QueueUserWorkItemCallback
Commit migrated from https://github.com/dotnet/coreclr/commit/
9418bc40d25c721a8939a3f202a7ac452ab83c25
Kamil Rytarowski [Sat, 13 Feb 2016 20:25:32 +0000 (21:25 +0100)]
Prefer BSD uuid over libuuid
This fixes recent NetBSDbuild breakage:
../libcoreclrpal.a(miscpalapi.cpp.o): In function `CoCreateGuid':
/tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/pal/src/misc/miscpalapi.cpp:356: undefined reference to `uuid_generate_random'
clang-3.9: error: linker command failed with exit code 1 (use -v to see invocation)
No need to link against libuuid.
Add detection of BSD-styl <uuid.h>.
Few Linux distros ship with custom <uuid.h> and they aren't compatibile.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d981e1b43617bdd6fc3d34dbde8c53169e52d0ab
Jan Kotas [Sun, 14 Feb 2016 14:25:01 +0000 (06:25 -0800)]
Merge pull request dotnet/coreclr#3162 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
3db38d36fec6d83daba0bec9fdcfee8159320439
Kamil Rytarowski [Sun, 14 Feb 2016 14:17:15 +0000 (15:17 +0100)]
Fix build issue on NetBSD: Remove unneeded -nostdinc++ flag
This flag isn't recognized by clang on NetBSD:
clang-3.9: warning: argument unused during compilation: '-nostdinc++'
$ pkg_info |grep -E 'lldb|llvm|clang'
llvm-3.9.0nb20160213 Low Level Virtual Machine compiler infrastructure
clang-3.9.0nb20160213 C language family frontend for LLVM
lldb-3.9.0nb20160213 next generation, high-performance debugger
$ uname -a
NetBSD chieftec 7.99.26 NetBSD 7.99.26 (GENERIC) dotnet/coreclr#0: Wed Feb 10 21:58:18 UTC 2016
root@chieftec:/tmp/netbsd-tmp/sys/arch/amd64/compile/GENERIC amd64
This flag was disabled also for Darwin in dotnet/coreclr#125 by @jkotas
Commit migrated from https://github.com/dotnet/coreclr/commit/
47939a53d37033ea482e37222a06c71cceb030f0
Kamil Rytarowski [Fri, 12 Feb 2016 02:40:30 +0000 (03:40 +0100)]
Fix build issue on NetBSD: Add time(3) to PAL
Otherwise it triggers linker warnings.
/tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/gc/gc.cpp:33869:
warning: warning: reference to compatibility time(); include <time.h> for correct reference
$ uname -a
NetBSD chieftec 7.99.25 NetBSD 7.99.25 (GENERIC) dotnet/coreclr#0: Fri Dec 25 20:51:06 UTC 2015 root@chieftec:/tmp/netbsd-tmp/sys/arch/amd64/compile/GENERIC amd64
Commit migrated from https://github.com/dotnet/coreclr/commit/
eff2c6e57d957f94129993a5e32ed93925ef289d
Russ Keldorph [Sun, 14 Feb 2016 13:39:35 +0000 (05:39 -0800)]
Merge pull request dotnet/coreclr#3172 from RussKeldorph/redisable
Re-disable tests failing due to dotnet/coreclr#2728
Commit migrated from https://github.com/dotnet/coreclr/commit/
042980511d9724b3c82f16c0cf7e5dbb84c40e60
Russ Keldorph [Sun, 14 Feb 2016 04:48:26 +0000 (20:48 -0800)]
Re-disable tests failing due to dotnet/coreclr#2728
Commit migrated from https://github.com/dotnet/coreclr/commit/
351477721cad109998cf711a924afc5bfdc6db7d
Kamil Rytarowski [Sun, 14 Feb 2016 03:31:57 +0000 (04:31 +0100)]
Add more CMake sugar for NetBSD
This resolves 'gen-dactable-rva.sh does not print to dactablerva.h' dotnet/coreclr#3168
This fixes issue with g_dacTable unavailable in libcoreclr.so.
This patch assumes GNU ld(1) on NetBSD
Thanks to Bruce Mitchener @waywardmonkeys for pointing out ld(1) nits.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4e548e16efb02b6c97c10eb9fd3d49ac94245507
Jostein Kjønigsen [Sat, 13 Feb 2016 20:18:42 +0000 (21:18 +0100)]
Make the build-process support rtags
Rtags depends on cmake to export its build commands in order to index
the codebase.
Adding this flag makes cmake do that.
Commit migrated from https://github.com/dotnet/coreclr/commit/
605bc815300dd5e3de0d4d23458e0ad8bc0eca20
Richard L Ford [Sat, 13 Feb 2016 03:33:59 +0000 (19:33 -0800)]
Merge pull request dotnet/coreclr#3161 from richardlford/restoredllnames0212
Restore original dll names, use Define constants.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a1c870d555a73618a8ed9c2d26e523eb7e71ab36
Eugene Rozenfeld [Fri, 12 Feb 2016 23:47:39 +0000 (15:47 -0800)]
Merge pull request dotnet/coreclr#3145 from erozenfeld/PreserveCastVN
Preserve value numbers when discarding a cast.
Commit migrated from https://github.com/dotnet/coreclr/commit/
059e5a38bd88766fa34a7b8de16c5f9084f48f2e
Richard L Ford [Fri, 12 Feb 2016 23:19:34 +0000 (15:19 -0800)]
Fix hfa_interop to omit ".dll" from DLLName
For interoperability cross platform, the DLL name given to the
DllImport attribute should not include the suffix since
dynamic link libraries use a different suffix on different
systems.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e1472cbe46b36c3ce54bfaff47d1f72f4d6be8d3
Mike McLaughlin [Fri, 12 Feb 2016 22:44:53 +0000 (14:44 -0800)]
Merge pull request dotnet/coreclr#3159 from mikem8361/security
Change the transport pipe and runtime startup semaphores permissions
Commit migrated from https://github.com/dotnet/coreclr/commit/
76afde059ec6acf46b2694638bc967705808422b
Steve Harter [Tue, 2 Feb 2016 23:31:21 +0000 (17:31 -0600)]
Clang sanitizer: remove unaligned address check
Commit migrated from https://github.com/dotnet/coreclr/commit/
6eca2b489179db67b691c24233993905aa826e4f
dotnet-bot [Fri, 12 Feb 2016 21:45:59 +0000 (13:45 -0800)]
Fix build issue dotnet/coreclr#788907: crossgen /createpdb not working
[tfs-changeset: 1575079]
Commit migrated from https://github.com/dotnet/coreclr/commit/
f2548fb9ccc735489d3133042f26c600cba6f44b
Richard L Ford [Fri, 12 Feb 2016 21:07:54 +0000 (13:07 -0800)]
Restore original dll names, use Define constants.
This changes set has no functional change, rather it cleans
up some aspects of a previous port.
When the hfa dlls were originally ported it was not known that
C# #defines could be used in the tests, so source files that
use #if were expanded to multiple source files with the preprocessing
being done manually. This changes goes back to using the original
files with appropriate define constants in the project files.
In addition, when these dlls were ported abbreviated names were
used. This change restores the dll names to the originals.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4d017e38094773f36b902f19031c834e22d97266
Brian Sullivan [Fri, 12 Feb 2016 20:51:02 +0000 (12:51 -0800)]
Merge pull request dotnet/coreclr#3153 from briansull/issue_2816_v2
Fix issues with passing 16-byte structs on Arm64
Commit migrated from https://github.com/dotnet/coreclr/commit/
e0284f70f46322d0c6f961874c2421925535d1d9
Mike McLaughlin [Thu, 11 Feb 2016 21:28:09 +0000 (13:28 -0800)]
Change the transport pipe and dbgshim runtime startup semaphores permissions to user only
Since the mechanism used to enumerate process modules (/proc/xxxx/maps on Linux, running
vmvmap on OSX) is user only and the default group new users get on OSX is the same ("staff")
restricting the transport pipes and runtime startup named semaphores to user only is the
right way to go.
If we find some reason to give groups permissions, we can always change that later though
the process module enumeration would have to be figured out.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c66f88cda89166d74b33522c13b2523302202d9d
Brian Sullivan [Fri, 12 Feb 2016 03:30:55 +0000 (19:30 -0800)]
Fix issues with passing 16-byte structs on Arm64
Properly track the GC pointers that are being loaded/stored or copied from these pass by value structs.
Implements passing 16-byte value types in the outgoing stack area, previously not implemented.
Added utility method getJitGCtype for converting the VM's CorInfoGCType to the JIT's var_types enum
Added utility method getStructGcPtrsFromOp to examine a GT_LDOPB or GT_LCL_VAR
that represents a 16-byte struct and get the GC layout information
Allow LSRA to pick two consecutive registers to pass 16-byte structs on the stack
Added utility methods checkAndAssignInterval and checkAndClearInterval to handle the
second register used to pass arguments on ARM64.
Commit migrated from https://github.com/dotnet/coreclr/commit/
253aa91b5a7d03704fc149e63dd00445caebc872
Sejong Oh [Fri, 12 Feb 2016 18:25:30 +0000 (10:25 -0800)]
Merge pull request dotnet/coreclr#3121 from sejongoh/add_combo_stress_options
Add JitStress x JitStressRegs combo stress tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
2b06b0b43c459d6c1e9cd2c981187385a0b03c43
Jan Vorlicek [Fri, 12 Feb 2016 18:08:06 +0000 (19:08 +0100)]
Merge pull request dotnet/coreclr#3158 from krytarowski/netbsd-support-44
Fix build on NetBSD: Allow to overload definition of wchar_t
Commit migrated from https://github.com/dotnet/coreclr/commit/
57048e3b6346f089ed800ab5eab6d6aba214ba21
Russ Keldorph [Fri, 12 Feb 2016 13:35:22 +0000 (05:35 -0800)]
Merge pull request dotnet/coreclr#3088 from RussKeldorph/testwarn
Fix warnings in JIT test build
Commit migrated from https://github.com/dotnet/coreclr/commit/
1115b6f4999d88a48cffd73dbe92cd4252427268
Kamil Rytarowski [Fri, 12 Feb 2016 11:39:31 +0000 (12:39 +0100)]
Fix build on NetBSD: Allow to overload definition of wchar_t
This allows to build 100% of the sources on NetBSD.
In file included from /tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/pal/src/safecrt/safecrt_output_l.c:70:
/usr/pkg/bin/../lib/clang/3.9.0/include/stddef.h:90:24: error: typedef redefinition with different types ('int' vs 'unsigned short')
typedef __WCHAR_TYPE__ wchar_t;
^
/tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/pal/inc/pal_char16.h:32:17: note: expanded from macro 'wchar_t'
^
/tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/pal/inc/pal_char16.h:44:24: note: previous definition is here
typedef unsigned short wchar_t;
^
/tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/pal/inc/pal_char16.h:32:17: note: expanded from macro 'wchar_t'
^
1 error generated.
Closes wchar_t redefinition broken on NetBSD dotnet/coreclr#2937
Commit migrated from https://github.com/dotnet/coreclr/commit/
388fe6d50b87a947cd9eb075dee737e5e4cbbe92
Jan Kotas [Fri, 12 Feb 2016 06:08:41 +0000 (22:08 -0800)]
Merge pull request dotnet/coreclr#3150 from krytarowski/netbsd-support-42
Fix build issue on NetBSD: Include <stdlib.h> for alloca(3)
Commit migrated from https://github.com/dotnet/coreclr/commit/
1ff1fc83dab3cd3f7d5c448eea41e863c59ca4f6
Mike McLaughlin [Fri, 12 Feb 2016 03:44:31 +0000 (19:44 -0800)]
Merge pull request dotnet/coreclr#3146 from mikem8361/vso190301
Fix VSO bug dotnet/coreclr#190301 contract problems in DACRaiseException.
Commit migrated from https://github.com/dotnet/coreclr/commit/
58a96714860f3acab33ddbb22f572bff0ea6ad4b
Kamil Rytarowski [Fri, 12 Feb 2016 02:46:46 +0000 (03:46 +0100)]
Fix build issue on NetBSD: Include <stdlib.h> for alloca(3)
Header <alloca.h> isn't needed on other supported systems either.
/tmp/pkgsrc-tmp/wip/coreclr-git/work/coreclr/src/pal/src/file/directory.cpp:605:
warning: Warning: reference to the libc supplied alloca(3); this most likely will
not work. Please use the compiler provided version of alloca(3), by supplying the
appropriate compiler flags (e.g. not -std=c89).
$ uname -a
NetBSD chieftec 7.99.25 NetBSD 7.99.25 (GENERIC) dotnet/coreclr#0: Fri Dec 25 20:51:06 UTC 2015 root@chieftec:/tmp/netbsd-tmp/sys/arch/amd64/compile/GENERIC amd64
Commit migrated from https://github.com/dotnet/coreclr/commit/
3639bd23882a45f2248bc6296340dc76a0e21f33
Jan Vorlicek [Fri, 12 Feb 2016 01:31:15 +0000 (02:31 +0100)]
Merge pull request dotnet/coreclr#3076 from krytarowski/netbsd-support-37
Permit to inject additional CMake arguments via environment variables
Commit migrated from https://github.com/dotnet/coreclr/commit/
cb1effac01239c3af46a1d3917fb60f70b18b757
Mike McLaughlin [Thu, 11 Feb 2016 22:25:21 +0000 (14:25 -0800)]
Fix VSO bug dotnet/coreclr#190301 contract problems in DACRaiseException.
Added the proper contracts to the DAC notification functions.
Commit migrated from https://github.com/dotnet/coreclr/commit/
923c266972b80e563c54da6e0a8604edda6a0064
Jan Vorlicek [Fri, 12 Feb 2016 00:49:35 +0000 (01:49 +0100)]
Merge pull request dotnet/coreclr#3122 from krytarowski/netbsd-support-40
Fix build on NetBSD: Include <cstdarg> for va_list
Commit migrated from https://github.com/dotnet/coreclr/commit/
c39ac0e98bc69889192f1614203d6858de502472
Eugene Rozenfeld [Fri, 12 Feb 2016 00:41:31 +0000 (16:41 -0800)]
Preserve value numbers when discarding a cast.
This is a fix for an assert during CSE. After processing a CSE definition
the tree got morphed. During morphing a cast was discarded by narrowing
the operand of the cast. The value number of the operand was cleared. Later,
when processing a use of the CSE, the code was attempting to process the side effects
in the tree of the use and was encountering a node with no value number resulting
in an assert. The fix is to transfer the value number from the cast node to the narrowed
operand.
Commit migrated from https://github.com/dotnet/coreclr/commit/
cdac5f06ecdd6f742f2fd0e0b0a4574eac6ba317
Sivarv [Fri, 12 Feb 2016 00:22:45 +0000 (16:22 -0800)]
Merge pull request dotnet/coreclr#3136 from sivarv/simdfix2
Fix to issue dotnet/coreclr#2970
Commit migrated from https://github.com/dotnet/coreclr/commit/
7010341ff0fdf1e4ea65ede688f0ce92cc266cd8
Sejong Oh [Thu, 11 Feb 2016 23:32:03 +0000 (15:32 -0800)]
Merge pull request dotnet/coreclr#3082 from sejongoh/update_corefx_build_steps
Fixed corefx build failures
Commit migrated from https://github.com/dotnet/coreclr/commit/
616b364172464ad443607c164b8cab4dfa9840ed
Stephen Toub [Thu, 11 Feb 2016 23:15:17 +0000 (18:15 -0500)]
Merge pull request dotnet/coreclr#3132 from stephentoub/taskscheduler_tracking
Track TaskSchedulers only when debugger attached
Commit migrated from https://github.com/dotnet/coreclr/commit/
ffa6fdff2d5acc7cd385a55f185a25c5e8fa8ad7
Stephen Toub [Thu, 11 Feb 2016 23:15:06 +0000 (18:15 -0500)]
Merge pull request dotnet/coreclr#3139 from stephentoub/task_id_perf
Fix access to Task.Id while finishing continuations
Commit migrated from https://github.com/dotnet/coreclr/commit/
6ac7e9639630c60a7e102b0f8465179262e26550
Sejong Oh [Wed, 10 Feb 2016 01:20:06 +0000 (17:20 -0800)]
Updated build steps to fix corefx build issues
Commit migrated from https://github.com/dotnet/coreclr/commit/
8a824f03eed59aba13884a32443bbac4a1715e4a
stephentoub [Thu, 11 Feb 2016 21:41:43 +0000 (16:41 -0500)]
Fix access to Task.Id while finishing continuations
Task.Id is lazily-initialized with an interlocked operation and we strive to avoid accessing it anywhere in Task's internals on hot paths, but apparently when some ETW logging was added around continuations, calls were added that access Task.Id even if logging is disabled. This is accounting for ~30% of the cycles consumed in a TCS Task's lifecycle! This commit fixes it by making sure these accesses to Id are guarded.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f92dc182d75c60abbfd5a20020462b11ae26e529
sivarv [Thu, 11 Feb 2016 19:39:05 +0000 (11:39 -0800)]
Fix to issue dotnet/coreclr#2970
The repro is a case of one of the method called is returning Vector3/4 type value.
On unix such a struct will gets returned in two registers and hence will
be assigned to a local by importer and marked as multiRegArgOrRet=1.
But it doesn't ensure that the local will not be register allocated.
For the repro case it gets register allocated.
IR: GT_LCL_FLD(tmp1) = GT_CALL returning SIMD12
Codgen routine genStoreRegisterReturnInLclVar() for stroing a struct returned in two registers to a lcl var or lcl_fld
is making the assumption that lcl var will be on stack not in a register.
This may not be true for SIMD structs returned in two registers.
For now to workaround Codegen limitation marking tmp1 as DoNoEnregister.
Fixes dotnet/coreclr#2970
Commit migrated from https://github.com/dotnet/coreclr/commit/
e977984e2bedd7fa35875a879baa0f4014639ff4
William Godbe [Thu, 11 Feb 2016 21:05:13 +0000 (13:05 -0800)]
Merge pull request dotnet/coreclr#3137 from wtgodbe/disable
Disable pri 1 tests failing in the CI
Commit migrated from https://github.com/dotnet/coreclr/commit/
8a0dfa1ca160a43f22491ae635b21e77c0d61094
William Godbe [Thu, 11 Feb 2016 20:33:44 +0000 (12:33 -0800)]
Disable pri 1 tests failing in the CI
Commit migrated from https://github.com/dotnet/coreclr/commit/
ac8e57afd3f7d605b30d9d13271e356bcfc36e98
stephentoub [Thu, 11 Feb 2016 18:06:41 +0000 (13:06 -0500)]
Track TaskSchedulers only when debugger attached
Today the base TaskScheduler ctor registers every created scheduler in a ConditionalWeakTable. This is then used in the internal TaskScheduler.GetTaskSchedulersForDebugger() to enable a debugger to find all of the schedulers that are active and then in turn find all tasks scheduled to them. However, for scenarios that involve creating many, many schedulers, this registration adds up to a non-trivial cost, both in time and space, and is only relevant for debugging. Plus, since this mechanism was introduced, Visual Studio has additional ways of tracking tasks for display in the Tasks window, e.g. ETW events.
This commit simply makes that registration more pay-for-play, only doing it if the debugger is attached at the time of the scheduler's creation.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ae413bc05a6021c5164cc34d899084bc2a2a0579
Sejong Oh [Wed, 10 Feb 2016 23:59:41 +0000 (15:59 -0800)]
Add jitstress x jitstressregs
Commit migrated from https://github.com/dotnet/coreclr/commit/
eadd364793925ca3702fdd69bb380809afcd5715
Matt Mitchell [Thu, 11 Feb 2016 16:27:48 +0000 (08:27 -0800)]
Merge pull request dotnet/coreclr#3119 from ellismg/add-rhel72
Add Red Hat Enterprise Linux 7.2 Runs
Commit migrated from https://github.com/dotnet/coreclr/commit/
4181cfa65a889e98878bf879bd50e6ebcc0118c3
Jan Kotas [Thu, 11 Feb 2016 10:48:05 +0000 (02:48 -0800)]
Merge pull request dotnet/coreclr#3126 from jkotas/crossgen
Change crossgen defaults
Commit migrated from https://github.com/dotnet/coreclr/commit/
28e9c4c6b9fef89c7915f26d340618acfee6fe3b
Eugene Rozenfeld [Thu, 11 Feb 2016 08:00:26 +0000 (00:00 -0800)]
Merge pull request dotnet/coreclr#3120 from erozenfeld/MultToShiftVN1
Small correction for dotnet/coreclr#3067.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b7055a710612cf5b96961608504db4e51daa38b7
Andy Ayers [Thu, 11 Feb 2016 07:29:34 +0000 (23:29 -0800)]
Merge pull request dotnet/coreclr#3127 from AndyAyersMS/FlakyTestDisable
Disable test causing Ubuntu failures
Commit migrated from https://github.com/dotnet/coreclr/commit/
9e65b423aac5c05fdd89938d389c5ad654ef8db7
Andy Ayers [Thu, 11 Feb 2016 03:53:53 +0000 (19:53 -0800)]
Disable test causing Ubuntu failures
Fails because of mismatched System.IO versions. See dotnet/coreclr#3117 for some
discussion.
Commit migrated from https://github.com/dotnet/coreclr/commit/
dff431d1b8e3c6eb1fa53371d499a281ed7d7297
Jan Kotas [Thu, 11 Feb 2016 03:35:01 +0000 (19:35 -0800)]
Change crossgen defaults
Change crossgen to generate R2R images by default
Commit migrated from https://github.com/dotnet/coreclr/commit/
fcf9b1d7d7a0b16ae2e190e799d16794bc7d1f8a
Jan Kotas [Thu, 11 Feb 2016 02:47:45 +0000 (18:47 -0800)]
Merge pull request dotnet/coreclr#3118 from jkotas/buffercopy
Add a fast path for byte[] to Buffer.BlockCopy
Commit migrated from https://github.com/dotnet/coreclr/commit/
85c57caa006ac67bf29009b321e71047a7ab3646
Jan Kotas [Wed, 10 Feb 2016 17:18:13 +0000 (09:18 -0800)]
Add a fast path for byte[] to Buffer.BlockCopy
Commit migrated from https://github.com/dotnet/coreclr/commit/
9583ed789e1bb975766de4650093a8806d5537f3
Kamil Rytarowski [Thu, 11 Feb 2016 00:02:51 +0000 (01:02 +0100)]
Fix build on NetBSD: Include <cstdarg> for va_list
Commit migrated from https://github.com/dotnet/coreclr/commit/
528ff04a26894a3a106b39b424df512ecb3d8e18
Eugene Rozenfeld [Wed, 10 Feb 2016 23:50:41 +0000 (15:50 -0800)]
Small correction for dotnet/coreclr#3067.
The code to change multiplication to shift shouldn't be
under LEA_AVAILABLE since the code to process multiplication
by power of 2 isn't.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d8683b4411b007eb2614b7e4cb7147b5bfce6e15
Matt Ellis [Wed, 10 Feb 2016 22:55:34 +0000 (14:55 -0800)]
Add Red Had Enterprise Linux 7.2 Runs
Commit migrated from https://github.com/dotnet/coreclr/commit/
fd1fc180e02b5edabbfe8b6d335be8a2e8224b73
Kamil Rytarowski [Mon, 8 Feb 2016 11:02:20 +0000 (12:02 +0100)]
Add new parameter with settable option: cmakeargs
This will allow to pass user-defined CMake arguments.
One of the users is pkgsrc, which defines it to following example string:
-DPYVERSSUFFIX:STRING=2.7 -DCMAKE_INSTALL_PREFIX:PATH=/usr/pkg \
-DCMAKE_MODULE_PATH:PATH=/tmp/pkgsrc-tmp/wip/coreclr-git/work/.buildlink/cmake-Modules \
-DCMAKE_SKIP_RPATH:BOOL=TRUE -DCMAKE_INSTALL_LIBDIR:PATH=lib \
-DCMAKE_INSTALL_MANDIR:PATH=man
Without these values unmodified build.sh won't integrate with pkgsrc as
expected.
Solution suggested by Jan Vorli (Microsoft)
While there, there was need to alter loop type to handle options passed to
arguments. As a bonus, new loop should be POSIX confirming.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fa6a2ab7f529a7f248a3ed8795ccfe0d6dcd373a
Mike McLaughlin [Wed, 10 Feb 2016 22:37:25 +0000 (14:37 -0800)]
Merge pull request dotnet/coreclr#3112 from mikem8361/sosfix
Fix SOS managed breakpoints when coreclr symbols are stripped.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e683c0b63dcfa2352679661db75a12d1837ba2da
Mike McLaughlin [Tue, 9 Feb 2016 01:47:31 +0000 (17:47 -0800)]
Fix SOS managed breakpoints when coreclr symbols are stripped.
Added a SOS DAC interface (ISOSDacInterface4::GetClrNotification) to get the exception
notification arguments instead of using the GetLastExceptionInformation function from the lldb
sosplugin that depends on coreclr symbols being present.
On the coreclr side, the clr notification arguments are saved in a global variable that is DAC
accessible. A critical section was added to protect this global variable while the special
exception is raised.
Setting the internal COMPlus_DebugBreakOnAssert environment variable causes 3 or 4 breaks in
the debugger with no reason. It was breaking in the function that was determining whether it
should break. I was using COMPlus_BreakOnEELoad=2 to break after coreclr was loaded and initialized
to set managed breakpoints and on a debug build it generates an assert (on release just a DebugBreak).
Commit migrated from https://github.com/dotnet/coreclr/commit/
7d74570d33823d4734fa287bc21a81ff12f7b40a
Russ Keldorph [Sun, 7 Feb 2016 02:44:28 +0000 (18:44 -0800)]
Fix warnings in test build
```
warning : Layout specified for auto-layout class
C:\git\coreclr\tests\src\JIT\Directed\PREFIX\unaligned\1\add.ilproj
C:\git\coreclr\tests\src\JIT\Directed\PREFIX\volatile\1\add.ilproj
warning : Non-nested class has nested visibility (0x00000102), changed to non-nested (0x00000101)
C:\git\coreclr\tests\src\JIT\jit64\regress\vsw\153682\test.ilproj
warning : Reference to undeclared extern assembly '<assembly>'. Attempting autodetect
C:\git\coreclr\tests\src\JIT\Methodical\explicit\misc\_il_dbgrefarg_box_f8.ilproj (System.Console)
C:\git\coreclr\tests\src\JIT\Methodical\explicit\misc\_il_relrefarg_box_f8.ilproj (System.Console)
C:\git\coreclr\tests\src\JIT\Methodical\tailcall_v4\hijacking.ilproj (mscorlib, System.Threading, System.Threading.Thread)
warning : Undefined implementation in ExportedType '<type>' -- ExportType not emitted
C:\git\coreclr\tests\src\JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b32879\b32879.ilproj (HiDad, _vbProject)
C:\git\coreclr\tests\src\JIT\Regression\CLR-x86-JIT\V1-M12-Beta2\b65423\b65423.ilproj (b1904)
warning C4311: 'type cast': pointer truncation from 'void *' to 'unsigned int' (+redundant C4302)
C:\git\coreclr\bin\Native\src\JIT\Directed\pinning\object-pin\mirror.vcxproj
```
Commit migrated from https://github.com/dotnet/coreclr/commit/
32f03c84a8f6cf8dfef2df5b2c725b7ab45c6077
William Godbe [Wed, 10 Feb 2016 18:10:15 +0000 (10:10 -0800)]
Merge pull request dotnet/coreclr#3107 from wtgodbe/reenable
Re-enable previously disabled tests that are now passing on non-Windows platforms
Commit migrated from https://github.com/dotnet/coreclr/commit/
f3a008bf45b6cc8c150afd0416da59a5f23573f8
Jan Kotas [Wed, 10 Feb 2016 16:43:19 +0000 (08:43 -0800)]
Merge pull request dotnet/coreclr#3095 from krytarowski/netbsd-support-38
Add support for Floating Point registers in ucontext_t on NetBSD
Commit migrated from https://github.com/dotnet/coreclr/commit/
bf15d88c416ac70411d33574e0363a4c0f07c24f
Matt Mitchell [Wed, 10 Feb 2016 16:22:10 +0000 (08:22 -0800)]
Merge pull request dotnet/coreclr#3114 from mmitche/switch-to-auto
Switch to auto images
Commit migrated from https://github.com/dotnet/coreclr/commit/
57793e333933e1e00ce9ec00e5c3a9e3cec94410
Matt Mitchell [Wed, 10 Feb 2016 16:21:19 +0000 (08:21 -0800)]
Switch to auto images
Commit migrated from https://github.com/dotnet/coreclr/commit/
017985b332efed6a7f9f46b98c20f754e9b36e8f
Jan Kotas [Wed, 10 Feb 2016 03:06:50 +0000 (19:06 -0800)]
Merge pull request dotnet/coreclr#3110 from jkotas/event-tracing
Make Unix event tracing conditionally enabled
Commit migrated from https://github.com/dotnet/coreclr/commit/
149bc3f66f706ca8df5948a5786689c7b9ce1362
Sivarv [Wed, 10 Feb 2016 01:18:21 +0000 (17:18 -0800)]
Merge pull request dotnet/coreclr#3108 from sivarv/gcstressfix
Fix to gc-stress issue dotnet/coreclr#2921.
Commit migrated from https://github.com/dotnet/coreclr/commit/
26dfefb4e20bdd8050859eb7ffdbc5519757644d
Jan Kotas [Wed, 10 Feb 2016 01:15:06 +0000 (17:15 -0800)]
Make Unix event tracing conditionally enabled
Add condition around the expensive event tracing code to enable it conditionally only if the event tracing is enabled
Commit migrated from https://github.com/dotnet/coreclr/commit/
2cc21909465eeb065aa76deaee4bc83e9d59afcf
Brian Sullivan [Wed, 10 Feb 2016 00:53:57 +0000 (16:53 -0800)]
Merge pull request dotnet/coreclr#3106 from briansull/issue_3032
ARM64: For methods that have very large stack frames we need extra instructions
Commit migrated from https://github.com/dotnet/coreclr/commit/
a13e2ff442bbeebda5cea971f25a1e2b25a9db2e
Brian Sullivan [Tue, 9 Feb 2016 22:07:39 +0000 (14:07 -0800)]
For methods that have very large stack frames we need an extra instruction
to load the offset when encoding the prolog/epilog instructions for funclets
Fixes Issue dotnet/coreclr#3032
Incorporates code review feedback and provides a method called
genInstrWithConstant to handle the cases where we need extra instructions
Updated arm64\Tests.lst with additional tags:
MISSING_EXE, ISSUE_3104, ISSUE_3105 and NEED_TRIAGE
Commit migrated from https://github.com/dotnet/coreclr/commit/
787371b5fe156c6bba444f70e0557cabd846e781
sivarv [Tue, 9 Feb 2016 22:54:14 +0000 (14:54 -0800)]
Fix to gc-stress issue dotnet/coreclr#2921.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fb196db9de2da567abf3b996230991a2042c9f9a
William Godbe [Tue, 9 Feb 2016 22:46:15 +0000 (14:46 -0800)]
Merge pull request dotnet/coreclr#3055 from wtgodbe/serverGC
Re-enable server GC & lengthen timeouts
Commit migrated from https://github.com/dotnet/coreclr/commit/
8d51f9e1fb1006046017c7131d12509a8a1bc00b
William Godbe [Tue, 9 Feb 2016 22:45:47 +0000 (14:45 -0800)]
Re-enable previously disabled tests that are now passing on non-Windows platforms
Commit migrated from https://github.com/dotnet/coreclr/commit/
70be5eb6aed128f755056351de44c2d8b8c81123
William Godbe [Sat, 6 Feb 2016 00:25:51 +0000 (16:25 -0800)]
Re-enable server GC & lengthen timeouts
Commit migrated from https://github.com/dotnet/coreclr/commit/
2bbf9d46f06e80176090df95d9649d107dc2fe1f
Jan Kotas [Tue, 9 Feb 2016 20:24:49 +0000 (12:24 -0800)]
Merge pull request dotnet/coreclr#3100 from AndyAyersMS/FixWarning
Fix const string literal warning
Commit migrated from https://github.com/dotnet/coreclr/commit/
aa5bd5df3eed1e9b29bab847de88e4ec52984d2b
Carol Eidt [Tue, 9 Feb 2016 19:09:52 +0000 (11:09 -0800)]
Merge pull request dotnet/coreclr#3099 from CarolEidt/x86IntArgs
Constant and Popped Args for x86
Commit migrated from https://github.com/dotnet/coreclr/commit/
0cf8cc7b57261eb0908d87ad56207e13320cbd66
Matt Mitchell [Tue, 9 Feb 2016 18:59:11 +0000 (10:59 -0800)]
Merge pull request dotnet/coreclr#3102 from mmitche/add-llitchev-to-allowed
Add llitchev to allowed
Commit migrated from https://github.com/dotnet/coreclr/commit/
a6ccc3a09e0b99e27c4e12ca7cd4ef62adb7ffb1
Matt Mitchell [Tue, 9 Feb 2016 18:27:11 +0000 (10:27 -0800)]
fixup
Commit migrated from https://github.com/dotnet/coreclr/commit/
d8db0bde56b2a4e9f746f1688769467be1bbf18e
Matt Mitchell [Tue, 9 Feb 2016 18:24:13 +0000 (10:24 -0800)]
Update arm triggers to be in line with others
Commit migrated from https://github.com/dotnet/coreclr/commit/
19444cf4dd7dfdb2e1423096239d5a75e0f3ef31
Carol Eidt [Tue, 9 Feb 2016 16:26:08 +0000 (08:26 -0800)]
Constant and Popped Args for x86
Add support for constant arguments,
and handle the case where the callee must pop the stack.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e7fe673b855ed497720fec322cd86b0d8b196e5d
Andy Ayers [Tue, 9 Feb 2016 16:46:16 +0000 (08:46 -0800)]
Fix const string literal warning
This came up during an FI from LLVM, testing LLILC, see microsoft/llvmdotnet/coreclr#140 .
Commit migrated from https://github.com/dotnet/coreclr/commit/
49ee4ba1398aa71ad494e94099d75a7c830b6fe9
Gaurav Khanna [Tue, 9 Feb 2016 06:31:27 +0000 (22:31 -0800)]
Merge pull request dotnet/coreclr#3096 from gkhanna79/MonoCheck
Check for Mono presence until CoreCLR 3090 is fixed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c0e184c8b51f823aa83682fd0f5173d89c8e57f2
Gaurav Khanna [Tue, 9 Feb 2016 04:39:51 +0000 (20:39 -0800)]
Check for Mono presence until CoreCLR 3090 is fixed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
127c86e4b40df00550474a74ef5413b8116c8802
Kamil Rytarowski [Tue, 9 Feb 2016 04:33:02 +0000 (05:33 +0100)]
Add support for Floating Point registers in ucontext_t on NetBSD
This code assumes x86_64 platform and modern fxsave style of FP regs.
i386 Floating Point registers ship with different flavors, what will be
handled once the 64-bit code will be finished.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6cb0c4b86b3490a061c8d54e4226cad6caca83c9
Matt Ellis [Tue, 9 Feb 2016 04:23:23 +0000 (20:23 -0800)]
Merge pull request dotnet/coreclr#3086 from gkhanna79/CIMscorlib
Update CI to no longer request mscorlib build for osx/ubuntu on Windows.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ccae5006c489781fe9e34655f0a78c98788cda26
Jan Kotas [Tue, 9 Feb 2016 04:00:54 +0000 (20:00 -0800)]
Merge pull request dotnet/coreclr#3093 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
f494e8f56a05b12ca45f099bcff42aade91001ef
Jan Kotas [Tue, 9 Feb 2016 03:16:50 +0000 (19:16 -0800)]
Merge pull request dotnet/coreclr#3091 from jkotas/revert-workaround
Revert "Add un-prefixed signatures as temporary workaround"
Commit migrated from https://github.com/dotnet/coreclr/commit/
e7ba948b75160651b7a15ae0654813f05a85ee39
Andy Ayers [Tue, 9 Feb 2016 03:07:30 +0000 (19:07 -0800)]
Merge pull request dotnet/coreclr#3084 from AndyAyersMS/InlineRefactor2b
Inline refactor: revise checks in fgFindJumpTargets
Commit migrated from https://github.com/dotnet/coreclr/commit/
8c57efd7362dc93d1e3d11448be280ca5f370140
Andy Ayers [Tue, 9 Feb 2016 03:07:12 +0000 (19:07 -0800)]
Merge pull request dotnet/coreclr#2905 from AndyAyersMS/NewILTests
Some tests for caller/callee type mismatches
Commit migrated from https://github.com/dotnet/coreclr/commit/
e7ca48d51e8265687a9e06188f440b6164c905be
Andy Ayers [Tue, 9 Feb 2016 01:56:43 +0000 (17:56 -0800)]
Merge pull request dotnet/coreclr#3083 from AndyAyersMS/InlineRefactor2a
Inliner refactoring: inline impAbortInline
Commit migrated from https://github.com/dotnet/coreclr/commit/
01cb1ae96011b577713a1b99901ba39988896cf0
Sivarv [Tue, 9 Feb 2016 01:35:59 +0000 (17:35 -0800)]
Merge pull request dotnet/coreclr#3087 from sivarv/master
Fix to SquareRootUInt16 test failure under JitStress=1/2
Commit migrated from https://github.com/dotnet/coreclr/commit/
ceb0a800ad650a36a32e543146669e9f3654e948
Eugene Rozenfeld [Mon, 8 Feb 2016 23:37:52 +0000 (15:37 -0800)]
Merge pull request dotnet/coreclr#3067 from erozenfeld/MultToShiftVN
Preserve value numbers when morphing multiplication into shift.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f087eb3bc9cae37b444d0b4d0b4487ffd11058bf
Gaurav Khanna (CLR) [Mon, 8 Feb 2016 20:16:01 +0000 (12:16 -0800)]
Update CI to no longer request mscorlib build for osx/ubuntu on Windows.
Commit migrated from https://github.com/dotnet/coreclr/commit/
10a478e3a1311993433c480cacead8c3d8e7e814