[Issue 16189] Optimizer bug, with simple test case

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16189

--- Comment #2 from Kirill Kryukov  ---
A possible workaround: change "a--;" into "{ auto a2 = a - 1; a = a2; }".

(This is NOT to suggest that the bug does not need fixing, as it's annoying as
hell that even simplest C-like code does not work correctly.)

As for previous reduction - it hurts my eyes to see size_t (unsigned type)
compared for equality with -1, so I suggest to at least use ptrdiff_t.

--


[Issue 16190] to!string on enum should be fully qualified for consistency

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16190

Timothee Cour  changed:

   What|Removed |Added

 CC||timothee.co...@gmail.com
  Component|dmd |phobos

--


[Issue 16191] New: std/digest/digest.d should be renamed to package.d

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16191

  Issue ID: 16191
   Summary: std/digest/digest.d should be renamed to package.d
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: minor
  Priority: P1
 Component: phobos
  Assignee: nob...@puremagic.com
  Reporter: schvei...@yahoo.com

The fully qualified name of the digest function template
(https://dlang.org/phobos/std_digest_digest.html#digest) is
std.digest.digest.digest. This is because std.digest is a package, with a
module named digest in it, and the function digest inside that.

I think it's reasonable to have std.digest.digest. Even though there's
repetition, it's clear that the first digest is a module, the second is a
function name. But there's no reason (especially with the advent of package.d)
to have a std.digest.digest module.

--


[Issue 16190] to!string on enum should be fully qualified for consistency

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16190

b2.t...@gmx.com changed:

   What|Removed |Added

 CC||b2.t...@gmx.com
   Hardware|x86 |All
 OS|Mac OS X|All

--- Comment #1 from b2.t...@gmx.com ---
I think that any fix directly in to() can break a lot of code because currently
to!string and to!E work together. I'm sure that it's already used as it is now
by many people.

The fix, if any, should maintain the old behvior and allow to get the
identifier when explicitly needed, for example:

auto toImpl(T, S, bool fq = false)(auto ref E e)
if (is(S == enum) && is(T==string))
{}

with "fq" a CT bool that indicates if the output includes the "enum
identifier".
"Fully qualified" would mean that even the module name would be included so I
suppose that what you want is actually the enum identifier.



By the way why do you report this as a dmd (and not phobos) issue ?

--


[Issue 16189] Optimizer bug, with simple test case

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16189

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||wrong-code
 CC||ag0ae...@gmail.com
 OS|Windows |All

--- Comment #1 from ag0ae...@gmail.com ---
Slightly more reduced:


void main()
{
ubyte[9][1] data;
size_t a = 0;
loop:
data[0] = data[a];
a--;
bool b = false;
if (b) goto loop;
assert(a == -1); // Fails with -O
}


Also happens on Linux.

--


[Issue 16188] [REG2.069] ICE on invalid code

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16188

ag0ae...@gmail.com changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com
Summary|ICE on invalid code |[REG2.069] ICE on invalid
   ||code

--- Comment #1 from ag0ae...@gmail.com ---
Reduced further:


void where() { Where().name; }

struct Where
{
void opDispatch(string name)()
{
alias FieldType = typeof(getMember);
WhereField!FieldType;
}
}

struct WhereField(FieldType) {}


Doesn't segfault with 2.068.2 and earlier.

--


[Issue 16190] New: to!string on enum should be fully qualified for consistency

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16190

  Issue ID: 16190
   Summary: to!string on enum should be fully qualified for
consistency
   Product: D
   Version: D2
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: major
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: timothee.co...@gmail.com

enum A{
  a1,
  a2,
}

struct B{
  A b1;
  string b2;
  int c3;
}

import std.conv:to;

void main(){
  auto b=B(A.a1, "foo", 13);
  enum b_string=`B(a1, "foo", 13)`;
  assert(b.to!string == b_string);
  mixin(`auto b1=B(A.a1, "foo", 13);`);//works
  //mixin(`auto b2=`~b_string~`;`);//Error: undefined identifier 'a1'
}

Pretty much every type in D works when reconstructing as I did above:
mixin(`auto b2=`~b.to!string~`;`);
except when there's an enum type somewhere inside

What's a workaround?

--


[Issue 13572] etc.c.zlib must be nothrow

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=13572

--- Comment #4 from Ketmar Dark  ---
(In reply to Steven Schveighoffer from comment #2)
> PR does not mark everything @trusted, that is not a good idea. So that part
> is WONTFIX. nothrow is correct.

i'd prefer it to have `@trusted` too, but... ok, it's not an issue, i can mark
my wrappers `@trusted` instead. thanks. ;-)

--


[Issue 13572] etc.c.zlib must be nothrow

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=13572

--- Comment #3 from github-bugzi...@puremagic.com ---
Commits pushed to master at https://github.com/dlang/phobos

https://github.com/dlang/phobos/commit/0ae7812969c5d763b0cf133e75dd488845a93ca4
Fix Issue 13572: etc.c.zlib must be nothrow

https://github.com/dlang/phobos/commit/968329fc75fffc5e96f0ac108921bfa011d8407a
Merge pull request #4451 from JackStouffer/patch-10

Fix Issue 13572: etc.c.zlib must be nothrow

--


[Issue 13572] etc.c.zlib must be nothrow

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=13572

Steven Schveighoffer  changed:

   What|Removed |Added

 CC||schvei...@yahoo.com

--- Comment #2 from Steven Schveighoffer  ---
PR does not mark everything @trusted, that is not a good idea. So that part is
WONTFIX. nothrow is correct.

--


[Issue 16189] Optimizer bug, with simple test case

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16189

Kirill Kryukov  changed:

   What|Removed |Added

 CC||kkryu...@gmail.com

--


[Issue 16189] New: Optimizer bug, with simple test case

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16189

  Issue ID: 16189
   Summary: Optimizer bug, with simple test case
   Product: D
   Version: D2
  Hardware: x86_64
OS: Windows
Status: NEW
  Severity: critical
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: kkryu...@gmail.com

Consider this code:
=== a.d ===
struct T { long a, b; }
T[] data = [{0,0}];
void main()
{
int a = 0;
for (int i = 0; i >= 0; i--)
{
data[0] = data[a];
a--;
}
assert(a == -1); // Fails with -O
}
=== end ===

Fails when built with "-O", succeeds without "-O". The full command line:
dmd a.d -ofa.exe -O
dmd a.d -ofb.exe

Windows 7, dmd 2.071.0

If you add "-m64" to dmd command, the bug disappears, but re-appears if "int a"
is changed to "long a".

Reduced from a large project with the help of dustmite and a lot of "WTF!".

--


[Issue 13572] etc.c.zlib must be nothrow

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=13572

Jack Stouffer  changed:

   What|Removed |Added

 CC||j...@jackstouffer.com

--- Comment #1 from Jack Stouffer  ---
https://github.com/dlang/phobos/pull/4451

--


[Issue 15704] @safe code should not allow copying to/from void[]

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=15704

--- Comment #6 from github-bugzi...@puremagic.com ---
Commits pushed to master at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/378e6e3ff01e8e1afd5b5bb97d259ae68918ef9e
fix Issue 15704 - @safe code should not allow copying to/from void[]

https://github.com/dlang/dmd/commit/8ed696695c913234d7bed276215c9dcae8a9cc66
Merge pull request #5877 from WalterBright/fix15704

fix Issue 15704 - @safe code should not allow copying to/from void[]

--


[Issue 15704] @safe code should not allow copying to/from void[]

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=15704

github-bugzi...@puremagic.com changed:

   What|Removed |Added

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

--


[Issue 16188] ICE on invalid code

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16188

greensunn...@gmail.com changed:

   What|Removed |Added

URL|http://dlang.org/   |
 CC||greensunn...@gmail.com
Summary|[Home]  |ICE on invalid code

--


[Issue 16188] [Home]

2016-06-21 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16188

Sobirari Muhomori  changed:

   What|Removed |Added

   Keywords||ice-on-invalid-code

--