[Issue 12051] New: Code generation issue on x86-64
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Fri Jan 31 15:44:54 PST 2014
    
    
  
https://d.puremagic.com/issues/show_bug.cgi?id=12051
           Summary: Code generation issue on x86-64
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: yazan.dabain at gmail.com
--- Comment #0 from yazan.dabain at gmail.com 2014-01-31 15:44:51 PST ---
A wrong code issue was found in DCD project commit e7f3952.
The code where the compiler fails to produce correct code is in
astconverter.d:558
  foreach (i, s; importInfo.importParts)
  {
    immutable kind = i + 1 < importInfo.importParts.length ?
                     CompletionKind.packageName : CompletionKind.moduleName;
    // Begin compiler bug workaround (this is part of the next commit, not
e7f3952)
    if (kind == 'L') std.stdio.writeln("ERROR ", kind);
    ...
   }
CompletionKind is a char enum (located in messages.d),
CompletionKind.packageName = 'P', CompletionKind.moduleName = 'M'
--------------------------------------------------
The assembly produced for this part of the code:
lea    0x1(%rbx),%rcx   
cmp    -0x1c0(%rbp),%rcx
sbb    %rsi,%rsi        
and    $0x3,%dh               <---------- wrong register, should be sil, not dh
add    $0x4d,%sil       
This code is the same on commit e7f3952 in an optimized build and on commit
2745763 in a non-optimized build.
However it is different in an optimized for commit 2745763.
The optimized code is:
lea    0x1(%r12),%rcx
cmp    -0xa0(%rbp),%rcx
sbb    %r13,%r13
and    $0x3,%r13b
add    $0x4d,%r13b
The code in the optimized build doesn't have the issue. And it runs as
expected.
--------------------------------------------------
Original discussion https://github.com/Hackerpilot/DCD/issues/92
-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
    
    
More information about the Digitalmars-d-bugs
mailing list