Taylor,

I can report that the performance looks to be in the ballpark of parity with 
gcc when we move from clang 8.0 to 11.0 rc2.   Perhaps we can attribute this to 
a since-fixed defect in clang?

-Brian

From: Taylor Simpson <tsimp...@quicinc.com>
Sent: Monday, August 24, 2020 11:54 AM
To: qemu-devel@nongnu.org
Cc: Brian Cain <bc...@quicinc.com>
Subject: Known issue? qemu is much slower when built with clang vs gcc

We're seeing significant slowdowns when we build qemu with clang instead of 
gcc.  I'm hoping this is a known issue and there is a workaround or fix.  
Please advise.

I have an example where qemu is 29X slower when built with clang.  My first 
hunch was that there was something different happening in configure (e.g., 
passing -O0 to clang instead of -O2).  However, I have ruled this out.

Further investigation shows that we are calling the translator more often.  The 
same code is getting translated multiple times.  So, my current theory is some 
different behavior in the translation block hashing causing the lookup not to 
find existing translations.  I know clang can be overly aggressive about 
optimizing undefined behavior.  So, I turned on clang's undefined behavior 
sanitizer.  Interestingly, it did not report anything, *and* we don't see the 
large performance difference.

Thanks,
Taylor

Reply via email to