I would like setjmp/longjmp with the ability to catch and continue in order to execute cleanup actions. Most programming languages have one or the other, not both. But, consider that A calls B and B calls C, which uses longjmp to return to A, but B has to clean up some resources, it should catch and continue.
Another thing I would like to have is better bitwise manipulation operations. I find the MOR instruction of MMIX is sometimes useful, and so is the ~ operation of INTERCAL. I also thought of a operator which can be like any one of the C operators + or | or ^ since it is assumed the result is the same in all cases (which will be the case if the bitwise AND of the left and right operands will be zero).
I also agree I want to modify the AST during compile time, using macros.
Many modern programming languages lack a GOTO command, but I think that imperative programming languages should have a GOTO command.
Something that I might want to have is something like LLVM with macros added, although LLVM is itself deficient in some ways (e.g. no support for decimal arithmetic, no support for overlapping data with instructions (e.g. reading/writing immediate operands of other instructions), some calling conventions are missing, and you can't make stable undefined values longer than one bit).
For GPU programming, I think to want something like Checkout.