blob: 493c6e88b3f8ed978dab0daab73ec53833bdb54a [file] [log] [blame]
Gordon Henriksenc0491ac2007-10-06 21:00:36 +00001//===-- Analysis.cpp ------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
Chris Lattner4ee451d2007-12-29 20:36:04 +00005// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
Gordon Henriksenc0491ac2007-10-06 21:00:36 +00007//
8//===----------------------------------------------------------------------===//
9
10#include "llvm-c/Analysis.h"
11#include "llvm/Analysis/Verifier.h"
12#include <fstream>
Anton Korobeynikovae9f3a32008-02-20 11:08:44 +000013#include <cstring>
Gordon Henriksenc0491ac2007-10-06 21:00:36 +000014
15using namespace llvm;
16
17int LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action,
18 char **OutMessages) {
19 std::string Messages;
20
21 int Result = verifyModule(*unwrap(M),
22 static_cast<VerifierFailureAction>(Action),
23 OutMessages? &Messages : 0);
24
25 if (OutMessages)
26 *OutMessages = strdup(Messages.c_str());
27
28 return Result;
29}
30
Gordon Henriksenc0491ac2007-10-06 21:00:36 +000031int LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action) {
32 return verifyFunction(*unwrap<Function>(Fn),
33 static_cast<VerifierFailureAction>(Action));
34}
35
Erick Tryzelaard6d01852008-03-31 16:22:09 +000036void LLVMViewFunctionCFG(LLVMValueRef Fn) {
37 Function *F = unwrap<Function>(Fn);
38 F->viewCFG();
39}
40
41void LLVMViewFunctionCFGOnly(LLVMValueRef Fn) {
42 Function *F = unwrap<Function>(Fn);
43 F->viewCFGOnly();
44}