https://www.reddit.com/r/cpp/comments/99e1ri/interesting_gcc_optimizer_bug/
Should use RVO however gcc7 -O3 failed to use RVO but create temporary value on stack then assigned to implicit argument(i.e rax, rdx)
Could directy assign value to rax,rdx (RVO) instead.
code:
https://godbolt.org/z/A2Kpkl
Should use RVO however gcc7 -O3 failed to use RVO but create temporary value on stack then assigned to implicit argument(i.e rax, rdx)
Could directy assign value to rax,rdx (RVO) instead.
code:
https://godbolt.org/z/A2Kpkl
struct fun { // fun(const int &a, const int &b) {} long a; long b; }; fun run(long a) { return {a, a}; }Assembly gcc7 -O3:
mov QWORD PTR [rsp-24], rdi movq xmm0, QWORD PTR [rsp-24] punpcklqdq xmm0, xmm0 movaps XMMWORD PTR [rsp-24], xmm0 mov rax, QWORD PTR [rsp-24] mov rdx, QWORD PTR [rsp-16] retAssembly clang6 -O3:
run(long): # @run(long) mov rax, rdi mov rdx, rdi ret
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.