http://d.puremagic.com/issues/show_bug.cgi?id=5790

           Summary: "Error: variable result used before set" when -release
                    -inline -O
           Product: D
           Version: D2
          Platform: x86
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: jo...@rovira.cat


--- Comment #0 from Jordi Rovira i Bonet <jo...@rovira.cat> 2011-03-28 05:54:10 
PDT ---
When compiling the following code with 

dmd -c -release -inline -O resource.d

I get the message "Error: variable result used before set" without any line
information, and compilation fails.

This happens only with the flags above. Removing any of them, or compiling in
debug results in good output. I have verified that this error happens both in
linux and windows, with dmd 2.052 and since many versions ago. 

<Speculation>
Even GDC crashes compiling this code in release, which makes me think it is in
the front end.

<Data>
I have removed everything i could, and now the code doesn't make much sense,
but the file resource.d is:

module     bug;

import     std.c.string;

class InputStream
{
public:

    InputStream opShr(T)( out T result )
    {
        memcpy( &result, &m_data[m_pos], T.sizeof );
        m_pos += T.sizeof;

        return this;
    } 

    int m_pos;
    const ubyte[] m_data;
}

struct GUID
{
    uint m_values[4];
};

struct Header
{
    int ver;
    int siz;
    GUID id;
}

void LoadResourceLegacyHeader( InputStream f, out Header header )
{
    f >> header.id;
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to