Print this page
11972 resync smatch

@@ -23,19 +23,16 @@
         /* Terminator */
         [OP_RET] = "ret",
         [OP_BR] = "br",
         [OP_CBR] = "cbr",
         [OP_SWITCH] = "switch",
-        [OP_INVOKE] = "invoke",
         [OP_COMPUTEDGOTO] = "jmp *",
-        [OP_UNWIND] = "unwind",
         
         /* Binary */
         [OP_ADD] = "add",
         [OP_SUB] = "sub",
-        [OP_MULU] = "mulu",
-        [OP_MULS] = "muls",
+        [OP_MUL] = "mul",
         [OP_DIVU] = "divu",
         [OP_DIVS] = "divs",
         [OP_MODU] = "modu",
         [OP_MODS] = "mods",
         [OP_SHL] = "shl",

@@ -44,12 +41,10 @@
         
         /* Logical */
         [OP_AND] = "and",
         [OP_OR] = "or",
         [OP_XOR] = "xor",
-        [OP_AND_BOOL] = "and-bool",
-        [OP_OR_BOOL] = "or-bool",
 
         /* Binary comparison */
         [OP_SET_EQ] = "seteq",
         [OP_SET_NE] = "setne",
         [OP_SET_LE] = "setle",

@@ -67,32 +62,31 @@
 
         /* Special three-input */
         [OP_SEL] = "select",
         
         /* Memory */
-        [OP_MALLOC] = "malloc",
-        [OP_FREE] = "free",
-        [OP_ALLOCA] = "alloca",
         [OP_LOAD] = "load",
         [OP_STORE] = "store",
         [OP_SETVAL] = "set",
-        [OP_GET_ELEMENT_PTR] = "getelem",
 
         /* Other */
         [OP_PHI] = "phi",
         [OP_PHISOURCE] = "phisrc",
         [OP_COPY] = "copy",
-        [OP_CAST] = "cast",
-        [OP_SCAST] = "scast",
-        [OP_FPCAST] = "fpcast",
+        [OP_SEXT] = "sext",
+        [OP_ZEXT] = "zext",
+        [OP_TRUNC] = "trunc",
+        [OP_FCVTU] = "fcvtu",
+        [OP_FCVTS] = "fcvts",
+        [OP_UCVTF] = "ucvtf",
+        [OP_SCVTF] = "scvtf",
+        [OP_FCVTF] = "fcvtf",
+        [OP_UTPTR] = "utptr",
+        [OP_PTRTU] = "utptr",
         [OP_PTRCAST] = "ptrcast",
         [OP_CALL] = "call",
-        [OP_VANEXT] = "va_next",
-        [OP_VAARG] = "va_arg",
         [OP_SLICE] = "slice",
-        [OP_SNOP] = "snop",
-        [OP_LNOP] = "lnop",
         [OP_NOP] = "nop",
         [OP_DEATHNOTE] = "dead",
         [OP_ASM] = "asm",
 
         /* Sparse tagging (line numbers, context, whatever) */

@@ -392,11 +386,11 @@
                 output_comment(state, "reg %s flushed while busy is %d!", reg->name, reg->busy);
         if (!reg->contains)
                 return;
         reg->dead = 0;
         reg->used = 1;
-        FOR_EACH_PTR(reg->contains, pseudo) {
+        FOR_EACH_PTR_TAG(reg->contains, pseudo) {
                 if (CURRENT_TAG(pseudo) & TAG_DEAD)
                         continue;
                 if (!(CURRENT_TAG(pseudo) & TAG_DIRTY))
                         continue;
                 flush_one_pseudo(state, reg, pseudo);

@@ -445,11 +439,11 @@
 
 static void mark_reg_dead(struct bb_state *state, pseudo_t pseudo, struct hardreg *reg)
 {
         pseudo_t p;
 
-        FOR_EACH_PTR(reg->contains, p) {
+        FOR_EACH_PTR_TAG(reg->contains, p) {
                 if (p != pseudo)
                         continue;
                 if (CURRENT_TAG(p) & TAG_DEAD)
                         continue;
                 output_comment(state, "marking pseudo %s in reg %s dead", show_pseudo(pseudo), reg->name);

@@ -530,11 +524,11 @@
 
         for (i = 0; i < REGNO; i++) {
                 pseudo_t p;
 
                 reg = hardregs + i;
-                FOR_EACH_PTR(reg->contains, p) {
+                FOR_EACH_PTR_TAG(reg->contains, p) {
                         if (p == pseudo) {
                                 last_reg = i;
                                 output_comment(state, "found pseudo %s in reg %s (busy=%d)", show_pseudo(pseudo), reg->name, reg->busy);
                                 return reg;
                         }

@@ -870,11 +864,11 @@
 static void kill_dead_reg(struct hardreg *reg)
 {
         if (reg->dead) {
                 pseudo_t p;
                 
-                FOR_EACH_PTR(reg->contains, p) {
+                FOR_EACH_PTR_TAG(reg->contains, p) {
                         if (CURRENT_TAG(p) & TAG_DEAD) {
                                 DELETE_CURRENT_PTR(p);
                                 reg->dead--;
                         }
                 } END_FOR_EACH_PTR(p);

@@ -910,11 +904,11 @@
 }
 
 static int is_dead_reg(struct bb_state *state, pseudo_t pseudo, struct hardreg *reg)
 {
         pseudo_t p;
-        FOR_EACH_PTR(reg->contains, p) {
+        FOR_EACH_PTR_TAG(reg->contains, p) {
                 if (p == pseudo)
                         return CURRENT_TAG(p) & TAG_DEAD;
         } END_FOR_EACH_PTR(p);
         return 0;
 }

@@ -1005,11 +999,11 @@
         output_comment(state, "killing pseudo %s", show_pseudo(pseudo));
         for (i = 0; i < REGNO; i++) {
                 pseudo_t p;
 
                 reg = hardregs + i;
-                FOR_EACH_PTR(reg->contains, p) {
+                FOR_EACH_PTR_TAG(reg->contains, p) {
                         if (p != pseudo)
                                 continue;
                         if (CURRENT_TAG(p) & TAG_DEAD)
                                 reg->dead--;
                         output_comment(state, "removing pseudo %s from reg %s", 

@@ -1402,13 +1396,12 @@
 
         case OP_COPY:
                 generate_copy(state, insn);
                 break;
 
-        case OP_ADD: case OP_MULU: case OP_MULS:
+        case OP_ADD: case OP_MUL:
         case OP_AND: case OP_OR: case OP_XOR:
-        case OP_AND_BOOL: case OP_OR_BOOL:
                 generate_commutative_binop(state, insn);
                 break;
 
         case OP_SUB: case OP_DIVU: case OP_DIVS:
         case OP_MODU: case OP_MODS:

@@ -1418,11 +1411,18 @@
 
         case OP_BINCMP ... OP_BINCMP_END:
                 generate_compare(state, insn);
                 break;
 
-        case OP_CAST: case OP_SCAST: case OP_FPCAST: case OP_PTRCAST:
+        case OP_SEXT: case OP_ZEXT:
+        case OP_TRUNC:
+        case OP_PTRCAST:
+        case OP_UTPTR:
+        case OP_PTRTU:
+        case OP_FCVTU: case OP_FCVTS:
+        case OP_UCVTF: case OP_SCVTF:
+        case OP_FCVTF:
                 generate_cast(state, insn);
                 break;
 
         case OP_SEL:
                 generate_select(state, insn);

@@ -1542,11 +1542,11 @@
         /* See if we have that pseudo in a register.. */
         for (i = 0; i < REGNO; i++) {
                 struct hardreg *reg = hardregs + i;
                 pseudo_t p;
 
-                FOR_EACH_PTR(reg->contains, p) {
+                FOR_EACH_PTR_TAG(reg->contains, p) {
                         if (p == pseudo) {
                                 write_reg_to_storage(state, reg, pseudo, out);
                                 return;
                         }
                 } END_FOR_EACH_PTR(p);

@@ -1650,11 +1650,11 @@
                         struct hardreg *reg = hardregs + out->regno;
                         pseudo_t p;
                         int flushme = 0;
 
                         reg->busy = REG_FIXED;
-                        FOR_EACH_PTR(reg->contains, p) {
+                        FOR_EACH_PTR_TAG(reg->contains, p) {
                                 if (p == entry->pseudo) {
                                         flushme = -100;
                                         continue;
                                 }
                                 if (CURRENT_TAG(p) & TAG_DEAD)

@@ -1947,11 +1947,11 @@
         struct string_list *filelist = NULL;
         char *file;
 
         compile(sparse_initialize(argc, argv, &filelist));
         dbg_dead = 1;
-        FOR_EACH_PTR_NOTAG(filelist, file) {
+        FOR_EACH_PTR(filelist, file) {
                 compile(sparse(file));
-        } END_FOR_EACH_PTR_NOTAG(file);
+        } END_FOR_EACH_PTR(file);
         return 0;
 }