gimple-walk.c #include TLC
authorBernhard Reutner-Fischer <aldot@gcc.gnu.org>
Wed, 29 Apr 2015 10:45:31 +0000 (12:45 +0200)
committerBernhard Reutner-Fischer <aldot@gcc.gnu.org>
Wed, 29 Apr 2015 10:45:31 +0000 (12:45 +0200)
Also look at return values of parse_input_constraint and
parse_output_constraint.

From-SVN: r222569

gcc/ChangeLog
gcc/gimple-walk.c

index 9afd56eed7bd0d9a02a8db4ef962788d7cfa3518..ad13f84e2dcf60ecfa2da81200e191b260ddb343 100644 (file)
@@ -1,3 +1,11 @@
+2015-04-29  Bernhard Reuther-Fischer  <aldot@gcc.gnu.org>
+
+       * gimple-walk.c: Prune duplicate or unneeded includes.
+       (walk_gimple_asm): Only call parse_input_constraint or
+       parse_output_constraint if their findings are used.
+       Honour parse_input_constraint and parse_output_constraint
+       result.
+
 2015-04-29  Alan Lawrence  <alan.lawrence@arm.com>
 
        * config/arm/neon.md (vec_shl<mode>, vec_shr<mode>): Remove.
index 45ff859706433ada14dce289bd006e77f156817d..53462b50201e29120d22f4b7d25d3532c2538caf 100644 (file)
@@ -24,31 +24,25 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "hash-set.h"
-#include "machmode.h"
 #include "vec.h"
 #include "double-int.h"
 #include "input.h"
 #include "alias.h"
 #include "symtab.h"
-#include "wide-int.h"
 #include "inchash.h"
 #include "tree.h"
-#include "fold-const.h"
-#include "stmt.h"
 #include "predict.h"
 #include "hard-reg-set.h"
-#include "input.h"
 #include "function.h"
-#include "basic-block.h"
-#include "tree-ssa-alias.h"
-#include "internal-fn.h"
 #include "gimple-expr.h"
 #include "is-a.h"
+#include "tree-ssa-alias.h"
+#include "basic-block.h"
+#include "fold-const.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
-#include "gimple-walk.h"
-#include "demangle.h"
+#include "stmt.h"
 
 /* Walk all the statements in the sequence *PSEQ calling walk_gimple_stmt
    on each one.  WI is as in walk_gimple_stmt.
@@ -129,10 +123,12 @@ walk_gimple_asm (gasm *stmt, walk_tree_fn callback_op,
       op = gimple_asm_output_op (stmt, i);
       constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (op)));
       oconstraints[i] = constraint;
-      parse_output_constraint (&constraint, i, 0, 0, &allows_mem, &allows_reg,
-                              &is_inout);
       if (wi)
-       wi->val_only = (allows_reg || !allows_mem);
+       {
+         if (parse_output_constraint (&constraint, i, 0, 0, &allows_mem,
+                                      &allows_reg, &is_inout))
+           wi->val_only = (allows_reg || !allows_mem);
+       }
       ret = walk_tree (&TREE_VALUE (op), callback_op, wi, NULL);
       if (ret)
        return ret;
@@ -143,13 +139,16 @@ walk_gimple_asm (gasm *stmt, walk_tree_fn callback_op,
     {
       op = gimple_asm_input_op (stmt, i);
       constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (op)));
-      parse_input_constraint (&constraint, 0, 0, noutputs, 0,
-                             oconstraints, &allows_mem, &allows_reg);
+
       if (wi)
        {
-         wi->val_only = (allows_reg || !allows_mem);
-          /* Although input "m" is not really a LHS, we need a lvalue.  */
-         wi->is_lhs = !wi->val_only;
+         if (parse_input_constraint (&constraint, 0, 0, noutputs, 0,
+                                     oconstraints, &allows_mem, &allows_reg))
+           {
+             wi->val_only = (allows_reg || !allows_mem);
+             /* Although input "m" is not really a LHS, we need a lvalue.  */
+             wi->is_lhs = !wi->val_only;
+           }
        }
       ret = walk_tree (&TREE_VALUE (op), callback_op, wi, NULL);
       if (ret)