<div dir="ltr">Hello,<div>  I recently started using compiler-rt/lib/profile for Instrumentation-based PGO in LDC (LLVM D Compiler), but ran into two issues with the code on Windows:</div><div>(1) The code does not compile with MSVC because of "__attribute__"<br></div><div><div>(2) The file written by InstrProfilingFile.c is in a corrupt format on Windows</div></div><div><br></div><div><br></div><div>(1) is easily fixed, and I will submit a patch in a second email.</div><div><br></div><div><br></div><div>(2) The file is corrupt because the file is opened in text mode with fopen(..., "a"), instead of in binary mode fopen(..., "ab"). With MSVC, this means that fwrite will silently add bytes to "fix" line-endings (i.e. 0x0A --> 0x0D 0x0A) !</div><div>The bug fix is trivial: open the file explicitly in binary mode.</div><div><br></div><div>I have attached a patch for the release_37 branch (I much appreciate it if it can be committed, because I currently use this version of /lib/profile successfully for PGO in LDC), and I have also attached a patch for trunk.</div><div><br></div><div>(btw, thanks for the work on /lib/profile! It made it very easy to add PGO to LDC and worked flawlessly on OS X and Ubuntu!)</div><div><br></div><div>Cheers,</div><div>  Johan</div><div><br></div></div>