owenpan updated this revision to Diff 401257.
owenpan added a comment.

- Also wrapped `COMPOSITE_TYPE_SWITCH` with do-while.
- Cleaned up the macro definitions by removing the superfluous do-while 
statements.
- Removed the unused `INT_TPYE_SWITCH` macro.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D117301/new/

https://reviews.llvm.org/D117301

Files:
  clang/lib/AST/Interp/PrimType.h


Index: clang/lib/AST/Interp/PrimType.h
===================================================================
--- clang/lib/AST/Interp/PrimType.h
+++ clang/lib/AST/Interp/PrimType.h
@@ -81,35 +81,27 @@
 /// Helper macro to simplify type switches.
 /// The macro implicitly exposes a type T in the scope of the inner block.
 #define TYPE_SWITCH_CASE(Name, B) \
-  case Name: { using T = PrimConv<Name>::T; do {B;} while(0); break; }
+  case Name: { using T = PrimConv<Name>::T; B; break; }
 #define TYPE_SWITCH(Expr, B)                                                   
\
-  switch (Expr) {                                                              
\
-    TYPE_SWITCH_CASE(PT_Sint8, B)                                              
\
-    TYPE_SWITCH_CASE(PT_Uint8, B)                                              
\
-    TYPE_SWITCH_CASE(PT_Sint16, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Uint16, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Sint32, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Uint32, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Sint64, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Uint64, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Bool, B)                                               
\
-    TYPE_SWITCH_CASE(PT_Ptr, B)                                                
\
-  }
+  do {                                                                         
\
+    switch (Expr) {                                                            
\
+      TYPE_SWITCH_CASE(PT_Sint8, B)                                            
\
+      TYPE_SWITCH_CASE(PT_Uint8, B)                                            
\
+      TYPE_SWITCH_CASE(PT_Sint16, B)                                           
\
+      TYPE_SWITCH_CASE(PT_Uint16, B)                                           
\
+      TYPE_SWITCH_CASE(PT_Sint32, B)                                           
\
+      TYPE_SWITCH_CASE(PT_Uint32, B)                                           
\
+      TYPE_SWITCH_CASE(PT_Sint64, B)                                           
\
+      TYPE_SWITCH_CASE(PT_Uint64, B)                                           
\
+      TYPE_SWITCH_CASE(PT_Bool, B)                                             
\
+      TYPE_SWITCH_CASE(PT_Ptr, B)                                              
\
+    }                                                                          
\
+  } while (0)
 #define COMPOSITE_TYPE_SWITCH(Expr, B, D)                                      
\
-  switch (Expr) {                                                              
\
-    TYPE_SWITCH_CASE(PT_Ptr, B)                                                
\
-    default: do { D; } while(0); break;                                        
\
-  }
-#define INT_TYPE_SWITCH(Expr, B)                                               
\
-  switch (Expr) {                                                              
\
-    TYPE_SWITCH_CASE(PT_Sint8, B)                                              
\
-    TYPE_SWITCH_CASE(PT_Uint8, B)                                              
\
-    TYPE_SWITCH_CASE(PT_Sint16, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Uint16, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Sint32, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Uint32, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Sint64, B)                                             
\
-    TYPE_SWITCH_CASE(PT_Uint64, B)                                             
\
-    default: llvm_unreachable("not an integer");                               
\
-  }
+  do {                                                                         
\
+    switch (Expr) {                                                            
\
+      TYPE_SWITCH_CASE(PT_Ptr, B)                                              
\
+      default: { D; break; }                                                   
\
+    }                                                                          
\
+  } while (0)
 #endif


Index: clang/lib/AST/Interp/PrimType.h
===================================================================
--- clang/lib/AST/Interp/PrimType.h
+++ clang/lib/AST/Interp/PrimType.h
@@ -81,35 +81,27 @@
 /// Helper macro to simplify type switches.
 /// The macro implicitly exposes a type T in the scope of the inner block.
 #define TYPE_SWITCH_CASE(Name, B) \
-  case Name: { using T = PrimConv<Name>::T; do {B;} while(0); break; }
+  case Name: { using T = PrimConv<Name>::T; B; break; }
 #define TYPE_SWITCH(Expr, B)                                                   \
-  switch (Expr) {                                                              \
-    TYPE_SWITCH_CASE(PT_Sint8, B)                                              \
-    TYPE_SWITCH_CASE(PT_Uint8, B)                                              \
-    TYPE_SWITCH_CASE(PT_Sint16, B)                                             \
-    TYPE_SWITCH_CASE(PT_Uint16, B)                                             \
-    TYPE_SWITCH_CASE(PT_Sint32, B)                                             \
-    TYPE_SWITCH_CASE(PT_Uint32, B)                                             \
-    TYPE_SWITCH_CASE(PT_Sint64, B)                                             \
-    TYPE_SWITCH_CASE(PT_Uint64, B)                                             \
-    TYPE_SWITCH_CASE(PT_Bool, B)                                               \
-    TYPE_SWITCH_CASE(PT_Ptr, B)                                                \
-  }
+  do {                                                                         \
+    switch (Expr) {                                                            \
+      TYPE_SWITCH_CASE(PT_Sint8, B)                                            \
+      TYPE_SWITCH_CASE(PT_Uint8, B)                                            \
+      TYPE_SWITCH_CASE(PT_Sint16, B)                                           \
+      TYPE_SWITCH_CASE(PT_Uint16, B)                                           \
+      TYPE_SWITCH_CASE(PT_Sint32, B)                                           \
+      TYPE_SWITCH_CASE(PT_Uint32, B)                                           \
+      TYPE_SWITCH_CASE(PT_Sint64, B)                                           \
+      TYPE_SWITCH_CASE(PT_Uint64, B)                                           \
+      TYPE_SWITCH_CASE(PT_Bool, B)                                             \
+      TYPE_SWITCH_CASE(PT_Ptr, B)                                              \
+    }                                                                          \
+  } while (0)
 #define COMPOSITE_TYPE_SWITCH(Expr, B, D)                                      \
-  switch (Expr) {                                                              \
-    TYPE_SWITCH_CASE(PT_Ptr, B)                                                \
-    default: do { D; } while(0); break;                                        \
-  }
-#define INT_TYPE_SWITCH(Expr, B)                                               \
-  switch (Expr) {                                                              \
-    TYPE_SWITCH_CASE(PT_Sint8, B)                                              \
-    TYPE_SWITCH_CASE(PT_Uint8, B)                                              \
-    TYPE_SWITCH_CASE(PT_Sint16, B)                                             \
-    TYPE_SWITCH_CASE(PT_Uint16, B)                                             \
-    TYPE_SWITCH_CASE(PT_Sint32, B)                                             \
-    TYPE_SWITCH_CASE(PT_Uint32, B)                                             \
-    TYPE_SWITCH_CASE(PT_Sint64, B)                                             \
-    TYPE_SWITCH_CASE(PT_Uint64, B)                                             \
-    default: llvm_unreachable("not an integer");                               \
-  }
+  do {                                                                         \
+    switch (Expr) {                                                            \
+      TYPE_SWITCH_CASE(PT_Ptr, B)                                              \
+      default: { D; break; }                                                   \
+    }                                                                          \
+  } while (0)
 #endif
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to