Conversation
|
The compiler itself can be built on Win64, but compiling the libs fails for each (?) module due to 'recursive template expansion'. |
|
Alright, compiler and libs build successfully now (incl. self-compile). The single remaining unittest compilation error is due to some sort of forward-referencing or other symbol resolution failure for std.regex. The first dmd-testsuite results are promising. |
Ignore `-mcpu=baseline`, forward `-mcpu=native` to LDC and translate `-mcpu=avx` to `-mattr=+avx`. Show LLVM's (extensive) help for `-mcpu=?` (which is sadly actually printed 3 consecutive times).
Resolves issue #1962.
|
|
||
| if (arch == llvm::Triple::x86 || arch == llvm::Triple::x86_64) { | ||
| if (traitsTargetHasFeature("sse2")) { | ||
| VersionCondition::addPredefinedGlobalIdent("D_SIMD"); |
There was a problem hiding this comment.
D_SIMD refers to the DMD-style __simd opcode interface. (The docs are vague on this. Edit again: https://dlang.org/spec/version.html is clearer.)
There was a problem hiding this comment.
Ah okay, and D_AVX isn't documented at all, but I guess it's just an extension for additional opcodes.
LDC doesn't support DMD's core.simd interface.
|
https://dlang.org/changelog/2.073.0.html says "Add D_AVX predefined version when -mcpu=avx is used", so D_AVX might have been correct. |
|
This concludes propagating the |
|
Update:
|
|
|
DMD passes this not due to emitting stuff as constant, but because it does CSE on strongly pure functions. Actually, the assembly for e.g. the In other words, it copies the pointer to the allocated object to the stack, loads it into another register and then compares the two. Solid. |
|
(Just disabling the test until we implement optimizations on strongly pure functions – if ever – would be fine.) |
|
So DMD caches the first result for all later detected identical invokations of strongly pure functions inside a function? Apparently only when optimizing. Shouldn't/couldn't this be done in the front-end already? At least optionally, in case the compile time/memory footprint impact could become noticeable. |
Conflicts: runtime/phobos
It could certainly be done as a pass over the AST, yes (whether you call that front-end or not). |
Instead of letting our old copy silently go more and more out-of-sync. In this case, we missed the upstream fix wrt. skipping the declaration of ClassInfos for speculative class types. There are 2 noteworthy functional changes for function `getOrCreateTypeInfoDeclaration()`: 1) The old version always overwrote `torig->vtinfo` with `t->vtinfo` when declaring a new TypeInfo, whereas upstream's `genTypeInfo()` only sets it if it was null before. 2) The old version called `semanticTypeInfo()` during a semantic pass, upstream doesn't. The LDC-specific exception for class types in `builtinTypeInfo()` is still required. Fixes dmd-testsuite's runnable/b16278.d.
|
Apparently only remaining issue: |
|
Wow, that
When trying to work around this via explicit import: diff --git a/std/regex/internal/shiftor.d b/std/regex/internal/shiftor.d
index 0a549f4..f3aca3a 100644
--- a/std/regex/internal/shiftor.d
+++ b/std/regex/internal/shiftor.d
@@ -6,7 +6,7 @@ module std.regex.internal.shiftor;
package(std.regex):
-import std.regex.internal.ir;
+import std.regex.internal.ir, std.regex.internal.kickstart : Kickstart;
import std.range.primitives, std.utf;
//utility for shiftOr, returns a minimum number of bytes to test in a Charit then fails with
which makes perfect sense, as the (very similar) base std.regex.internal.kickstart.ShiftOr!char is a struct, not a class!! Pinging @JackStouffer due to dlang/phobos@5a2491a. Apparently there was a |
|
Upstream PR: dlang/phobos#5244 Awaiting some green now. :) |
|
One more |
A ctor (I think I added it for convenience when merging 2.073) means that it's no POD type for C++ anymore. Non-POD structs are expected to be returned via sret etc. Fixes lit-test semantic/target_traits.d for x86 hosts.
Conflicts: tests/d2/dmd-testsuite
|
will it marge 073.2 into ldc 1.2.0 release? |
|
@dushibaiyu: No, 2.073.2 will go into 1.3.x. |
|
@kinke: I can finally reproduce the spurious OS X core.thread issue on my local machine! Investigating… |
|
Ah, the issue seems to occur during garbage collection of stale Seems like it might be related to dlang/druntime#1655, which applied to the |
|
@klickverbot Thanks. |
Yep, this is indeed the same issue. We should probably just move |
|
@kinke: I pushed a patch which should fix the OS X Happy to merge the branch to master after green? |
|
Great that the OSX issue seems to be understood now (although it'll still happen for the shared libs as I understand). |
This specific issue should have been fixed already for shared libraries. |
|
I see, since 2.072. I don't remember whether it was only the static-libs job spuriously failing since 2.072, but we'll find out. |
|
Looking good. I'll cherry-pick the fix onto master before merging 2.073.2 so that 1.2 doesn't (yet) need its own |
|
Okay I'll let you do the merge, then. |
Conflicts: runtime/druntime
Conflicts: runtime/druntime
No description provided.