semantics.c (genrtl_asm_stmt): Don't decay input operands here.
authorMark Mitchell <mark@codesourcery.com>
Fri, 30 Jun 2000 19:04:35 +0000 (19:04 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Fri, 30 Jun 2000 19:04:35 +0000 (19:04 +0000)
* semantics.c (genrtl_asm_stmt): Don't decay input operands here.
(finish_asm_stmt): Do it here, instead.

From-SVN: r34816

gcc/cp/ChangeLog
gcc/cp/semantics.c

index 8bdad5e..e79e132 100644 (file)
@@ -1,5 +1,8 @@
 2000-06-30  Mark Mitchell  <mark@codesourcery.com>
 
+       * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
+       (finish_asm_stmt): Do it here, instead.
+
        * cp-tree.h (ridpointers): Don't declare.
        * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
        (record_builtin_java_type): Likewise.
index c0f64b0..d93ddd8 100644 (file)
@@ -1341,18 +1341,11 @@ genrtl_asm_stmt (cv_qualifier, string, output_operands,
   emit_line_note (input_filename, lineno);
   if (output_operands != NULL_TREE || input_operands != NULL_TREE
       || clobbers != NULL_TREE)
-    {
-      tree t;
-      
-      for (t = input_operands; t; t = TREE_CHAIN (t))
-       TREE_VALUE (t) = decay_conversion (TREE_VALUE (t));
-      
-      c_expand_asm_operands (string, output_operands,
-                            input_operands, 
-                            clobbers,
-                            cv_qualifier != NULL_TREE,
-                            input_filename, lineno);
-    }
+    c_expand_asm_operands (string, output_operands,
+                          input_operands, 
+                          clobbers,
+                          cv_qualifier != NULL_TREE,
+                          input_filename, lineno);
   else
     expand_asm (string);
   
@@ -1373,6 +1366,8 @@ finish_asm_stmt (cv_qualifier, string, output_operands,
      tree clobbers;
 {
   tree r;
+  tree t;
+
   if (TREE_CHAIN (string))
     string = combine_strings (string);
 
@@ -1384,6 +1379,10 @@ finish_asm_stmt (cv_qualifier, string, output_operands,
       cv_qualifier = NULL_TREE;
     }
 
+  if (!processing_template_decl)
+    for (t = input_operands; t; t = TREE_CHAIN (t))
+      TREE_VALUE (t) = decay_conversion (TREE_VALUE (t));
+
   r = build_min_nt (ASM_STMT, cv_qualifier, string,
                    output_operands, input_operands,
                    clobbers);