+2013-11-26 David Malcolm <dmalcolm@redhat.com>
+
+ * gengtype.c (struct seen_tag): New.
+ (already_seen_tag): New.
+ (mark_tag_as_seen): New.
+ (walk_subclasses): Support having multiple subclasses using the
+ same tag by tracking which tags have already been seen, and using
+ this to avoid adding duplicate cases to the "switch" statement.
+ The call to already_seen_tag introduces an O(N^2) when running
+ gengtype on N, the number of tags, due to the repeated linear
+ search, but currently max(N) is relatively small (the number of
+ GSS codes, which is 26).
+ (walk_type): Pass in a seen_tag for use by the walk_subclasses
+ recursion.
+
+ * gimple.def (GIMPLE_OMP_ATOMIC_STORE, GIMPLE_OMP_RETURN): Rename
+ underlying GSS values for these codes (from GSS_OMP_ATOMIC_STORE to
+ GSS_OMP_ATOMIC_STORE_LAYOUT) to make clear that although
+ GIMPLE_OMP_RETURN happens to share the data layout of
+ GIMPLE_OMP_ATOMIC_STORE, they are not otherwise related.
+ (GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TARGET): Likewise, rename
+ underlying GSS value from GSS_OMP_PARALLEL to
+ GSS_OMP_PARALLEL_LAYOUT to make clear that these gimple codes are
+ not directly related; they merely share in-memory layout.
+ (GIMPLE_OMP_SINGLE, GIMPLE_OMP_TEAMS): Likewise, rename GSS values
+ for these two codes from GSS_OMP_SINGLE to GSS_OMP_SINGLE_LAYOUT.
+
+ * gsstruct.def (GSS_OMP_PARALLEL, gimple_statement_omp_parallel):
+ Rename to...
+ (GSS_OMP_PARALLEL_LAYOUT, gimple_statement_omp_parallel_layout):
+ ...these.
+ (GSS_OMP_SINGLE, gimple_statement_omp_single): Rename to...
+ (GSS_OMP_SINGLE_LAYOUT, gimple_statement_omp_single_layout):
+ ...these.
+ (GSS_OMP_ATOMIC_STORE, gimple_statement_omp_atomic_store): Rename
+ to...
+ (GSS_OMP_ATOMIC_STORE_LAYOUT, gimple_statement_omp_atomic_store):
+ ...these.
+
+ * gimple.h (gimple_statement_resx): New subclass of
+ gimple_statement_eh_ctrl, with the invariant that
+ stmt->code == GIMPLE_RESX.
+ (gimple_statement_eh_dispatch): New subclass of
+ gimple_statement_eh_ctrl, with the invariant that
+ stmt->code == GIMPLE_EH_DISPATH.
+
+ (gimple_statement_omp_parallel): The existing class expressed
+ a layout (GSS_OMP_PARALLEL), but the codes with that layout
+ are not all related, so it makes more sense for this class to
+ express a *code* (GIMPLE_OMP_PARALLEL). GSS_OMP_PARALLEL has
+ been renamed to GSS_OMP_PARALLEL_LAYOUT to express this, so
+ rename the existing gimple_statement_omp_parallel class to...
+ (gimple_statement_omp_parallel_layout): ...this, expressing
+ a statement of structure layout GSS_OMP_PARALLEL_LAYOUT.
+ (gimple_statement_omp_taskreg): New subclass of
+ gimple_statement_omp_parallel_layout, expressing the invariant
+ that the code is one of GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK,
+ as used by the various gimple_omp_taskreg_ accessors.
+ (gimple_statement_omp_parallel): Reintroduce this class, this time
+ as a subclass of gimple_statement_omp_taskreg to express the
+ invariant stmt->code == GIMPLE_OMP_PARALLEL.
+ (gimple_statement_omp_target) New class, subclassing
+ gimple_statement_omp_parallel_layout, to express the invariant
+ stmt->code == GIMPLE_OMP_TARGET.
+ (gimple_statement_omp_task): Update to inherit from
+ gimple_statement_omp_taskreg rather than
+ gimple_statement_omp_parallel.
+
+ (gimple_statement_omp_single): Rename to...
+ (gimple_statement_omp_single_layout): ...this, expressing the
+ invariant that the layout is GSS_OMP_SINGLE_LAYOUT.
+ (gimple_statement_omp_single): ...and reintroduce this name as
+ a subclass of gimple_statement_omp_single_layout, expressing
+ the invariant that code == GIMPLE_OMP_SINGLE.
+ (gimple_statement_omp_teams): New class, subclassing
+ gimple_statement_omp_single_layout, for the code GIMPLE_OMP_TEAMS.
+
+ (gimple_statement_omp_atomic_store): Rename to...
+ (gimple_statement_omp_atomic_store_layout): ...this, expressing
+ the invariant that the layout is GSS_OMP_ATOMIC_STORE_LAYOUT.
+ (gimple_statement_omp_atomic_store): ...and reintroduce this
+ name as a subclass of gimple_statement_omp_atomic_store_layout
+ with code == GIMPLE_OMP_ATOMIC_STORE.
+ (gimple_statement_omp_return): New class, subclassing
+ gimple_statement_omp_atomic_store_layout for the code
+ GIMPLE_OMP_RETURN.
+
+ (is_a_helper <gimple_statement_eh_ctrl>::test): Delete.
+ (is_a_helper <gimple_statement_resx>::test): New.
+ (is_a_helper <gimple_statement_eh_dispatch>::test): New.
+ (is_a_helper <gimple_statement_omp_atomic_store>::test): Only
+ check for GIMPLE_OMP_ATOMIC_STORE, not for GIMPLE_OMP_RETURN.
+ (is_a_helper <gimple_statement_omp_return>::test): New.
+ (is_a_helper <gimple_statement_omp_taskreg>::test): New.
+ (is_a_helper <gimple_statement_omp_parallel>::test): Only check
+ for GIMPLE_OMP_PARALLEL, not for GIMPLE_OMP_TASK or
+ GIMPLE_OMP_TARGET.
+ (is_a_helper <gimple_statement_omp_target>::test): New.
+ (is_a_helper <gimple_statement_omp_single>::test): Only check
+ for GIMPLE_OMP_SINGLE, not for GIMPLE_OMP_TEAMS.
+ (is_a_helper <gimple_statement_omp_teams>::test): New.
+
+ (is_a_helper <const gimple_statement_eh_ctrl>::test): Delete.
+ (is_a_helper <const gimple_statement_resx>::test): New.
+ (is_a_helper <const gimple_statement_eh_dispatch>::test): New.
+ (is_a_helper <const gimple_statement_omp_atomic_store>::test): Only
+ check for GIMPLE_OMP_ATOMIC_STORE, not for GIMPLE_OMP_RETURN.
+ (is_a_helper <const gimple_statement_omp_return>::test): New.
+ (is_a_helper <const gimple_statement_omp_taskreg>::test): New.
+ (is_a_helper <const gimple_statement_omp_parallel>::test): Only
+ check for GIMPLE_OMP_PARALLEL, not for GIMPLE_OMP_TASK or
+ GIMPLE_OMP_TARGET.
+ (is_a_helper <const gimple_statement_omp_target>::test): New.
+ (is_a_helper <const gimple_statement_omp_single>::test): Only
+ check for GIMPLE_OMP_SINGLE, not for GIMPLE_OMP_TEAMS.
+ (is_a_helper <const gimple_statement_omp_teams>::test): New.
+
+ (gimple_omp_return_set_lhs, gimple_omp_return_lhs,
+ gimple_omp_return_lhs_ptr): Replace bogus downcasts to
+ gimple_statement_omp_atomic_store with downcasts to
+ gimple_statement_omp_return, thus requiring that the code be
+ GIMPLE_OMP_RETURN.
+ (gimple_resx_region, gimple_resx_set_region): Replace bogus
+ downcasts to gimple_statement_eh_ctrl with downcasts to
+ gimple_statement_resx, thus requiring that the code be
+ GIMPLE_RESX.
+ (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region):
+ Replace bogus downcasts to const gimple_statement_eh_ctrl with
+ downcasts to gimple_statement_eh_dispatch, thus requiring that
+ the code be GIMPLE_EH_DISPATCH.
+ (gimple_omp_taskreg_clauses, gimple_omp_taskreg_clauses_ptr)
+ gimple_omp_taskreg_set_clauses, gimple_omp_taskreg_child_fn,
+ gimple_omp_taskreg_child_fn_ptr, gimple_omp_taskreg_set_child_fn,
+ gimple_omp_taskreg_data_arg, gimple_omp_taskreg_data_arg_ptr,
+ gimple_omp_taskreg_set_data_arg): Replace bogus downcasts to
+ gimple_statement_omp_parallel with downcasts to
+ gimple_statement_omp_taskreg, thus requiring that the code be
+ either GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK.
+ (gimple_omp_target_clauses, gimple_omp_target_clauses_ptr
+ gimple_omp_target_set_clauses, gimple_omp_target_child_fn
+ gimple_omp_target_child_fn_ptr, gimple_omp_target_set_child_fn
+ gimple_omp_target_data_arg, gimple_omp_target_data_arg_ptr
+ gimple_omp_target_set_data_arg): Replace bogus downcasts to
+ gimple_statement_omp_parallel with downcasts to
+ gimple_statement_omp_target, thus requiring that the code be
+ GIMPLE_OMP_TARGET.
+ (gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr
+ gimple_omp_teams_set_clauses): Replace bogus downcasts to
+ gimple_statement_omp_single with downcasts to
+ gimple_statement_omp_teams, thus requiring that the code be
+ GIMPLE_OMP_TEAMS.
+
+ * gimple.c (gimple_build_resx): Fix bogus as_a<> to use
+ gimple_statement_resx.
+ (gimple_build_eh_dispatch): Fix bogus as_a<> to use
+ gimple_statement_eh_dispatch.
+
2013-11-26 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/59014
int region;
};
+struct GTY((tag("GSS_EH_CTRL")))
+ gimple_statement_resx : public gimple_statement_eh_ctrl
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_RESX. */
+};
+
+struct GTY((tag("GSS_EH_CTRL")))
+ gimple_statement_eh_dispatch : public gimple_statement_eh_ctrl
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_EH_DISPATH. */
+};
+
/* GIMPLE_TRY */
};
-/* GIMPLE_OMP_PARALLEL */
-
-struct GTY((tag("GSS_OMP_PARALLEL")))
- gimple_statement_omp_parallel : public gimple_statement_omp
+/* GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TARGET */
+struct GTY((tag("GSS_OMP_PARALLEL_LAYOUT")))
+ gimple_statement_omp_parallel_layout : public gimple_statement_omp
{
/* [ WORD 1-7 ] : base class */
tree data_arg;
};
+/* GIMPLE_OMP_PARALLEL or GIMPLE_TASK */
+struct GTY((tag("GSS_OMP_PARALLEL_LAYOUT")))
+ gimple_statement_omp_taskreg : public gimple_statement_omp_parallel_layout
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_PARALLEL
+ || stmt->code == GIMPLE_OMP_TASK. */
+};
+
+
+/* GIMPLE_OMP_PARALLEL */
+struct GTY((tag("GSS_OMP_PARALLEL_LAYOUT")))
+ gimple_statement_omp_parallel : public gimple_statement_omp_taskreg
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_PARALLEL. */
+};
+
+struct GTY((tag("GSS_OMP_PARALLEL_LAYOUT")))
+ gimple_statement_omp_target : public gimple_statement_omp_parallel_layout
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_TARGET. */
+};
/* GIMPLE_OMP_TASK */
struct GTY((tag("GSS_OMP_TASK")))
- gimple_statement_omp_task : public gimple_statement_omp_parallel
+ gimple_statement_omp_task : public gimple_statement_omp_taskreg
{
/* [ WORD 1-10 ] : base class */
tree control_use;
};
-/* GIMPLE_OMP_SINGLE, GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS */
+/* GIMPLE_OMP_SINGLE, GIMPLE_OMP_TEAMS */
-struct GTY((tag("GSS_OMP_SINGLE")))
- gimple_statement_omp_single : public gimple_statement_omp
+struct GTY((tag("GSS_OMP_SINGLE_LAYOUT")))
+ gimple_statement_omp_single_layout : public gimple_statement_omp
{
/* [ WORD 1-7 ] : base class */
tree clauses;
};
+struct GTY((tag("GSS_OMP_SINGLE_LAYOUT")))
+ gimple_statement_omp_single : public gimple_statement_omp_single_layout
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_SINGLE. */
+};
+
+struct GTY((tag("GSS_OMP_SINGLE_LAYOUT")))
+ gimple_statement_omp_teams : public gimple_statement_omp_single_layout
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_TEAMS. */
+};
+
/* GIMPLE_OMP_ATOMIC_LOAD.
Note: This is based on gimple_statement_base, not g_s_omp, because g_s_omp
/* GIMPLE_OMP_ATOMIC_STORE.
See note on GIMPLE_OMP_ATOMIC_LOAD. */
-struct GTY((tag("GSS_OMP_ATOMIC_STORE")))
- gimple_statement_omp_atomic_store : public gimple_statement_base
+struct GTY((tag("GSS_OMP_ATOMIC_STORE_LAYOUT")))
+ gimple_statement_omp_atomic_store_layout : public gimple_statement_base
{
/* [ WORD 1-6 ] : base class */
tree val;
};
+struct GTY((tag("GSS_OMP_ATOMIC_STORE_LAYOUT")))
+ gimple_statement_omp_atomic_store :
+ public gimple_statement_omp_atomic_store_layout
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_ATOMIC_STORE. */
+};
+
+struct GTY((tag("GSS_OMP_ATOMIC_STORE_LAYOUT")))
+ gimple_statement_omp_return :
+ public gimple_statement_omp_atomic_store_layout
+{
+ /* No extra fields; adds invariant:
+ stmt->code == GIMPLE_OMP_RETURN. */
+};
+
/* GIMPLE_TRANSACTION. */
/* Bits to be stored in the GIMPLE_TRANSACTION subcode. */
template <>
template <>
inline bool
-is_a_helper <gimple_statement_eh_ctrl>::test (gimple gs)
+is_a_helper <gimple_statement_resx>::test (gimple gs)
+{
+ return gs->code == GIMPLE_RESX;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <gimple_statement_eh_dispatch>::test (gimple gs)
{
- return gs->code == GIMPLE_RESX || gs->code == GIMPLE_EH_DISPATCH;
+ return gs->code == GIMPLE_EH_DISPATCH;
}
template <>
inline bool
is_a_helper <gimple_statement_omp_atomic_store>::test (gimple gs)
{
- return gs->code == GIMPLE_OMP_ATOMIC_STORE || gs->code == GIMPLE_OMP_RETURN;
+ return gs->code == GIMPLE_OMP_ATOMIC_STORE;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <gimple_statement_omp_return>::test (gimple gs)
+{
+ return gs->code == GIMPLE_OMP_RETURN;
}
template <>
return gs->code == GIMPLE_OMP_FOR;
}
+template <>
+template <>
+inline bool
+is_a_helper <gimple_statement_omp_taskreg>::test (gimple gs)
+{
+ return gs->code == GIMPLE_OMP_PARALLEL || gs->code == GIMPLE_OMP_TASK;
+}
+
template <>
template <>
inline bool
is_a_helper <gimple_statement_omp_parallel>::test (gimple gs)
{
- return gs->code == GIMPLE_OMP_PARALLEL || gs->code == GIMPLE_OMP_TASK || gs->code == GIMPLE_OMP_TARGET;
+ return gs->code == GIMPLE_OMP_PARALLEL;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <gimple_statement_omp_target>::test (gimple gs)
+{
+ return gs->code == GIMPLE_OMP_TARGET;
}
template <>
inline bool
is_a_helper <gimple_statement_omp_single>::test (gimple gs)
{
- return gs->code == GIMPLE_OMP_SINGLE || gs->code == GIMPLE_OMP_TEAMS;
+ return gs->code == GIMPLE_OMP_SINGLE;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <gimple_statement_omp_teams>::test (gimple gs)
+{
+ return gs->code == GIMPLE_OMP_TEAMS;
}
template <>
template <>
template <>
inline bool
-is_a_helper <const gimple_statement_eh_ctrl>::test (const_gimple gs)
+is_a_helper <const gimple_statement_resx>::test (const_gimple gs)
{
- return gs->code == GIMPLE_RESX || gs->code == GIMPLE_EH_DISPATCH;
+ return gs->code == GIMPLE_RESX;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <const gimple_statement_eh_dispatch>::test (const_gimple gs)
+{
+ return gs->code == GIMPLE_EH_DISPATCH;
}
template <>
inline bool
is_a_helper <const gimple_statement_omp_atomic_store>::test (const_gimple gs)
{
- return gs->code == GIMPLE_OMP_ATOMIC_STORE || gs->code == GIMPLE_OMP_RETURN;
+ return gs->code == GIMPLE_OMP_ATOMIC_STORE;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <const gimple_statement_omp_return>::test (const_gimple gs)
+{
+ return gs->code == GIMPLE_OMP_RETURN;
}
template <>
return gs->code == GIMPLE_OMP_FOR;
}
+template <>
+template <>
+inline bool
+is_a_helper <const gimple_statement_omp_taskreg>::test (const_gimple gs)
+{
+ return gs->code == GIMPLE_OMP_PARALLEL || gs->code == GIMPLE_OMP_TASK;
+}
+
template <>
template <>
inline bool
is_a_helper <const gimple_statement_omp_parallel>::test (const_gimple gs)
{
- return gs->code == GIMPLE_OMP_PARALLEL || gs->code == GIMPLE_OMP_TASK || gs->code == GIMPLE_OMP_TARGET;
+ return gs->code == GIMPLE_OMP_PARALLEL;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <const gimple_statement_omp_target>::test (const_gimple gs)
+{
+ return gs->code == GIMPLE_OMP_TARGET;
}
template <>
inline bool
is_a_helper <const gimple_statement_omp_single>::test (const_gimple gs)
{
- return gs->code == GIMPLE_OMP_SINGLE || gs->code == GIMPLE_OMP_TEAMS;
+ return gs->code == GIMPLE_OMP_SINGLE;
+}
+
+template <>
+template <>
+inline bool
+is_a_helper <const gimple_statement_omp_teams>::test (const_gimple gs)
+{
+ return gs->code == GIMPLE_OMP_TEAMS;
}
template <>
static inline void
gimple_omp_return_set_lhs (gimple g, tree lhs)
{
- gimple_statement_omp_atomic_store *omp_atomic_store_stmt =
- as_a <gimple_statement_omp_atomic_store> (g);
- omp_atomic_store_stmt->val = lhs;
+ gimple_statement_omp_return *omp_return_stmt =
+ as_a <gimple_statement_omp_return> (g);
+ omp_return_stmt->val = lhs;
}
static inline tree
gimple_omp_return_lhs (const_gimple g)
{
- const gimple_statement_omp_atomic_store *omp_atomic_store_stmt =
- as_a <const gimple_statement_omp_atomic_store> (g);
- return omp_atomic_store_stmt->val;
+ const gimple_statement_omp_return *omp_return_stmt =
+ as_a <const gimple_statement_omp_return> (g);
+ return omp_return_stmt->val;
}
static inline tree *
gimple_omp_return_lhs_ptr (gimple g)
{
- gimple_statement_omp_atomic_store *omp_atomic_store_stmt =
- as_a <gimple_statement_omp_atomic_store> (g);
- return &omp_atomic_store_stmt->val;
+ gimple_statement_omp_return *omp_return_stmt =
+ as_a <gimple_statement_omp_return> (g);
+ return &omp_return_stmt->val;
}
static inline int
gimple_resx_region (const_gimple gs)
{
- const gimple_statement_eh_ctrl *eh_ctrl_stmt =
- as_a <const gimple_statement_eh_ctrl> (gs);
- return eh_ctrl_stmt->region;
+ const gimple_statement_resx *resx_stmt =
+ as_a <const gimple_statement_resx> (gs);
+ return resx_stmt->region;
}
/* Set REGION to be the region number for GIMPLE_RESX GS. */
static inline void
gimple_resx_set_region (gimple gs, int region)
{
- gimple_statement_eh_ctrl *eh_ctrl_stmt =
- as_a <gimple_statement_eh_ctrl> (gs);
- eh_ctrl_stmt->region = region;
+ gimple_statement_resx *resx_stmt = as_a <gimple_statement_resx> (gs);
+ resx_stmt->region = region;
}
/* Return the region number for GIMPLE_EH_DISPATCH GS. */
static inline int
gimple_eh_dispatch_region (const_gimple gs)
{
- const gimple_statement_eh_ctrl *eh_ctrl_stmt =
- as_a <const gimple_statement_eh_ctrl> (gs);
- return eh_ctrl_stmt->region;
+ const gimple_statement_eh_dispatch *eh_dispatch_stmt =
+ as_a <const gimple_statement_eh_dispatch> (gs);
+ return eh_dispatch_stmt->region;
}
/* Set REGION to be the region number for GIMPLE_EH_DISPATCH GS. */
static inline void
gimple_eh_dispatch_set_region (gimple gs, int region)
{
- gimple_statement_eh_ctrl *eh_ctrl_stmt =
- as_a <gimple_statement_eh_ctrl> (gs);
- eh_ctrl_stmt->region = region;
+ gimple_statement_eh_dispatch *eh_dispatch_stmt =
+ as_a <gimple_statement_eh_dispatch> (gs);
+ eh_dispatch_stmt->region = region;
}
/* Return the number of labels associated with the switch statement GS. */
static inline tree
gimple_omp_taskreg_clauses (const_gimple gs)
{
- const gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <const gimple_statement_omp_parallel> (gs);
- return omp_parallel_stmt->clauses;
+ const gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <const gimple_statement_omp_taskreg> (gs);
+ return omp_taskreg_stmt->clauses;
}
static inline tree *
gimple_omp_taskreg_clauses_ptr (gimple gs)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- return &omp_parallel_stmt->clauses;
+ gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <gimple_statement_omp_taskreg> (gs);
+ return &omp_taskreg_stmt->clauses;
}
static inline void
gimple_omp_taskreg_set_clauses (gimple gs, tree clauses)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- omp_parallel_stmt->clauses = clauses;
+ gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <gimple_statement_omp_taskreg> (gs);
+ omp_taskreg_stmt->clauses = clauses;
}
static inline tree
gimple_omp_taskreg_child_fn (const_gimple gs)
{
- const gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <const gimple_statement_omp_parallel> (gs);
- return omp_parallel_stmt->child_fn;
+ const gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <const gimple_statement_omp_taskreg> (gs);
+ return omp_taskreg_stmt->child_fn;
}
/* Return a pointer to the child function used to hold the body of
static inline tree *
gimple_omp_taskreg_child_fn_ptr (gimple gs)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- return &omp_parallel_stmt->child_fn;
+ gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <gimple_statement_omp_taskreg> (gs);
+ return &omp_taskreg_stmt->child_fn;
}
static inline void
gimple_omp_taskreg_set_child_fn (gimple gs, tree child_fn)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- omp_parallel_stmt->child_fn = child_fn;
+ gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <gimple_statement_omp_taskreg> (gs);
+ omp_taskreg_stmt->child_fn = child_fn;
}
static inline tree
gimple_omp_taskreg_data_arg (const_gimple gs)
{
- const gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <const gimple_statement_omp_parallel> (gs);
- return omp_parallel_stmt->data_arg;
+ const gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <const gimple_statement_omp_taskreg> (gs);
+ return omp_taskreg_stmt->data_arg;
}
static inline tree *
gimple_omp_taskreg_data_arg_ptr (gimple gs)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- return &omp_parallel_stmt->data_arg;
+ gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <gimple_statement_omp_taskreg> (gs);
+ return &omp_taskreg_stmt->data_arg;
}
static inline void
gimple_omp_taskreg_set_data_arg (gimple gs, tree data_arg)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- omp_parallel_stmt->data_arg = data_arg;
+ gimple_statement_omp_taskreg *omp_taskreg_stmt =
+ as_a <gimple_statement_omp_taskreg> (gs);
+ omp_taskreg_stmt->data_arg = data_arg;
}
static inline tree
gimple_omp_target_clauses (const_gimple gs)
{
- const gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <const gimple_statement_omp_parallel> (gs);
- return omp_parallel_stmt->clauses;
+ const gimple_statement_omp_target *omp_target_stmt =
+ as_a <const gimple_statement_omp_target> (gs);
+ return omp_target_stmt->clauses;
}
static inline tree *
gimple_omp_target_clauses_ptr (gimple gs)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- return &omp_parallel_stmt->clauses;
+ gimple_statement_omp_target *omp_target_stmt =
+ as_a <gimple_statement_omp_target> (gs);
+ return &omp_target_stmt->clauses;
}
static inline void
gimple_omp_target_set_clauses (gimple gs, tree clauses)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- omp_parallel_stmt->clauses = clauses;
+ gimple_statement_omp_target *omp_target_stmt =
+ as_a <gimple_statement_omp_target> (gs);
+ omp_target_stmt->clauses = clauses;
}
static inline tree
gimple_omp_target_child_fn (const_gimple gs)
{
- const gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <const gimple_statement_omp_parallel> (gs);
- return omp_parallel_stmt->child_fn;
+ const gimple_statement_omp_target *omp_target_stmt =
+ as_a <const gimple_statement_omp_target> (gs);
+ return omp_target_stmt->child_fn;
}
/* Return a pointer to the child function used to hold the body of
static inline tree *
gimple_omp_target_child_fn_ptr (gimple gs)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- return &omp_parallel_stmt->child_fn;
+ gimple_statement_omp_target *omp_target_stmt =
+ as_a <gimple_statement_omp_target> (gs);
+ return &omp_target_stmt->child_fn;
}
static inline void
gimple_omp_target_set_child_fn (gimple gs, tree child_fn)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- omp_parallel_stmt->child_fn = child_fn;
+ gimple_statement_omp_target *omp_target_stmt =
+ as_a <gimple_statement_omp_target> (gs);
+ omp_target_stmt->child_fn = child_fn;
}
static inline tree
gimple_omp_target_data_arg (const_gimple gs)
{
- const gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <const gimple_statement_omp_parallel> (gs);
- return omp_parallel_stmt->data_arg;
+ const gimple_statement_omp_target *omp_target_stmt =
+ as_a <const gimple_statement_omp_target> (gs);
+ return omp_target_stmt->data_arg;
}
static inline tree *
gimple_omp_target_data_arg_ptr (gimple gs)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- return &omp_parallel_stmt->data_arg;
+ gimple_statement_omp_target *omp_target_stmt =
+ as_a <gimple_statement_omp_target> (gs);
+ return &omp_target_stmt->data_arg;
}
static inline void
gimple_omp_target_set_data_arg (gimple gs, tree data_arg)
{
- gimple_statement_omp_parallel *omp_parallel_stmt =
- as_a <gimple_statement_omp_parallel> (gs);
- omp_parallel_stmt->data_arg = data_arg;
+ gimple_statement_omp_target *omp_target_stmt =
+ as_a <gimple_statement_omp_target> (gs);
+ omp_target_stmt->data_arg = data_arg;
}
static inline tree
gimple_omp_teams_clauses (const_gimple gs)
{
- const gimple_statement_omp_single *omp_single_stmt =
- as_a <const gimple_statement_omp_single> (gs);
- return omp_single_stmt->clauses;
+ const gimple_statement_omp_teams *omp_teams_stmt =
+ as_a <const gimple_statement_omp_teams> (gs);
+ return omp_teams_stmt->clauses;
}
static inline tree *
gimple_omp_teams_clauses_ptr (gimple gs)
{
- gimple_statement_omp_single *omp_single_stmt =
- as_a <gimple_statement_omp_single> (gs);
- return &omp_single_stmt->clauses;
+ gimple_statement_omp_teams *omp_teams_stmt =
+ as_a <gimple_statement_omp_teams> (gs);
+ return &omp_teams_stmt->clauses;
}
static inline void
gimple_omp_teams_set_clauses (gimple gs, tree clauses)
{
- gimple_statement_omp_single *omp_single_stmt =
- as_a <gimple_statement_omp_single> (gs);
- omp_single_stmt->clauses = clauses;
+ gimple_statement_omp_teams *omp_teams_stmt =
+ as_a <gimple_statement_omp_teams> (gs);
+ omp_teams_stmt->clauses = clauses;
}