LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::GlobalStatus Struct Reference

#include <GlobalStatus.h>

Collaboration diagram for llvm::GlobalStatus:
Collaboration graph
[legend]

Public Types

enum  StoredType { NotStored, InitializerStored, StoredOnce, Stored }
 Keep track of what stores to the global look like. More...
 

Public Member Functions

 GlobalStatus ()
 

Static Public Member Functions

static bool analyzeGlobal (const Value *V, GlobalStatus &GS)
 

Public Attributes

bool IsCompared
 True if the global's address is used in a comparison. More...
 
bool IsLoaded
 
enum llvm::GlobalStatus::StoredType StoredType
 
ValueStoredOnceValue
 
const FunctionAccessingFunction
 
bool HasMultipleAccessingFunctions
 
bool HasNonInstructionUser
 
AtomicOrdering Ordering
 Set to the strongest atomic ordering requirement. More...
 

Detailed Description

As we analyze each global, keep track of some information about it. If we find out that the address of the global is taken, none of this info will be accurate.

Definition at line 28 of file GlobalStatus.h.

Member Enumeration Documentation

Keep track of what stores to the global look like.

Enumerator
NotStored 

There is no store to this global. It can thus be marked constant.

InitializerStored 

This global is stored to, but the only thing stored is the constant it was initialized with. This is only tracked for scalar globals.

StoredOnce 

This global is stored to, but only its initializer and one other value is ever stored to it. If this global isStoredOnce, we track the value stored to it in StoredOnceValue below. This is only tracked for scalar globals.

Stored 

This global is stored to by multiple values or something else that we cannot track.

Definition at line 37 of file GlobalStatus.h.

Constructor & Destructor Documentation

GlobalStatus::GlobalStatus ( )

Definition at line 179 of file GlobalStatus.cpp.

Member Function Documentation

bool GlobalStatus::analyzeGlobal ( const Value V,
GlobalStatus GS 
)
static

Look at all uses of the global and fill in the GlobalStatus structure. If the global has its address taken, return true to indicate we can't do anything with it.

Definition at line 174 of file GlobalStatus.cpp.

References analyzeGlobalAux().

Member Data Documentation

const Function* llvm::GlobalStatus::AccessingFunction

These start out null/false. When the first accessing function is noticed, it is recorded. When a second different accessing function is noticed, HasMultipleAccessingFunctions is set to true.

Definition at line 63 of file GlobalStatus.h.

Referenced by analyzeGlobalAux().

bool llvm::GlobalStatus::HasMultipleAccessingFunctions

Definition at line 64 of file GlobalStatus.h.

Referenced by analyzeGlobalAux().

bool llvm::GlobalStatus::HasNonInstructionUser

Set to true if this global has a user that is not an instruction (e.g. a constant expr or GV initializer).

Definition at line 68 of file GlobalStatus.h.

Referenced by analyzeGlobalAux().

bool llvm::GlobalStatus::IsCompared

True if the global's address is used in a comparison.

Definition at line 30 of file GlobalStatus.h.

Referenced by analyzeGlobalAux(), and canBeHidden().

bool llvm::GlobalStatus::IsLoaded

True if the global is ever loaded. If the global isn't ever loaded it can be deleted.

Definition at line 34 of file GlobalStatus.h.

Referenced by analyzeGlobalAux().

AtomicOrdering llvm::GlobalStatus::Ordering

Set to the strongest atomic ordering requirement.

Definition at line 71 of file GlobalStatus.h.

Referenced by analyzeGlobalAux().

Value* llvm::GlobalStatus::StoredOnceValue

If only one value (besides the initializer constant) is ever stored to this global, keep track of what value it is.

Definition at line 58 of file GlobalStatus.h.

Referenced by analyzeGlobalAux().


The documentation for this struct was generated from the following files: