Subject: bug#16304: Upcoming clang-3.4 apparently miscompiles coreutils.

From: Andrew Trick <[email-masked]>
Date: Tue, 31 Dec 2013 11:12:15 -0800

On Dec 30, 2013, at 1:47 PM, Markus Trippelsdorf <[email-masked]> wrote:

> On 2013.12.30 at 18:47 +0000, Pádraig Brady wrote:
>> On 12/30/2013 12:32 PM, Markus Trippelsdorf wrote:
>>> coreutils-8.22 build with clang-3.4 doesn't copy permissions correctly:
>>> 
>>> markus@x4 tmp % touch test1
>>> markus@x4 tmp % chmod 600 test1
>>> markus@x4 tmp % ls -al test1
>>> -rw------- 1 markus markus 0 Dec 30 13:25 test1
>>> markus@x4 tmp % /var/tmp/coreutils-8.22/src/cp test1 test2
>>> markus@x4 tmp % ls -al test2
>>> ---------- 1 markus markus 0 Dec 30 13:25 test2
>>> markus@x4 tmp %
>> 
>> Ouch.
>> 
>> Note as part of the 8.22 release process
>> I did verify that `make check` passed with
>> clang-3.3-3.fc20.x86_64
>> 
>> I've again verified that clang-3.3 passes your test above.
>> 
>> Can you pinpoint the erroneous code?
>> It does seem like a clang regression TBH.
> 
> Started with LLVM r192750 (Enable MI Sched for x86).
> I've opened a LLVM bug here:
> http://llvm.org/bugs/show_bug.cgi?id=18346
> 
> (I will try to come up with a testcase after the holidays)

To determine whether a bug exists in MI scheduler pass (or downstream) you can do this:
-mllvm -enable-misched=false.

Duncan committed a post-3.4 fix, r197503, for a varargs bug exposed by changes to the SD scheduling policy.

-Andy