Fix use of USER_LABEL_PREFIX when calling gcc library functions
authorNick Clifton <nickc@cygnus.com>
Fri, 24 Jul 1998 11:23:45 +0000 (11:23 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Fri, 24 Jul 1998 11:23:45 +0000 (11:23 +0000)
From-SVN: r21360

gcc/ChangeLog
gcc/config/arm/thumb.c
gcc/config/arm/thumb.h
gcc/config/arm/thumb.md

index 97b5457f128c433344bd95655e13f028c330af1c..e1613ab5fc4fdfb572a2ffe94b8605571c7aa3ee 100644 (file)
@@ -1,3 +1,12 @@
+Fri Jul 24 11:17:04 1998  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/thumb.c (thumb_print_operand): Decode %_ in asm
+       strings as the insertion of USER_LABEL_PREFIX.
+       * config/arm/thumb.h (PRINT_OPERAND_PUNCT_VALID_P): Accept _ as a
+       valid code.
+       * config/arm/thumb.md: Use %_ as a prefix to gcc library function
+       calls. 
+
 Thu Jul 23 18:53:20 1998  Jim Wilson  <wilson@cygnus.com>
 
        * dbxout.c (dbxout_range_type): Only call dbxout_type_index for
index 53ce57c84de252d4c027194b75c75778b966e270..5ddcc0337ec0291fc0081a4145cc474f617b66d9 100644 (file)
@@ -1762,6 +1762,10 @@ thumb_print_operand (f, x, code)
          fputs (ASM_COMMENT_START, f);
          return;
 
+       case '_':
+         fputs (USER_LABEL_PREFIX, f);
+         return;
+         
        case 'D':
          if (x)
            fputs (thumb_condition_code (x, 1), f);
index 976fe7878306dec0a7e0d4d7936523c90543680f..4030e37e406e52b92c0840844ddc1b0b707358f6 100644 (file)
@@ -1052,7 +1052,7 @@ int thumb_shiftable_const ();
     output_addr_const ((STREAM), (X));                         \
 }
 
-#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '@')
+#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '@' || ((CODE) == '_'))
 
 /* Emit a special directive when defining a function name.
    This is used by the assembler to assit with interworking.  */
index 65b92cec3e930b7e363519a554589cd5c96c9703..6886b8e24968cdc737a49f0d4a1fd816e84a4e22 100644 (file)
   [(call (mem:SI (match_operand:SI 0 "register_operand" "l*r"))
         (match_operand 1 "" ""))]
   "! TARGET_CALLER_INTERWORKING"
-  "bl\\t__call_via_%0"
+  "bl\\t%__call_via_%0"
 [(set_attr "length" "4")])
 ;; The non THUMB_INTERWORK, non TARGET_CALLER_INTERWORKING version
 ;; used to be: "mov\\tlr,pc\;bx\\t%0", but the mov does not set
   [(call (mem:SI (match_operand:SI 0 "register_operand" "l*r"))
         (match_operand 1 "" ""))]
   "TARGET_CALLER_INTERWORKING"
-  "bl\\t__interwork_call_via_%0"
+  "bl\\t%__interwork_call_via_%0"
 [(set_attr "length" "4")])
 
 (define_expand "call_value"
        (call (mem:SI (match_operand:SI 1 "register_operand" "l*r"))
              (match_operand 2 "" "")))]
   "! TARGET_CALLER_INTERWORKING"
-  "bl\\t__call_via_%1"
+  "bl\\t%__call_via_%1"
 [(set_attr "length" "4")])
 ;; See comment for call_indirect pattern
 
        (call (mem:SI (match_operand:SI 1 "register_operand" "l*r"))
              (match_operand 2 "" "")))]
   "TARGET_CALLER_INTERWORKING"
-  "bl\\t__interwork_call_via_%1"
+  "bl\\t%__interwork_call_via_%1"
 [(set_attr "length" "4")])