static void expand_one_register_var (tree var) { tree type = TREE_TYPE (var); int unsignedp = TYPE_UNSIGNED (type); enum machine_mode reg_mode = promote_mode (type, DECL_MODE (var), &unsignedp, 0); rtx x = gen_reg_rtx (reg_mode); SET_DECL_RTL (var, x); /* Note if the object is a user variable. */ if (!DECL_ARTIFICIAL (var)) { mark_user_reg (x); /* Trust user variables which have a pointer type to really be pointers. Do not trust compiler generated temporaries as our type system is totally busted as it relates to pointer arithmetic which translates into lots of compiler generated objects with pointer types, but which are not really pointers. */ if (POINTER_TYPE_P (type)) mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (TREE_TYPE (var)))); } }
int main() { int i; i = promote_mode (42, &i); return i != 42; }