LLVMValueRef gendesc_isentity(compile_t* c, LLVMValueRef desc, ast_t* type) { reach_type_t* t = reach_type(c->reach, type); if(t == NULL) return GEN_NOVALUE; LLVMValueRef left = LLVMBuildPtrToInt(c->builder, desc, c->intptr, ""); LLVMValueRef right = LLVMConstPtrToInt(t->desc, c->intptr); return LLVMBuildICmp(c->builder, LLVMIntEQ, left, right, ""); }
LLVMValueRef gendesc_isentity(compile_t* c, LLVMValueRef desc, ast_t* type) { gentype_t g; if(!gentype(c, type, &g)) return GEN_NOVALUE; LLVMValueRef left = LLVMBuildPtrToInt(c->builder, desc, c->intptr, ""); LLVMValueRef right = LLVMConstPtrToInt(g.desc, c->intptr); return LLVMBuildICmp(c->builder, LLVMIntEQ, left, right, ""); }