| // REQUIRES: asserts |
| // RUN: %clang_cc1 -O0 -triple %itanium_abi_triple -debug-info-kind=limited -emit-llvm %s -o - | \ |
| // RUN: FileCheck %s |
| |
| // Trigger GenerateVarArgsThunk. |
| // RUN: %clang_cc1 -O0 -triple riscv64-linux-gnu -debug-info-kind=limited -emit-llvm %s -o - | \ |
| // RUN: FileCheck %s |
| |
| // Check that retainedNodes are properly maintained at function cloning. |
| // RUN: %clang_cc1 -O1 -triple riscv64-linux-gnu -debug-info-kind=limited -emit-llvm %s -o - | \ |
| // RUN: FileCheck %s --check-prefixes=CHECK,CHECK-DI |
| |
| // This test simply checks that the varargs thunk is created. The failing test |
| // case asserts. |
| |
| typedef signed char __int8_t; |
| typedef int BOOL; |
| class CMsgAgent; |
| |
| class CFs { |
| public: |
| typedef enum {} CACHE_HINT; |
| virtual BOOL ReqCacheHint( CMsgAgent* p_ma, CACHE_HINT hint, ... ) ; |
| }; |
| |
| typedef struct {} _Lldiv_t; |
| |
| class CBdVfs { |
| public: |
| virtual ~CBdVfs( ) {} |
| }; |
| |
| class CBdVfsImpl : public CBdVfs, public CFs { |
| BOOL ReqCacheHint( CMsgAgent* p_ma, CACHE_HINT hint, ... ); |
| }; |
| |
| BOOL CBdVfsImpl::ReqCacheHint( CMsgAgent* p_ma, CACHE_HINT hint, ... ) { |
| return true; |
| } |
| |
| // CHECK: define {{.*}} @_ZThn{{[48]}}_N10CBdVfsImpl12ReqCacheHintEP9CMsgAgentN3CFs10CACHE_HINTEz( |
| |
| // An empty retainedNodes list of cloned DISubprogram. |
| // CHECK-DI: [[EMPTY:![0-9]+]] = !{} |
| // CHECK-DI: distinct !DISubprogram({{.*}}, linkageName: "_ZN10CBdVfsImpl12ReqCacheHintEP9CMsgAgentN3CFs10CACHE_HINTEz", {{.*}}, retainedNodes: [[RN1:![0-9]+]] |
| // A non-empty retainedNodes list of original DISubprogram. |
| // CHECK-DI: [[RN1]] = !{!{{.*}}} |
| |
| // CHECK-DI: distinct !DISubprogram({{.*}}, linkageName: "_ZN10CBdVfsImpl12ReqCacheHintEP9CMsgAgentN3CFs10CACHE_HINTEz", {{.*}}, retainedNodes: [[EMPTY]] |