当前位置: 首页>>代码示例>>C++>>正文


C++ locationt::is_start_thread方法代码示例

本文整理汇总了C++中locationt::is_start_thread方法的典型用法代码示例。如果您正苦于以下问题:C++ locationt::is_start_thread方法的具体用法?C++ locationt::is_start_thread怎么用?C++ locationt::is_start_thread使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在locationt的用法示例。


在下文中一共展示了locationt::is_start_thread方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: transform

 void transform(
   locationt from,
   locationt to,
   ai_baset &ai,
   const namespacet &ns) override final
 {
   if(!reachable) return;
   if(from->is_start_thread() ||
      to->is_end_thread())
   {
     has_spawn=true;
     is_threaded=true;
   }
 }
开发者ID:lihaol,项目名称:cbmc,代码行数:14,代码来源:is_threaded.cpp

示例2: transform

  void transform(
    locationt from,
    locationt to,
    ai_baset &ai,
    const namespacet &ns) final
  {
    // assert(reachable);

    if(!reachable)
      return;

    if(from->is_start_thread())
      is_threaded=true;
  }
开发者ID:danpoe,项目名称:cbmc,代码行数:14,代码来源:is_threaded.cpp

示例3: transform

void rd_range_domaint::transform(
  locationt from,
  locationt to,
  ai_baset &ai,
  const namespacet &ns)
{
  reaching_definitions_analysist *rd=
    dynamic_cast<reaching_definitions_analysist*>(&ai);
  assert(rd!=0);

  assert(bv_container);

  // kill values
  if(from->is_dead())
    transform_dead(ns, from);
  // kill thread-local values
  else if(from->is_start_thread())
    transform_start_thread(ns, *rd);
  // do argument-to-parameter assignments
  else if(from->is_function_call())
    transform_function_call(ns, from, to, *rd);
  // cleanup parameters
  else if(from->is_end_function())
    transform_end_function(ns, from, to, *rd);
  // lhs assignements
  else if(from->is_assign())
    transform_assign(ns, from, from, *rd);
  // initial (non-deterministic) value
  else if(from->is_decl())
    transform_assign(ns, from, from, *rd);

#if 0
  // handle return values
  if(to->is_function_call())
  {
    const code_function_callt &code=to_code_function_call(to->code);

    if(code.lhs().is_not_nil())
    {
      rw_range_set_value_sett rw_set(ns, rd->get_value_sets());
      goto_rw(to, rw_set);
      const bool is_must_alias=rw_set.get_w_set().size()==1;

      forall_rw_range_set_w_objects(it, rw_set)
      {
        const irep_idt &identifier=it->first;
        // ignore symex::invalid_object
        const symbolt *symbol_ptr;
        if(ns.lookup(identifier, symbol_ptr))
          continue;
        assert(symbol_ptr!=0);

        const range_domaint &ranges=rw_set.get_ranges(it);

        if(is_must_alias &&
           (!rd->get_is_threaded()(from) ||
            (!symbol_ptr->is_shared() &&
             !rd->get_is_dirty()(identifier))))
          for(const auto &range : ranges)
            kill(identifier, range.first, range.second);
      }
    }
  }
开发者ID:DanielNeville,项目名称:cbmc,代码行数:63,代码来源:reaching_definitions.cpp


注:本文中的locationt::is_start_thread方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。