From 0d1be5835ffeeb5a0320569a02f0dc8a22212052 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 24 Jul 1998 11:23:45 +0000 Subject: [PATCH] Fix use of USER_LABEL_PREFIX when calling gcc library functions From-SVN: r21360 --- gcc/ChangeLog | 9 +++++++++ gcc/config/arm/thumb.c | 4 ++++ gcc/config/arm/thumb.h | 2 +- gcc/config/arm/thumb.md | 8 ++++---- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 97b5457f128..e1613ab5fc4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +Fri Jul 24 11:17:04 1998 Nick Clifton + + * 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 * dbxout.c (dbxout_range_type): Only call dbxout_type_index for diff --git a/gcc/config/arm/thumb.c b/gcc/config/arm/thumb.c index 53ce57c84de..5ddcc0337ec 100644 --- a/gcc/config/arm/thumb.c +++ b/gcc/config/arm/thumb.c @@ -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); diff --git a/gcc/config/arm/thumb.h b/gcc/config/arm/thumb.h index 976fe787830..4030e37e406 100644 --- a/gcc/config/arm/thumb.h +++ b/gcc/config/arm/thumb.h @@ -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. */ diff --git a/gcc/config/arm/thumb.md b/gcc/config/arm/thumb.md index 65b92cec3e9..6886b8e2496 100644 --- a/gcc/config/arm/thumb.md +++ b/gcc/config/arm/thumb.md @@ -990,7 +990,7 @@ [(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 @@ -1001,7 +1001,7 @@ [(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" @@ -1016,7 +1016,7 @@ (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 @@ -1025,7 +1025,7 @@ (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")])