//RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder -analyzer-config debug.AnalysisOrder:EndFunction=true %s 2>&1 | FileCheck %s // At the end of a function, we can only obtain a ReturnStmt if the last // CFGElement in the CFGBlock is either a CFGStmt or a CFGAutomaticObjDtor. void noReturnStmt() {} struct S { S(); ~S(); }; int dtorAfterReturnStmt() { S s; return 0; } S endsWithReturnStmt() { return S(); } // endsWithReturnStmt() // CHECK: EndFunction // CHECK-NEXT: ReturnStmt: yes // CHECK-NEXT: CFGElement: CFGStmt // dtorAfterReturnStmt() // CHECK: EndFunction // CHECK-NEXT: ReturnStmt: yes // CHECK-NEXT: CFGElement: CFGAutomaticObjDtor // noReturnStmt() // CHECK: EndFunction // CHECK-NEXT: ReturnStmt: no