[Issue 23089] Linkage-related ICE regression in v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23089

Dlang Bot  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #3 from Dlang Bot  ---
@ibuclaw created dlang/dmd pull request #14074 "fix Issue 23089 -
Linkage-related ICE regression in v2.100.0-rc.1" fixing this issue:

- fix Issue 23089 - Linkage-related ICE regression in v2.100.0-rc.1

https://github.com/dlang/dmd/pull/14074

--


[Issue 23090] New: Allocators should not use NullAllocator as a sentinel type

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23090

  Issue ID: 23090
   Summary: Allocators should not use NullAllocator as a sentinel
type
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: phobos
  Assignee: nob...@puremagic.com
  Reporter: snarwin+bugzi...@gmail.com

Several allocators in std.experimental.allocator have special-case behavior
when instantiated using the specific type `NullAllocator`.

A non-exhaustive list:

* Region: "If ParentAllocator is different from NullAllocator, Region
deallocates the chunk of memory during destruction." [1]

* ContiguousFreeList: "The block is assumed to have been allocated with
ParentAllocator, and is released in ContiguousFreeList's destructor (unless
ParentAllocator is NullAllocator)." [2]

* AllocatorList: "If BookkeepingAllocator is NullAllocator, then AllocatorList
is "ouroboros-style", i.e. it keeps the bookkeeping data in memory obtained
from the allocators themselves." [3]

It is clear from these examples that the type `NullAllocator` is being used as
a sentinel to indicate the *absence* of an allocator, rather than for its
actual documented purpose of being an allocator that is always out of memory.

This abuse of NullAllocator has two undesirable consequences:

1. Users who want NullAllocator's out-of-memory behavior must define their own
version with a different name, rather than using NullAllocator directly.
2. Readers of the std.experimental.allocator documentation are likely to come
away confused about NullAllocator's purpose.

[1]
https://dlang.org/library/std/experimental/allocator/building_blocks/free_list/contiguous_free_list.html
[2]
https://dlang.org/library/std/experimental/allocator/building_blocks/free_list/contiguous_free_list.html
[3]
https://dlang.org/library/std/experimental/allocator/building_blocks/allocator_list/allocator_list.html

--


[Issue 23083] .tupleof on static array rvalue evaluates expression multiple times

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23083

Dlang Bot  changed:

   What|Removed |Added

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

--- Comment #2 from Dlang Bot  ---
dlang/dmd pull request #14068 "Fix Issue 23083 - .tupleof on static array
rvalue evaluates expressio…" was merged into stable:

- 76710fd0143f6b97c930be319f777af4bf1c29ca by Paul Backus:
  Fix Issue 23083 - .tupleof on static array rvalue evaluates expression
multiple times

https://github.com/dlang/dmd/pull/14068

--


[Issue 23088] spurious case of "`expression` has no effect"

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23088

--- Comment #1 from Basile-z  ---
-we

--


[Issue 23084] [REG 2.080] dmd: src/dmd/backend/cgxmm.d:816: Assertion `0' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23084

Dlang Bot  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #9 from Dlang Bot  ---
@ljmf00 updated dlang/dmd pull request #14058 "fix(backend): define XMM
load/store codegen for short type variants" fixing this issue:

- fix(backend): define XMM load/store codegen for short type variants

  The codegen try to generate optimized calls with XMM opcodes but fail to
  do it.  This patch adds logic to generate XMM load/store opcodes for
  TYshort,TYushort. It also adds tests for previous similar ICEs.

  Fix issue 23077, 23084.

  Reference: https://issues.dlang.org/show_bug.cgi?id=23077
  Reference: https://issues.dlang.org/show_bug.cgi?id=23084
  Reference:
https://github.com/AuburnSounds/intel-intrinsics/commit/047e9f01ae4092600f99abab1a34e32db26b3a4f
  Signed-off-by: Luís Ferreira 

https://github.com/dlang/dmd/pull/14058

--


[Issue 23089] Linkage-related ICE regression in v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23089

Iain Buclaw  changed:

   What|Removed |Added

 CC||ibuc...@gdcproject.org

--- Comment #2 from Iain Buclaw  ---
Introduced by https://github.com/dlang/dmd/pull/13942

--


[Issue 23089] Linkage-related ICE regression in v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23089

--- Comment #1 from kinke  ---
Oh, even shorter: `extern(System) int a;`

--


[Issue 23089] New: Linkage-related ICE regression in v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23089

  Issue ID: 23089
   Summary: Linkage-related ICE regression in v2.100.0-rc.1
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: regression
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: ki...@gmx.net

This crashes v2.100.0-rc.1+:

```
extern(System):

alias F = void function(int);
F f;
```

Output:
```
linkage = 6, vd = variable f @ [current.d(4)]
Illegal instruction
```

--


[Issue 23088] spurious case of "`expression` has no effect"

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23088

Basile-z  changed:

   What|Removed |Added

Summary|spurious case of|spurious case of
   |"`expression`" has no   |"`expression` has no
   |effect  |effect"

--


[Issue 23087] getLinkage trait regression for overloads with v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23087

Dlang Bot  changed:

   What|Removed |Added

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

--- Comment #3 from Dlang Bot  ---
dlang/dmd pull request #14072 "fix Issue 23087 - getLinkage trait regression
for overloads with v2.100.0-rc.1" was merged into stable:

- 8672c13e0aabba38773847e37d0b9a787557450c by Iain Buclaw:
  fix Issue 23087 - getLinkage trait regression for overloads with
v2.100.0-rc.1

https://github.com/dlang/dmd/pull/14072

--


[Issue 23086] spurious case of `expression has no effect` message

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23086

--- Comment #3 from Basile-z  ---
`a` was supposed to return a global, closed an opened
https://issues.dlang.org/show_bug.cgi?id=23088 for less confusion.

--


[Issue 23087] getLinkage trait regression for overloads with v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23087

Dlang Bot  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #2 from Dlang Bot  ---
@ibuclaw created dlang/dmd pull request #14072 "fix Issue 23087 - getLinkage
trait regression for overloads with v2.100.0-rc.1" fixing this issue:

- fix Issue 23087 - getLinkage trait regression for overloads with
v2.100.0-rc.1

https://github.com/dlang/dmd/pull/14072

--


[Issue 23088] New: spurious case of "`expression`" has no effect

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23088

  Issue ID: 23088
   Summary: spurious case of "`expression`" has no effect
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Keywords: diagnostic, rejects-valid
  Severity: normal
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: b2.t...@gmx.com

For the following code

```
static int v;

extern(C) int rand();

ref int a()
{
return v = rand();
}

int main()
{
a == 0;
return v ? 1 : 0;
} 
```

we get, with -de, the output

> /tmp/temp_7F3C12CCD670.d:12:5: Error: `a() == 0` has no effect

but the effect of the call directly influences the return code of the program.

The compiler, by digging in the nested expressions could determine that it
contains one call to an impure function and consequently allow (or not warn)
about the comparison.

--


[Issue 23086] spurious case of `expression has no effect` message

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23086

Basile-z  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |INVALID

--


[Issue 23087] getLinkage trait regression for overloads with v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23087

Iain Buclaw  changed:

   What|Removed |Added

 CC||ibuc...@gdcproject.org

--- Comment #1 from Iain Buclaw  ---
Introduced by https://github.com/dlang/dmd/pull/13942

--


[Issue 23086] spurious case of `expression has no effect` message

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23086

--- Comment #2 from Basile-z  ---
the check should dig in the sub expressions and take in account if they contain
impure calls, in which case the message should not be emitted.

--


[Issue 23087] getLinkage trait regression for overloads with v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23087

kinke  changed:

   What|Removed |Added

   Keywords||industry

--


[Issue 23087] New: getLinkage trait regression for overloads with v2.100.0-rc.1

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23087

  Issue ID: 23087
   Summary: getLinkage trait regression for overloads with
v2.100.0-rc.1
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: regression
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: ki...@gmx.net

```
struct S {
this(bool) {}
this(bool, int) {}
}

static foreach (ctor; __traits(getOverloads, S, "__ctor"))
pragma(msg, "'", __traits(getLinkage, ctor), "'");
```

Output with v2.100.0-rc.1:
''
'D'

With v2.099.1:
'D'
'D'

--


[Issue 23086] spurious case of `expression has no effect` message

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23086

--- Comment #1 from Basile-z  ---
also `ref int a()` is not `pure`

--


[Issue 23086] New: spurious case of `expression has no effect` message

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23086

  Issue ID: 23086
   Summary: spurious case of `expression has no effect` message
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Keywords: diagnostic, rejects-valid
  Severity: normal
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: b2.t...@gmx.com

For the following code

```
static int v;

ref int a()
{
a++;
return a;
}

int main()
{
a == 0;
return v ? 0 : 1;
}
```

we get, with -de, the output

> /tmp/temp_7F3C12CCD670.d:15:5: Error: `a() == 0` has no effect

but the effect of the call directly influences the return code of the program.

--


[Issue 23085] [ICE] dmd: src/dmd/backend/cod1.d:1933: Assertion `retregs & BYTEREGS' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23085

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--


[Issue 23085] [ICE] dmd: src/dmd/backend/cod1.d:1933: Assertion `retregs & BYTEREGS' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23085

Iain Buclaw  changed:

   What|Removed |Added

   See Also||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=23084

--


[Issue 23084] [REG 2.080] dmd: src/dmd/backend/cgxmm.d:816: Assertion `0' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23084

Iain Buclaw  changed:

   What|Removed |Added

   See Also||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=23085

--


[Issue 23084] [REG 2.080] dmd: src/dmd/backend/cgxmm.d:816: Assertion `0' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23084

--- Comment #8 from Iain Buclaw  ---
Similar, but using byte vector.  Only triggers in debug builds.
---
__vector(int[4]) _mm_packs_epi32 (__vector(int[4]) a) {
__vector(byte[16]) r = cast(byte)(a.array[0]);
return cast(__vector(int[4]))r;
}

--


[Issue 23085] [ICE] dmd: src/dmd/backend/cod1.d:1933: Assertion `retregs & BYTEREGS' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23085

Iain Buclaw  changed:

   What|Removed |Added

   Keywords||backend
 CC||ibuc...@gdcproject.org

--


[Issue 23077] codegen cannot generage XMM load/store for optimized operation that uses byte/short/...

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23077

Iain Buclaw  changed:

   What|Removed |Added

   Keywords||backend
   See Also||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=23085

--


[Issue 23085] [ICE] dmd: src/dmd/backend/cod1.d:1933: Assertion `retregs & BYTEREGS' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23085

Iain Buclaw  changed:

   What|Removed |Added

   See Also||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=23077

--


[Issue 23085] New: [ICE] dmd: src/dmd/backend/cod1.d:1933: Assertion `retregs & BYTEREGS' failed.

2022-05-04 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=23085

  Issue ID: 23085
   Summary: [ICE] dmd: src/dmd/backend/cod1.d:1933: Assertion
`retregs & BYTEREGS' failed.
   Product: D
   Version: D2
  Hardware: x86_64
OS: Linux
Status: NEW
  Severity: critical
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: ibuc...@gdcproject.org

float bug(float x) {
byte i = *cast(byte*)
++i;
return *cast(float*)
}

--