[llvm-dev] Comparing Clang and GCC: only clang stores updated value in each iteration. (original) (raw)
Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Thu Sep 20 12:34:43 PDT 2018
- Previous message: [llvm-dev] Comparing Clang and GCC: only clang stores updated value in each iteration.
- Next message: [llvm-dev] Comparing Clang and GCC: only clang stores updated value in each iteration.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 9/20/2018 6:52 AM, Jonas Paulsson via llvm-dev wrote:
Hi,
I have a benchmark (mcf) that is currently slower when compiled with clang compared to gcc 8 (~10%). It seems that a hot loop has a few differences, where one interesting one is that while clang stores an incremented value in each iteration, gcc waits and just stores the final value just once after the loop. The value is a global variable. I wonder if this is something clang does not do per default but can be activated, similarly to the fp-contract situation? If not, is this a deficiency in clang? What pass should handle this? IndVarSimplify?
See http://lists.llvm.org/pipermail/llvm-dev/2018-September/126064.html .
I have made a reduced test case which shows the same difference between the compilers: clang adds 1 and stores it back to 'a' in each iteration, while gcc instead figures out the value a has after the loop (0) and stores it then once to 'a'.
Your testcase is a bit weird because the condition of the while loop is the same as the condition of the if statement. Is that really what the original loop looks like?
-Eli
-- Employee of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
- Previous message: [llvm-dev] Comparing Clang and GCC: only clang stores updated value in each iteration.
- Next message: [llvm-dev] Comparing Clang and GCC: only clang stores updated value in each iteration.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]