summaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-08-27 10:29:57 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-08-27 10:29:57 -0700
commit36d7136e9983a0c8f2d07b84a0b8cb16f8e9e9db (patch)
treef5872d06ef1b26e3dc869d2a342aced1809550c3 /gcc/final.c
parent225b9cb9f70d310e06ca3fc06f3d2c7a2f667b80 (diff)
downloadgcc-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.c31
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;
}