Print this page
11972 resync smatch

*** 23,41 **** /* 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_DIVU] = "divu", [OP_DIVS] = "divs", [OP_MODU] = "modu", [OP_MODS] = "mods", [OP_SHL] = "shl", --- 23,38 ---- /* Terminator */ [OP_RET] = "ret", [OP_BR] = "br", [OP_CBR] = "cbr", [OP_SWITCH] = "switch", [OP_COMPUTEDGOTO] = "jmp *", /* Binary */ [OP_ADD] = "add", [OP_SUB] = "sub", ! [OP_MUL] = "mul", [OP_DIVU] = "divu", [OP_DIVS] = "divs", [OP_MODU] = "modu", [OP_MODS] = "mods", [OP_SHL] = "shl",
*** 44,55 **** /* 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", --- 41,50 ----
*** 67,98 **** /* 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_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) */ --- 62,92 ---- /* Special three-input */ [OP_SEL] = "select", /* Memory */ [OP_LOAD] = "load", [OP_STORE] = "store", [OP_SETVAL] = "set", /* Other */ [OP_PHI] = "phi", [OP_PHISOURCE] = "phisrc", [OP_COPY] = "copy", ! [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_SLICE] = "slice", [OP_NOP] = "nop", [OP_DEATHNOTE] = "dead", [OP_ASM] = "asm", /* Sparse tagging (line numbers, context, whatever) */
*** 392,402 **** 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) { if (CURRENT_TAG(pseudo) & TAG_DEAD) continue; if (!(CURRENT_TAG(pseudo) & TAG_DIRTY)) continue; flush_one_pseudo(state, reg, pseudo); --- 386,396 ---- 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_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,455 **** static void mark_reg_dead(struct bb_state *state, pseudo_t pseudo, struct hardreg *reg) { pseudo_t p; ! FOR_EACH_PTR(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); --- 439,449 ---- static void mark_reg_dead(struct bb_state *state, pseudo_t pseudo, struct hardreg *reg) { pseudo_t 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,540 **** for (i = 0; i < REGNO; i++) { pseudo_t p; reg = hardregs + i; ! FOR_EACH_PTR(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; } --- 524,534 ---- for (i = 0; i < REGNO; i++) { pseudo_t p; reg = hardregs + i; ! 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,880 **** static void kill_dead_reg(struct hardreg *reg) { if (reg->dead) { pseudo_t p; ! FOR_EACH_PTR(reg->contains, p) { if (CURRENT_TAG(p) & TAG_DEAD) { DELETE_CURRENT_PTR(p); reg->dead--; } } END_FOR_EACH_PTR(p); --- 864,874 ---- static void kill_dead_reg(struct hardreg *reg) { if (reg->dead) { pseudo_t 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,920 **** } static int is_dead_reg(struct bb_state *state, pseudo_t pseudo, struct hardreg *reg) { pseudo_t p; ! FOR_EACH_PTR(reg->contains, p) { if (p == pseudo) return CURRENT_TAG(p) & TAG_DEAD; } END_FOR_EACH_PTR(p); return 0; } --- 904,914 ---- } static int is_dead_reg(struct bb_state *state, pseudo_t pseudo, struct hardreg *reg) { pseudo_t 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,1015 **** 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) { if (p != pseudo) continue; if (CURRENT_TAG(p) & TAG_DEAD) reg->dead--; output_comment(state, "removing pseudo %s from reg %s", --- 999,1009 ---- output_comment(state, "killing pseudo %s", show_pseudo(pseudo)); for (i = 0; i < REGNO; i++) { pseudo_t p; reg = hardregs + i; ! 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,1414 **** case OP_COPY: generate_copy(state, insn); break; ! case OP_ADD: case OP_MULU: case OP_MULS: 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: --- 1396,1407 ---- case OP_COPY: generate_copy(state, insn); break; ! case OP_ADD: case OP_MUL: case OP_AND: case OP_OR: case OP_XOR: generate_commutative_binop(state, insn); break; case OP_SUB: case OP_DIVU: case OP_DIVS: case OP_MODU: case OP_MODS:
*** 1418,1428 **** case OP_BINCMP ... OP_BINCMP_END: generate_compare(state, insn); break; ! case OP_CAST: case OP_SCAST: case OP_FPCAST: case OP_PTRCAST: generate_cast(state, insn); break; case OP_SEL: generate_select(state, insn); --- 1411,1428 ---- case OP_BINCMP ... OP_BINCMP_END: generate_compare(state, insn); break; ! 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,1552 **** /* 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) { if (p == pseudo) { write_reg_to_storage(state, reg, pseudo, out); return; } } END_FOR_EACH_PTR(p); --- 1542,1552 ---- /* 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_TAG(reg->contains, p) { if (p == pseudo) { write_reg_to_storage(state, reg, pseudo, out); return; } } END_FOR_EACH_PTR(p);
*** 1650,1660 **** struct hardreg *reg = hardregs + out->regno; pseudo_t p; int flushme = 0; reg->busy = REG_FIXED; ! FOR_EACH_PTR(reg->contains, p) { if (p == entry->pseudo) { flushme = -100; continue; } if (CURRENT_TAG(p) & TAG_DEAD) --- 1650,1660 ---- struct hardreg *reg = hardregs + out->regno; pseudo_t p; int flushme = 0; reg->busy = REG_FIXED; ! FOR_EACH_PTR_TAG(reg->contains, p) { if (p == entry->pseudo) { flushme = -100; continue; } if (CURRENT_TAG(p) & TAG_DEAD)
*** 1947,1957 **** struct string_list *filelist = NULL; char *file; compile(sparse_initialize(argc, argv, &filelist)); dbg_dead = 1; ! FOR_EACH_PTR_NOTAG(filelist, file) { compile(sparse(file)); ! } END_FOR_EACH_PTR_NOTAG(file); return 0; } --- 1947,1957 ---- struct string_list *filelist = NULL; char *file; compile(sparse_initialize(argc, argv, &filelist)); dbg_dead = 1; ! FOR_EACH_PTR(filelist, file) { compile(sparse(file)); ! } END_FOR_EACH_PTR(file); return 0; }