It is difficult to translate all DWARF location expressions into agent expressions. This is true even for expressions which GCC actually generates. I think the best fix would be to add a few more opcodes to agent expressions. The difficult DWARF opcodes are enumerated here: http://sourceware.org/ml/gdb-patches/2010-05/msg00407.html
Also, DWARF does not have many restrictions on how an expression can manipulate the stack. For example, a DWARF expression may push any number of values, while only the last value is used. Branching can mean that the number of values on the stack at any given point is not constant. One simple way to deal with this problem would be to add new agent opcodes to mark the stack depth and then pop to the mark.
The DWARF->AX compiler also does not handle the typed DWARF extension. See Bug 12617 for links. At least integral types of various sizes could be supported.