brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 07b4f33 Raw
144 lines · cpp
1// RUN: %check_clang_tidy %s llvm-prefer-register-over-unsigned %t2 3namespace llvm {4class Register {5public:6  operator unsigned();7 8  unsigned Reg;9};10 11// This class shouldn't trigger it despite the similarity.12class RegisterLike {13public:14  operator unsigned();15 16  unsigned Reg;17};18} // end namespace llvm19 20llvm::Register getReg();21llvm::RegisterLike getRegLike();22 23void apply_1() {24  unsigned Reg1 = getReg();25  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'Reg1' declared as 'unsigned int'; use 'llvm::Register' instead [llvm-prefer-register-over-unsigned]26  // CHECK-FIXES:      void apply_1() {27  // CHECK-FIXES-NEXT:   llvm::Register Reg1 = getReg();28}29 30void apply_2() {31  using namespace llvm;32  unsigned Reg2 = getReg();33  // FIXME: Function-scoped UsingDirectiveDecl's don't appear to be in the34  //        DeclContext for the function so we can't elide the llvm:: in this35  //        case. Fortunately, it doesn't actually occur in the LLVM code base.36  // CHECK-MESSAGES: :[[@LINE-4]]:12: warning: variable 'Reg2' declared as 'unsigned int'; use 'llvm::Register' instead [llvm-prefer-register-over-unsigned]37  // CHECK-FIXES:      void apply_2() {38  // CHECK-FIXES-NEXT:   using namespace llvm;39  // CHECK-FIXES-NEXT:   llvm::Register Reg2 = getReg();40}41 42namespace llvm {43void apply_3() {44  unsigned Reg3 = getReg();45  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'Reg3' declared as 'unsigned int'; use 'Register' instead [llvm-prefer-register-over-unsigned]46  // CHECK-FIXES:      void apply_3() {47  // CHECK-FIXES-NEXT:   Register Reg3 = getReg();48}49} // end namespace llvm50 51void done_1() {52  llvm::Register Reg1 = getReg();53  // CHECK-FIXES:      void done_1() {54  // CHECK-FIXES-NEXT:   llvm::Register Reg1 = getReg();55}56 57void done_2() {58  using namespace llvm;59  Register Reg2 = getReg();60  // CHECK-FIXES:      void done_2() {61  // CHECK-FIXES-NEXT:   using namespace llvm;62  // CHECK-FIXES-NEXT:   Register Reg2 = getReg();63}64 65namespace llvm {66void done_3() {67  Register Reg3 = getReg();68  // CHECK-FIXES:      void done_3() {69  // CHECK-FIXES-NEXT:   Register Reg3 = getReg();70}71} // end namespace llvm72 73void do_nothing_1() {74  unsigned Reg1 = getRegLike();75  // CHECK-FIXES:      void do_nothing_1() {76  // CHECK-FIXES-NEXT:   unsigned Reg1 = getRegLike();77}78 79void do_nothing_2() {80  using namespace llvm;81  unsigned Reg2 = getRegLike();82  // CHECK-FIXES:      void do_nothing_2() {83  // CHECK-FIXES-NEXT:   using namespace llvm;84  // CHECK-FIXES-NEXT:   unsigned Reg2 = getRegLike();85}86 87namespace llvm {88void do_nothing_3() {89  unsigned Reg3 = getRegLike();90  // CHECK-FIXES:      void do_nothing_3() {91  // CHECK-FIXES-NEXT:   unsigned Reg3 = getRegLike();92}93} // end namespace llvm94 95void fn1(llvm::Register R);96void do_nothing_4() {97  fn1(getReg());98  // CHECK-FIXES:      void do_nothing_4() {99  // CHECK-FIXES-NEXT:   fn1(getReg());100}101 102void fn2(unsigned R);103void do_nothing_5() {104  fn2(getReg());105  // CHECK-FIXES:      void do_nothing_5() {106  // CHECK-FIXES-NEXT:   fn2(getReg());107}108 109void do_nothing_6() {110  using namespace llvm;111  Register Reg6{getReg()};112  // CHECK-FIXES:      void do_nothing_6() {113  // CHECK-FIXES-NEXT:   using namespace llvm;114  // CHECK-FIXES-NEXT:   Register Reg6{getReg()};115}116 117void do_nothing_7() {118  using namespace llvm;119  Register Reg7;120  Reg7.Reg = getReg();121  // CHECK-FIXES:      void do_nothing_7() {122  // CHECK-FIXES-NEXT:   using namespace llvm;123  // CHECK-FIXES-NEXT:   Register Reg7;124  // CHECK-FIXES-NEXT:   Reg7.Reg = getReg();125}126 127void do_nothing_8() {128  using namespace llvm;129  RegisterLike Reg8{getReg()};130  // CHECK-FIXES:      void do_nothing_8() {131  // CHECK-FIXES-NEXT:   using namespace llvm;132  // CHECK-FIXES-NEXT:   RegisterLike Reg8{getReg()};133}134 135void do_nothing_9() {136  using namespace llvm;137  RegisterLike Reg9;138  Reg9.Reg = getReg();139  // CHECK-FIXES:      void do_nothing_9() {140  // CHECK-FIXES-NEXT:   using namespace llvm;141  // CHECK-FIXES-NEXT:   RegisterLike Reg9;142  // CHECK-FIXES-NEXT:   Reg9.Reg = getReg();143}144