OSDN Git Service

2002-09-26 David Edelsohn <edelsohn@gnu.org>
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Sep 2002 03:08:38 +0000 (03:08 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Sep 2002 03:08:38 +0000 (03:08 +0000)
        * dbxout.c (FORCE_TEXT): Switch to current_function_decl, not
        text_section.
        * xcoffout.h (DBX_STATIC_BLOCK_START): Remove explicit change to
        text section.
        * config/rs6000/rs6000.c (rs6000_override_options): Allow
        function-sections and data-sections functionality on AIX.

2002-09-26  David Edelsohn  <edelsohn@gnu.org>
            Dale Johannesen  <dalej@apple.com>

        * config/rs6000/rs6000.c (rs6000_emit_move): Insert zero-extend
        in RTL for sub-word loads from memory.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57572 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/dbxout.c
gcc/xcoffout.h

index f836df4..2212bac 100644 (file)
@@ -1,3 +1,18 @@
+2002-09-26  David Edelsohn  <edelsohn@gnu.org>
+
+       * dbxout.c (FORCE_TEXT): Switch to current_function_decl, not
+       text_section.
+       * xcoffout.h (DBX_STATIC_BLOCK_START): Remove explicit change to 
+       text section.
+       * config/rs6000/rs6000.c (rs6000_override_options): Allow
+       function-sections and data-sections functionality on AIX.
+
+2002-09-26  David Edelsohn  <edelsohn@gnu.org>
+           Dale Johannesen  <dalej@apple.com>
+
+       * config/rs6000/rs6000.c (rs6000_emit_move): Insert zero-extend
+       in RTL for sub-word loads from memory.
+
 2002-09-26  Richard Henderson  <rth@redhat.com>
 
        PR c/7160
index 4cb67f6..171e557 100644 (file)
@@ -590,21 +590,6 @@ rs6000_override_options (default_cpu)
       flag_pic = 0;
     }
 
-#ifdef XCOFF_DEBUGGING_INFO
-  if (flag_function_sections && (write_symbols != NO_DEBUG)
-      && DEFAULT_ABI == ABI_AIX)
-    {
-      warning ("-ffunction-sections disabled on AIX when debugging");
-      flag_function_sections = 0;
-    }
-
-  if (flag_data_sections && (DEFAULT_ABI == ABI_AIX))
-    {
-      warning ("-fdata-sections not supported on AIX");
-      flag_data_sections = 0;
-    }
-#endif
-
   /* For Darwin, always silently make -fpic and -fPIC identical.  */
   if (flag_pic == 1 && DEFAULT_ABI == ABI_DARWIN)
     flag_pic = 2;
@@ -2579,8 +2564,22 @@ rs6000_emit_move (dest, source, mode)
       return;
     }
   
-  if (! no_new_pseudos && GET_CODE (operands[0]) != REG)
-    operands[1] = force_reg (mode, operands[1]);
+  if (!no_new_pseudos)
+    {
+      if (GET_CODE (operands[1]) == MEM && optimize > 0
+         && (mode == QImode || mode == HImode || mode == SImode)
+         && GET_MODE_SIZE (mode) < GET_MODE_SIZE (word_mode))
+       {
+         rtx reg = gen_reg_rtx (word_mode);
+
+         emit_insn (gen_rtx_SET (word_mode, reg,
+                                 gen_rtx_ZERO_EXTEND (word_mode,
+                                                      operands[1])));
+         operands[1] = gen_lowpart (mode, reg);
+       }
+      if (GET_CODE (operands[0]) != REG)
+       operands[1] = force_reg (mode, operands[1]);
+    }
 
   if (mode == SFmode && ! TARGET_POWERPC
       && TARGET_HARD_FLOAT && TARGET_FPRS
index 18d61eb..9d27fa7 100644 (file)
@@ -155,7 +155,7 @@ static int source_label_number = 1;
 #endif
 
 #ifdef DEBUG_SYMS_TEXT
-#define FORCE_TEXT text_section ();
+#define FORCE_TEXT function_section (current_function_decl);
 #else
 #define FORCE_TEXT
 #endif
index afa7274..dd630c9 100644 (file)
@@ -47,30 +47,14 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 #define DBX_STATIC_CONST_VAR_CODE N_STSYM
 
-/* For static variables, output code to define the start of a static block.
-
-   ??? The IBM rs6000/AIX assembler has a bug that causes bss block debug
-   info to be occasionally lost.  A simple example is this:
-       int a; static int b;
-   The commands `gcc -g -c tmp.c; dump -t tmp.o' gives
-[10]   m   0x00000016         1     0    0x8f  0x0000            .bs
-[11]   m   0x00000000         1     0    0x90  0x0000            .es
-...
-[21]   m   0x00000000        -2     0    0x85  0x0000            b:S-1
-   which is wrong.  The `b:S-1' must be between the `.bs' and `.es'.
-   We can apparently work around the problem by forcing the text section
-   (even if we are already in the text section) immediately before outputting
-   the `.bs'.  This should be fixed in the next major AIX release (3.3?).  */
+/* For static variables, output code to define the start of a static block.  */
 
 #define DBX_STATIC_BLOCK_START(ASMFILE,CODE)                           \
 {                                                                      \
   if ((CODE) == N_STSYM)                                               \
     fprintf ((ASMFILE), "\t.bs\t%s[RW]\n", xcoff_private_data_section_name);\
   else if ((CODE) == N_LCSYM)                                          \
-    {                                                                  \
-      fprintf ((ASMFILE), "%s\n", TEXT_SECTION_ASM_OP);                        \
-      fprintf ((ASMFILE), "\t.bs\t%s\n", xcoff_bss_section_name);      \
-    }                                                                  \
+    fprintf ((ASMFILE), "\t.bs\t%s\n", xcoff_bss_section_name);        \
 }
 
 /* For static variables, output code to define the end of a static block.  */