LiuChen3 added inline comments.
================ Comment at: clang/lib/CodeGen/CGCall.cpp:2451 + // attribute to the callee. + if (AttrOnCallSite || AI.getKind() == ABIArgInfo::Extend) { + if (AI.isSignExt()) ---------------- pengfei wrote: > Does the change affect Windows? Seems Win64 doesn't extend on caller. > https://godbolt.org/z/c95hvvsWf No. This patch didn't nothing for Win64 ABI. ================ Comment at: clang/test/CodeGen/X86/integer_argument_passing.c:2 +// RUN: %clang_cc1 -O2 -triple -x86_64-linux-gnu %s -emit-llvm -o - | FileCheck %s --check-prefixes=EXTEND,CHECK +// RUN: %clang_cc1 -O2 -triple -i386-linux-gnu %s -emit-llvm -o - | FileCheck %s --check-prefixes=EXTEND,CHECK +// RUN: %clang_cc1 -O2 -triple -i386-pc-win32 %s -emit-llvm -o - | FileCheck %s --check-prefixes=EXTEND,CHECK ---------------- pengfei wrote: > Maybe we can remove the tests for i386 given it's only for 64 bits ABI? According to the meaning of `ConservativeExtend`, I think the 32bit ABI needs to be modified as well: https://godbolt.org/z/W1Ma1T3f3 The dump of currently clang-cl: ``` _square: movb 4(%esp), %al mulb %al mulb 8(%esp) retl .def _baz; .scl 2; .type 32; .endef .section .text,"xr",one_only,_baz .globl _baz .p2align 4, 0x90 _baz: movswl 4(%esp), %eax pushl %eax calll _bar addl $4, %esp retl ``` Of course with this patch the behavior of clang-cl is still different from cl.exe, but I think it fits the meaning of `ConservativeExtend`. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124435/new/ https://reviews.llvm.org/D124435 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits