[Issue 17638] A pragma inside a function body is seen as a statement

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17638

--- Comment #3 from Nicholas Wilson  ---
void main(){
pragma(mangle, "aaa") __gshared int a = 1; // Is a declaration, incorrectly
marked as a pragma statement.
}

see issue 19149.

--


[Issue 17638] A pragma inside a function body is seen as a statement

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17638

Nicholas Wilson  changed:

   What|Removed |Added

 CC||iamthewilsona...@hotmail.co
   ||m

--- Comment #2 from Nicholas Wilson  ---
*** Issue 19149 has been marked as a duplicate of this issue. ***

--


[Issue 19149] pragma(mangle, "...") does not work for function local __gshared variables

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19149

Nicholas Wilson  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #2 from Nicholas Wilson  ---


*** This issue has been marked as a duplicate of issue 17638 ***

--


[Issue 19149] pragma(mangle, "...") does not work for function local __gshared variables

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19149

--- Comment #1 from Nicholas Wilson  ---
duplicate of https://issues.dlang.org/show_bug.cgi?id=17638

--


[Issue 19192] DMD generates invalid code for covariants for some interface <- abstract class <- class hierarchies

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19192

Puneet Goel  changed:

   What|Removed |Added

Summary|DMD generates invalid code  |DMD generates invalid code
   |for covariants involving|for covariants for some
   |template classes|interface <- abstract class
   ||<- class hierarchies

--


[Issue 19192] DMD generates invalid code for covariants involving template classes

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19192

ag0aep6g  changed:

   What|Removed |Added

   Keywords||wrong-code
 CC||ag0ae...@gmail.com

--- Comment #1 from ag0aep6g  ---
Reduced:


interface Foo
{
Foo troll();
}

abstract class Barbee : Foo {}

class Bar : Barbee
{
Bar troll() { return this; }
}

void main()
{
Foo foo = new Bar;
assert(foo is foo.troll); /* Fails. Should pass. */
}


--


[Issue 1197] "static if" + enum.max/enum.min doesn't compile (D1 only)

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=1197

ag0aep6g  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||ag0ae...@gmail.com
 Resolution|FIXED   |---

--- Comment #7 from ag0aep6g  ---
(In reply to Stefan Koch from comment #6)
> Compiles since as of 2.068 ... maybe even sooner

You seem to have missed the "(D1 only)" part. Reopening. (It may be time to
just close all D1 bugs as WONTFIX, though.)

--


[Issue 340] [Tracker] Forward reference bugs and other order-of-declaration issues

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=340
Issue 340 depends on issue 1197, which changed state.

Issue 1197 Summary: "static if" + enum.max/enum.min doesn't compile (D1 only)
https://issues.dlang.org/show_bug.cgi?id=1197

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |---

--


[Issue 19199] Use core.bitops intrinsics during CTFE

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19199

--- Comment #1 from Nathan S.  ---
Pull request: https://github.com/dlang/dmd/pull/8627

--


[Issue 19199] New: Use core.bitops intrinsics during CTFE

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19199

  Issue ID: 19199
   Summary: Use core.bitops intrinsics during CTFE
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: n8sh.second...@hotmail.com

Currently in `dmd.builtin` there are software implementations of `core.bitop`
functions within `eval_bsf`, `eval_bsr`, `eval_bswap`, and `eval_popcnt`. With
DMD written in D this is unnecessary: they can use `core.bitop`.

--


[Issue 19198] Transfer the entire development DMD to LLVM: WebAssembly, dynamic scripting..

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19198

anonymous4  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #2 from anonymous4  ---
DMD frontend with LLVM backend is released as LDC compiler:
https://github.com/ldc-developers/ldc/releases/tag/v1.11.0

--


[Issue 1197] "static if" + enum.max/enum.min doesn't compile (D1 only)

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=1197

Stefan Koch  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||uplink.co...@gmail.com
 Resolution|--- |FIXED

--- Comment #6 from Stefan Koch  ---
Compiles since as of 2.068 ... maybe even sooner

--


[Issue 340] [Tracker] Forward reference bugs and other order-of-declaration issues

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=340
Issue 340 depends on issue 1197, which changed state.

Issue 1197 Summary: "static if" + enum.max/enum.min doesn't compile (D1 only)
https://issues.dlang.org/show_bug.cgi?id=1197

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--


[Issue 19198] Transfer the entire development DMD to LLVM: WebAssembly, dynamic scripting..

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19198

--- Comment #1 from OlegZ  ---
SPIR-V (bytecode of Vulkan API and OpenCL) can be translated to LLVM and back
https://github.com/KhronosGroup/SPIRV-LLVM
LLVM can generate code for AMD/NVIDIA extension cards (graphics, math..)

--


[Issue 19198] New: Transfer the entire development DMD to LLVM: WebAssembly, dynamic scripting..

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19198

  Issue ID: 19198
   Summary: Transfer the entire development DMD to LLVM:
WebAssembly, dynamic scripting..
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: blac...@bk.ru

I am noob of LLVM.

1) LLVM allow use any subset of Analytic and Transfer Passes
https://releases.llvm.org/6.0.0/docs/Passes.html
GCC(DMD backend?) is blackbox, LLVM - white box where u can
insert/delete/update any Passes for any hardware.

2) LLVM can generate WebAssembly code - big frontend area, probably server too. 
translation LLVM-IR to WASM can be used from any opensource team: LLVM, Rust,
Go... U don't need waste time for it.

3) LDC already supports dynamic compilation for some functions. 
Team can add runtime scripts do D in future. 
see Terra language with Lua integration. 
yep, Lua is scripting and Terra is script inside Lua. 
Lua has one runtime(LUA), Terra has another runtime(LLVM) - they should
cooperate and this step adds more complications inside RT. 
D-LLVM-scripts can work in one runtime and GC. 
at this PDF author of Terra says about lang and optimizations
https://cs.stanford.edu/~zdevito/zdevito_thesis.pdf. Look at chapter 5 where 50
lines of Terra code can compared by speed with thousands LOC of BLAS and MKL -
libs that solve linear system of equations. Such simplicity would not be
available without LLVM.
Runtime scripts are needed in many areas - games, graphic editors (shaders),
REPL/shell, finance (trading/backtesting).. Even Qt/QML has no good interop
between itself. C#/Java has good scripting interop and probably that all.

4) I can't imagine how many bonuses can be with using LLVM. 
search ideas at internet/blogs and known persons from any lang-teams that use
LLVM. union of LLVM and D can add features to both areas: D-team can improve
LLVM passes/code/lib and people that worked LLVM can add incredible
possibilities to D-lang/runtime

--


[Issue 19175] @safe code can escape local array references

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19175

ag0aep6g  changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com

--- Comment #7 from ag0aep6g  ---
(In reply to anonymous4 from comment #6)
> Same for pointers:
[...]

Resolving the templates shows that this is related to `pure`:


@safe:

struct A
{
int* r;
this(int* q) pure { r = q; }
}

int* escape(int* r) pure
{
return A(r).r;
}

int* f()
{
int x;
return escape(&x);
}


--


[Issue 19175] @safe code can escape local array references

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19175

--- Comment #6 from anonymous4  ---
Same for pointers:

@safe:

struct A(T)
{
int* r;
this(int* q){r=q;}
}

int* escape(T)(int* r)
{
return A!int(r).r;
}

int* f()
{
int x;
return escape!int(&x);
}

--


[Issue 19194] version for `-mscrtlib` specification

2018-08-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19194

--- Comment #2 from Manu  ---
I have work-arounds in place. Work-arounds aren't confidence inspiring.
Shit needs to just-work right ;)

I figure settings a version for the selected crtlib offers the most
information, and guarantees that we won't need any other distinction material
at any later time.

--