www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23102] New: pinholeopt, "Conditional jump or move depends on

https://issues.dlang.org/show_bug.cgi?id=23102

          Issue ID: 23102
           Summary: pinholeopt, "Conditional jump or move depends on
                    uninitialised value(s)"
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: b2.temp gmx.com

`to!string` on `string[]` seems to cause a memory error in pinholeopt

```test.d
module test;

import std.conv;

class Foo
{
    static string staticString;
    static void test(string[] a){
        staticString = to!string(a);
    }
}

void main()
{
    Foo.test([""]);
}  
```

```
valgrind dmd test.d
```

 ==1171031== Memcheck, a memory error detector
 ==1171031== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
 ==1171031== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
 ==1171031== Command: dmd test.d
 ==1171031== 
 ==1171031== Conditional jump or move depends on uninitialised value(s)
 ==1171031==    at 0x4D2D65: pinholeopt(code*, block*) (in /usr/bin/dmd)
 ==1171031==    by 0x509930: codgen(Symbol*) (in /usr/bin/dmd)
 ==1171031==    by 0x550BAA: writefunc2(Symbol*) (in /usr/bin/dmd)
 ==1171031==    by 0x550487: writefunc(Symbol*) (in /usr/bin/dmd)
 ==1171031==    by 0x249186: FuncDeclaration_toObjFile(FuncDeclaration*, bool)
> (in /usr/bin/dmd)
 ==1171031==    by 0x250360: toObjFile::ToObjFile::visit(TemplateInstance*) (in
> /usr/bin/dmd)
 ==1171031==    by 0x2748F1: genObjFile(Module*, bool) (in /usr/bin/dmd)
 ==1171031==    by 0x273A49:
_D3dmd4glue20generateCodeAndWriteFACQBi7dmodule6ModuleAPxaAxaQdbbbbbZv (in
/usr/bin/dmd)
 ==1171031==    by 0x46D6E5: _D3dmd4mars7tryMainFmPPxaKSQz7globals5ParamZi (in
> /usr/bin/dmd)
 ==1171031==    by 0x4748FD: _Dmain (in /usr/bin/dmd)
 ==1171031==    by 0x5A1587: _D2rt6dmain212_d_run_main2UAAamPUQgZiZ6runAllMFZv
> (in /usr/bin/dmd)
 ==1171031==    by 0x5A1484: _d_run_main2 (in /usr/bin/dmd)
 ==1171031== 
 ==1171031== 
 ==1171031== HEAP SUMMARY:
 ==1171031==     in use at exit: 132,007,920 bytes in 177,642 blocks
 ==1171031==   total heap usage: 230,785 allocs, 53,143 frees, 140,442,533
bytes allocated
 ==1171031== 
 ==1171031== LEAK SUMMARY:
 ==1171031==    definitely lost: 1,941,960 bytes in 31,054 blocks
 ==1171031==    indirectly lost: 742,311 bytes in 23,006 blocks
 ==1171031==      possibly lost: 8,142,415 bytes in 8,665 blocks
 ==1171031==    still reachable: 121,181,234 bytes in 114,917 blocks
 ==1171031==                       of which reachable via heuristic:
 ==1171031==                         multipleinheritance: 17,824,704 bytes in
17 blocks
 ==1171031==         suppressed: 0 bytes in 0 blocks
 ==1171031== Rerun with --leak-check=full to see details of leaked memory
 ==1171031== 
 ==1171031== Use --track-origins=yes to see where uninitialised values come from
 ==1171031== For lists of detected and suppressed errors, rerun with: -s
 ==1171031== ERROR SUMMARY: 12 errors from 1 contexts (suppressed: 0 from 0)
--
May 11 2022