1 // Assert that the ABI switch uses the proper codegen. Fuchsia uses the 2 // "return this" ABI on constructors and destructors by default, but if we 3 // explicitly choose the generic itanium C++ ABI, we should not return "this" on 4 // ctors/dtors. 5 // 6 // RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-unknown-fuchsia -fc++-abi=itanium | FileCheck %s 7 // RUN: %clang_cc1 %s -emit-llvm -o - -triple=aarch64-unknown-fuchsia -fc++-abi=itanium | FileCheck %s 8 9 class A { 10 public: 11 virtual ~A(); 12 int x_; 13 }; 14 15 class B : public A { 16 public: 17 B(int *i); 18 virtual ~B(); 19 int *i_; 20 }; 21 22 B::B(int *i) : i_(i) {} 23 B::~B() {} 24 25 // CHECK: define{{.*}} void @_ZN1BC2EPi(%class.B* {{[^,]*}} %this, i32* noundef %i) 26 // CHECK: define{{.*}} void @_ZN1BC1EPi(%class.B* {{[^,]*}} %this, i32* noundef %i) 27 // CHECK: define{{.*}} void @_ZN1BD2Ev(%class.B* {{[^,]*}} %this) 28 // CHECK: define{{.*}} void @_ZN1BD1Ev(%class.B* {{[^,]*}} %this) 29