retdec
Classes | Namespaces | Macros | Functions
idioms_libgcc.cpp File Reference

Idioms produced by libgcc. More...

#include <functional>
#include <llvm/IR/InstIterator.h>
#include <llvm/IR/Instruction.h>
#include <llvm/IR/Instructions.h>
#include "retdec/utils/string.h"
#include "retdec/bin2llvmir/optimizations/idioms_libgcc/idioms_libgcc.h"
#include "retdec/bin2llvmir/utils/llvm.h"
#include "retdec/bin2llvmir/utils/debug.h"
#include "retdec/bin2llvmir/utils/ir_modifier.h"

Classes

class  retdec::bin2llvmir::IdiomsLibgccImpl
 

Namespaces

 retdec
 
 retdec::bin2llvmir
 

Macros

#define debug_enabled   false
 
#define ID_FNC_PAIR(ID, FNC)    {ID, [this] (llvm::CallInst* c) { return this->_impl->FNC(c); }}
 

Functions

template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getOp0< std::int32_t > (llvm::CallInst *call)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getOp0< std::int64_t > (llvm::CallInst *call)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getOp1< std::int32_t > (llvm::CallInst *call)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getOp1< std::int64_t > (llvm::CallInst *call)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getRes0< std::int32_t > (llvm::CallInst *call, llvm::Value *res)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getRes0< std::int64_t > (llvm::CallInst *call, llvm::Value *res)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getRes1< std::int32_t > (llvm::CallInst *call, llvm::Value *res)
 
template<>
llvm::Value * retdec::bin2llvmir::IdiomsLibgccImpl::getRes1< std::int64_t > (llvm::CallInst *call, llvm::Value *res)
 
static RegisterPass< IdiomsLibgcc > retdec::bin2llvmir::X ("retdec-idioms-libgcc", "Libgcc idioms optimization", false, false)
 

Detailed Description

Idioms produced by libgcc.

Macro Definition Documentation

◆ debug_enabled

#define debug_enabled   false

◆ ID_FNC_PAIR

#define ID_FNC_PAIR (   ID,
  FNC 
)     {ID, [this] (llvm::CallInst* c) { return this->_impl->FNC(c); }}