blob: 398dec7dd0a1dccedfa894c209de5b2f24356f31 [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"
Anton Korobeynikovae9f3a32008-02-20 11:08:44 +000012#include <cstring>
Gordon Henriksenc0491ac2007-10-06 21:00:36 +000013
14using namespace llvm;
15
Chris Lattnerd686c8e2010-01-09 22:27:07 +000016LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action,
17 char **OutMessages) {
Gordon Henriksenc0491ac2007-10-06 21:00:36 +000018 std::string Messages;
19
Chris Lattnerd686c8e2010-01-09 22:27:07 +000020 LLVMBool Result = verifyModule(*unwrap(M),
Gordon Henriksenc0491ac2007-10-06 21:00:36 +000021 static_cast<VerifierFailureAction>(Action),
22 OutMessages? &Messages : 0);
23
24 if (OutMessages)
25 *OutMessages = strdup(Messages.c_str());
26
27 return Result;
28}
29
Chris Lattnerd686c8e2010-01-09 22:27:07 +000030LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action) {
Gordon Henriksenc0491ac2007-10-06 21:00:36 +000031 return verifyFunction(*unwrap<Function>(Fn),
32 static_cast<VerifierFailureAction>(Action));
33}
34
Erick Tryzelaard6d01852008-03-31 16:22:09 +000035void LLVMViewFunctionCFG(LLVMValueRef Fn) {
36 Function *F = unwrap<Function>(Fn);
37 F->viewCFG();
38}
39
40void LLVMViewFunctionCFGOnly(LLVMValueRef Fn) {
41 Function *F = unwrap<Function>(Fn);
42 F->viewCFGOnly();
43}