diff options
author | Richard Henderson <rth@redhat.com> | 2001-08-27 10:29:57 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-08-27 10:29:57 -0700 |
commit | 36d7136e9983a0c8f2d07b84a0b8cb16f8e9e9db (patch) | |
tree | f5872d06ef1b26e3dc869d2a342aced1809550c3 /gcc/final.c | |
parent | 225b9cb9f70d310e06ca3fc06f3d2c7a2f667b80 (diff) | |
download | gcc-36d7136e9983a0c8f2d07b84a0b8cb16f8e9e9db.tar.gz |
final.c (final_scan_insn): Don't enter APP_ON mode for empty asm strings.
* final.c (final_scan_insn): Don't enter APP_ON mode for
empty asm strings.
From-SVN: r45199
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/gcc/final.c b/gcc/final.c index d524ccb9345..ec29a45952d 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -2481,16 +2481,22 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) if (GET_CODE (body) == ASM_INPUT) { + const char *string = XSTR (body, 0); + /* There's no telling what that did to the condition codes. */ CC_STATUS_INIT; if (prescan > 0) break; - if (! app_on) + + if (string[0]) { - fputs (ASM_APP_ON, file); - app_on = 1; + if (! app_on) + { + fputs (ASM_APP_ON, file); + app_on = 1; + } + fprintf (asm_out_file, "\t%s\n", string); } - fprintf (asm_out_file, "\t%s\n", XSTR (body, 0)); break; } @@ -2506,12 +2512,6 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) if (prescan > 0) break; - if (! app_on) - { - fputs (ASM_APP_ON, file); - app_on = 1; - } - /* Get out the operand values. */ string = decode_asm_operands (body, ops, NULL, NULL, NULL); /* Inhibit aborts on what would otherwise be compiler bugs. */ @@ -2519,7 +2519,16 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) this_is_asm_operands = insn; /* Output the insn using them. */ - output_asm_insn (string, ops); + if (string[0]) + { + if (! app_on) + { + fputs (ASM_APP_ON, file); + app_on = 1; + } + output_asm_insn (string, ops); + } + this_is_asm_operands = 0; break; } |