static complex_lattice_t find_lattice_value_parts (tree real, tree imag) { int r, i; complex_lattice_t ret; r = some_nonzerop (real); i = some_nonzerop (imag); ret = r * ONLY_REAL + i * ONLY_IMAG; /* ??? On occasion we could do better than mapping 0+0i to real, but we certainly don't want to leave it UNINITIALIZED, which eventually gets mapped to VARYING. */ if (ret == UNINITIALIZED) ret = ONLY_REAL; return ret; }
static complex_lattice_t find_lattice_value (tree t) { tree real, imag; int r, i; complex_lattice_t ret; switch (TREE_CODE (t)) { case SSA_NAME: return VEC_index (complex_lattice_t, complex_lattice_values, SSA_NAME_VERSION (t)); case COMPLEX_CST: real = TREE_REALPART (t); imag = TREE_IMAGPART (t); break; case COMPLEX_EXPR: real = TREE_OPERAND (t, 0); imag = TREE_OPERAND (t, 1); break; default: gcc_unreachable (); } r = some_nonzerop (real); i = some_nonzerop (imag); ret = r*ONLY_REAL + i*ONLY_IMAG; /* ??? On occasion we could do better than mapping 0+0i to real, but we certainly don't want to leave it UNINITIALIZED, which eventually gets mapped to VARYING. */ if (ret == UNINITIALIZED) ret = ONLY_REAL; return ret; }