auto merge of #12797 : pczarn/rust/str_safety, r=huonw

Along the lines of `shift_ref` and `pop_ref`.
libsyntax: Implement '+' (read/write) output operand constraint modifier
libsyntax: inline assembly: Complain if an option is misplaced
librustc, liveness: Fix the order of propagation through ExprInlineAsm
test: Add tests for inline assembly

* rpass for input/output operand
* cfail (warnings) for misplaced option/clobber
libsyntax: Use labeled break