forked from OSchip/llvm-project
parent
7f3e84c9fd
commit
35521e2310
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# This function determins if the the isinf function isavailable on this
|
# This function determins if the isinf function isavailable on this
|
||||||
# platform.
|
# platform.
|
||||||
#
|
#
|
||||||
AC_DEFUN([AC_FUNC_ISINF],[
|
AC_DEFUN([AC_FUNC_ISINF],[
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# This function determins if the the HUGE_VAL macro is compilable with the
|
# This function determins if the HUGE_VAL macro is compilable with the
|
||||||
# -pedantic switch or not. XCode < 2.4.1 doesn't get it right.
|
# -pedantic switch or not. XCode < 2.4.1 doesn't get it right.
|
||||||
#
|
#
|
||||||
AC_DEFUN([AC_HUGE_VAL_CHECK],[
|
AC_DEFUN([AC_HUGE_VAL_CHECK],[
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# This function determins if the the srand48,drand48,lrand48 functions are
|
# This function determins if the srand48,drand48,lrand48 functions are
|
||||||
# available on this platform.
|
# available on this platform.
|
||||||
#
|
#
|
||||||
AC_DEFUN([AC_FUNC_RAND48],[
|
AC_DEFUN([AC_FUNC_RAND48],[
|
||||||
|
|
|
@ -318,7 +318,7 @@ Notes for frontends
|
||||||
operation, and vice versa.
|
operation, and vice versa.
|
||||||
|
|
||||||
Notes for optimizers
|
Notes for optimizers
|
||||||
In general, optimizers should treat this like a nothrow call; the the possible
|
In general, optimizers should treat this like a nothrow call; the possible
|
||||||
optimizations are usually not interesting.
|
optimizations are usually not interesting.
|
||||||
|
|
||||||
Notes for code generation
|
Notes for code generation
|
||||||
|
|
|
@ -208,7 +208,7 @@ section (above) to determine which modifiers are applicable to which operations.
|
||||||
When inserting or moving member files, this option specifies the destination of
|
When inserting or moving member files, this option specifies the destination of
|
||||||
the new files as being before the *relpos* member. If *relpos* is not
|
the new files as being before the *relpos* member. If *relpos* is not
|
||||||
found, the files are placed at the end of the archive. This modifier is
|
found, the files are placed at the end of the archive. This modifier is
|
||||||
identical to the the *i* modifier.
|
identical to the *i* modifier.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ CommandLine library to have the following features:</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Speed: The CommandLine library is very quick and uses little resources. The
|
<li>Speed: The CommandLine library is very quick and uses little resources. The
|
||||||
parsing time of the library is directly proportional to the number of arguments
|
parsing time of the library is directly proportional to the number of arguments
|
||||||
parsed, not the the number of options recognized. Additionally, command line
|
parsed, not the number of options recognized. Additionally, command line
|
||||||
argument values are captured transparently into user defined global variables,
|
argument values are captured transparently into user defined global variables,
|
||||||
which can be accessed like any other variable (and with the same
|
which can be accessed like any other variable (and with the same
|
||||||
performance).</li>
|
performance).</li>
|
||||||
|
|
|
@ -627,7 +627,7 @@ upgrading to a newer version of Gold.</p>
|
||||||
LLVM and to give you some basic information about the LLVM environment.</p>
|
LLVM and to give you some basic information about the LLVM environment.</p>
|
||||||
|
|
||||||
<p>The later sections of this guide describe the <a
|
<p>The later sections of this guide describe the <a
|
||||||
href="#layout">general layout</a> of the the LLVM source tree, a <a
|
href="#layout">general layout</a> of the LLVM source tree, a <a
|
||||||
href="#tutorial">simple example</a> using the LLVM tool chain, and <a
|
href="#tutorial">simple example</a> using the LLVM tool chain, and <a
|
||||||
href="#links">links</a> to find more information about LLVM or to get
|
href="#links">links</a> to find more information about LLVM or to get
|
||||||
help via e-mail.</p>
|
help via e-mail.</p>
|
||||||
|
@ -1535,7 +1535,7 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
|
||||||
bitcode or assembly (with the <tt>-emit-llvm</tt> option) instead of the
|
bitcode or assembly (with the <tt>-emit-llvm</tt> option) instead of the
|
||||||
usual machine code output. It works just like any other GCC compiler,
|
usual machine code output. It works just like any other GCC compiler,
|
||||||
taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used.
|
taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used.
|
||||||
Additionally, the the source code for <tt>llvm-gcc</tt> is available as a
|
Additionally, the source code for <tt>llvm-gcc</tt> is available as a
|
||||||
separate Subversion module.</dd>
|
separate Subversion module.</dd>
|
||||||
|
|
||||||
<dt><tt><b>opt</b></tt></dt>
|
<dt><tt><b>opt</b></tt></dt>
|
||||||
|
|
|
@ -170,7 +170,7 @@ An Example Using the LLVM Tool Chain
|
||||||
C:\..> clang -c hello.c -emit-llvm -o hello.bc
|
C:\..> clang -c hello.c -emit-llvm -o hello.bc
|
||||||
|
|
||||||
This will create the result file ``hello.bc`` which is the LLVM bitcode
|
This will create the result file ``hello.bc`` which is the LLVM bitcode
|
||||||
that corresponds the the compiled program and the library facilities that
|
that corresponds the compiled program and the library facilities that
|
||||||
it required. You can execute this file directly using ``lli`` tool,
|
it required. You can execute this file directly using ``lli`` tool,
|
||||||
compile it to native assembly with the ``llc``, optimize or analyze it
|
compile it to native assembly with the ``llc``, optimize or analyze it
|
||||||
further with the ``opt`` tool, etc.
|
further with the ``opt`` tool, etc.
|
||||||
|
|
|
@ -1432,7 +1432,7 @@ target datalayout = "<i>layout specification</i>"
|
||||||
<li>If no match is found, and the type sought is an integer type, then the
|
<li>If no match is found, and the type sought is an integer type, then the
|
||||||
smallest integer type that is larger than the bitwidth of the sought type
|
smallest integer type that is larger than the bitwidth of the sought type
|
||||||
is used. If none of the specifications are larger than the bitwidth then
|
is used. If none of the specifications are larger than the bitwidth then
|
||||||
the the largest integer type is used. For example, given the default
|
the largest integer type is used. For example, given the default
|
||||||
specifications above, the i7 type will use the alignment of i8 (next
|
specifications above, the i7 type will use the alignment of i8 (next
|
||||||
largest) while both i65 and i256 will use the alignment of i64 (largest
|
largest) while both i65 and i256 will use the alignment of i64 (largest
|
||||||
specified).</li>
|
specified).</li>
|
||||||
|
|
|
@ -754,7 +754,7 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
|
||||||
</h3>
|
</h3>
|
||||||
<div>
|
<div>
|
||||||
<p>Provides other passes access to information on how the size and alignment
|
<p>Provides other passes access to information on how the size and alignment
|
||||||
required by the the target ABI for various data types.</p>
|
required by the target ABI for various data types.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3864,7 +3864,7 @@ is its address (after linking) which is guaranteed to be constant.</p>
|
||||||
*Ty, LinkageTypes Linkage, const std::string &N = "", Module* Parent = 0)</tt>
|
*Ty, LinkageTypes Linkage, const std::string &N = "", Module* Parent = 0)</tt>
|
||||||
|
|
||||||
<p>Constructor used when you need to create new <tt>Function</tt>s to add
|
<p>Constructor used when you need to create new <tt>Function</tt>s to add
|
||||||
the the program. The constructor must specify the type of the function to
|
the program. The constructor must specify the type of the function to
|
||||||
create and what type of linkage the function should have. The <a
|
create and what type of linkage the function should have. The <a
|
||||||
href="#FunctionType"><tt>FunctionType</tt></a> argument
|
href="#FunctionType"><tt>FunctionType</tt></a> argument
|
||||||
specifies the formal arguments and return value for the function. The same
|
specifies the formal arguments and return value for the function. The same
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<p>Welcome to the the final chapter of the "<a href="index.html">Implementing a
|
<p>Welcome to the final chapter of the "<a href="index.html">Implementing a
|
||||||
language with LLVM</a>" tutorial. In the course of this tutorial, we have grown
|
language with LLVM</a>" tutorial. In the course of this tutorial, we have grown
|
||||||
our little Kaleidoscope language from being a useless toy, to being a
|
our little Kaleidoscope language from being a useless toy, to being a
|
||||||
semi-interesting (but probably still useless) toy. :)</p>
|
semi-interesting (but probably still useless) toy. :)</p>
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<p>Welcome to the the final chapter of the "<a href="index.html">Implementing a
|
<p>Welcome to the final chapter of the "<a href="index.html">Implementing a
|
||||||
language with LLVM</a>" tutorial. In the course of this tutorial, we have grown
|
language with LLVM</a>" tutorial. In the course of this tutorial, we have grown
|
||||||
our little Kaleidoscope language from being a useless toy, to being a
|
our little Kaleidoscope language from being a useless toy, to being a
|
||||||
semi-interesting (but probably still useless) toy. :)</p>
|
semi-interesting (but probably still useless) toy. :)</p>
|
||||||
|
|
|
@ -187,7 +187,7 @@ public:
|
||||||
/// current node, counting both nodes.
|
/// current node, counting both nodes.
|
||||||
unsigned getPathLength() const { return VisitStack.size(); }
|
unsigned getPathLength() const { return VisitStack.size(); }
|
||||||
|
|
||||||
/// getPath - Return the n'th node in the path from the the entry node to the
|
/// getPath - Return the n'th node in the path from the entry node to the
|
||||||
/// current node.
|
/// current node.
|
||||||
NodeType *getPath(unsigned n) const {
|
NodeType *getPath(unsigned n) const {
|
||||||
return VisitStack[n].first.getPointer();
|
return VisitStack[n].first.getPointer();
|
||||||
|
|
|
@ -399,7 +399,7 @@ namespace llvm {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getIndexBefore - Returns the index of the last indexed instruction
|
/// getIndexBefore - Returns the index of the last indexed instruction
|
||||||
/// before MI, or the the start index of its basic block.
|
/// before MI, or the start index of its basic block.
|
||||||
/// MI is not required to have an index.
|
/// MI is not required to have an index.
|
||||||
SlotIndex getIndexBefore(const MachineInstr *MI) const {
|
SlotIndex getIndexBefore(const MachineInstr *MI) const {
|
||||||
const MachineBasicBlock *MBB = MI->getParent();
|
const MachineBasicBlock *MBB = MI->getParent();
|
||||||
|
|
|
@ -583,7 +583,7 @@ error_code GetMainExecutable(const char *argv0, void *MainAddr,
|
||||||
/// @param file_offset Byte offset in file where mapping should begin.
|
/// @param file_offset Byte offset in file where mapping should begin.
|
||||||
/// @param size_t Byte length of range of the file to map.
|
/// @param size_t Byte length of range of the file to map.
|
||||||
/// @param map_writable If true, the file will be mapped in r/w such
|
/// @param map_writable If true, the file will be mapped in r/w such
|
||||||
/// that changes to the the mapped buffer will be flushed back
|
/// that changes to the mapped buffer will be flushed back
|
||||||
/// to the file. If false, the file will be mapped read-only
|
/// to the file. If false, the file will be mapped read-only
|
||||||
/// and the buffer will be read-only.
|
/// and the buffer will be read-only.
|
||||||
/// @param result Set to the start address of the mapped buffer.
|
/// @param result Set to the start address of the mapped buffer.
|
||||||
|
|
|
@ -394,7 +394,7 @@ public:
|
||||||
/// has_error - Return the value of the flag in this raw_fd_ostream indicating
|
/// has_error - Return the value of the flag in this raw_fd_ostream indicating
|
||||||
/// whether an output error has been encountered.
|
/// whether an output error has been encountered.
|
||||||
/// This doesn't implicitly flush any pending output. Also, it doesn't
|
/// This doesn't implicitly flush any pending output. Also, it doesn't
|
||||||
/// guarantee to detect all errors unless the the stream has been closed.
|
/// guarantee to detect all errors unless the stream has been closed.
|
||||||
bool has_error() const {
|
bool has_error() const {
|
||||||
return Error;
|
return Error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1188,7 +1188,7 @@ protected:
|
||||||
ShouldFoldAtomicFences = fold;
|
ShouldFoldAtomicFences = fold;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// setInsertFencesForAtomic - Set if the the DAG builder should
|
/// setInsertFencesForAtomic - Set if the DAG builder should
|
||||||
/// automatically insert fences and reduce the order of atomic memory
|
/// automatically insert fences and reduce the order of atomic memory
|
||||||
/// operations to Monotonic.
|
/// operations to Monotonic.
|
||||||
void setInsertFencesForAtomic(bool fence) {
|
void setInsertFencesForAtomic(bool fence) {
|
||||||
|
|
|
@ -37,7 +37,7 @@ Value *SCEVExpander::ReuseOrCreateCast(Value *V, Type *Ty,
|
||||||
// We use this precondition to produce a cast that will dominate all its
|
// We use this precondition to produce a cast that will dominate all its
|
||||||
// uses. In particular, this is crucial for the case where the builder's
|
// uses. In particular, this is crucial for the case where the builder's
|
||||||
// insertion point *is* the point where we were asked to put the cast.
|
// insertion point *is* the point where we were asked to put the cast.
|
||||||
// Since we don't know the the builder's insertion point is actually
|
// Since we don't know the builder's insertion point is actually
|
||||||
// where the uses will be added (only that it dominates it), we are
|
// where the uses will be added (only that it dominates it), we are
|
||||||
// not allowed to move it.
|
// not allowed to move it.
|
||||||
BasicBlock::iterator BIP = Builder.GetInsertPoint();
|
BasicBlock::iterator BIP = Builder.GetInsertPoint();
|
||||||
|
|
|
@ -212,7 +212,7 @@ bool MachineScheduler::runOnMachineFunction(MachineFunction &mf) {
|
||||||
Scheduler->startBlock(MBB);
|
Scheduler->startBlock(MBB);
|
||||||
|
|
||||||
// Break the block into scheduling regions [I, RegionEnd), and schedule each
|
// Break the block into scheduling regions [I, RegionEnd), and schedule each
|
||||||
// region as soon as it is discovered. RegionEnd points the the scheduling
|
// region as soon as it is discovered. RegionEnd points the scheduling
|
||||||
// boundary at the bottom of the region. The DAG does not include RegionEnd,
|
// boundary at the bottom of the region. The DAG does not include RegionEnd,
|
||||||
// but the region does (i.e. the next RegionEnd is above the previous
|
// but the region does (i.e. the next RegionEnd is above the previous
|
||||||
// RegionBegin). If the current block has no terminator then RegionEnd ==
|
// RegionBegin). If the current block has no terminator then RegionEnd ==
|
||||||
|
|
|
@ -853,7 +853,7 @@ void ScheduleDAGRRList::UnscheduleNodeBottomUp(SUnit *SU) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// After backtracking, the hazard checker needs to be restored to a state
|
/// After backtracking, the hazard checker needs to be restored to a state
|
||||||
/// corresponding the the current cycle.
|
/// corresponding the current cycle.
|
||||||
void ScheduleDAGRRList::RestoreHazardCheckerBottomUp() {
|
void ScheduleDAGRRList::RestoreHazardCheckerBottomUp() {
|
||||||
HazardRec->Reset();
|
HazardRec->Reset();
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ void RuntimeDyldImpl::mapSectionAddress(void *LocalAddress,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Subclasses can implement this method to create specialized image instances.
|
// Subclasses can implement this method to create specialized image instances.
|
||||||
// The caller owns the the pointer that is returned.
|
// The caller owns the pointer that is returned.
|
||||||
ObjectImage *RuntimeDyldImpl::createObjectImage(const MemoryBuffer *InputBuffer) {
|
ObjectImage *RuntimeDyldImpl::createObjectImage(const MemoryBuffer *InputBuffer) {
|
||||||
ObjectFile *ObjFile = ObjectFile::createObjectFile(const_cast<MemoryBuffer*>
|
ObjectFile *ObjFile = ObjectFile::createObjectFile(const_cast<MemoryBuffer*>
|
||||||
(InputBuffer));
|
(InputBuffer));
|
||||||
|
|
|
@ -403,7 +403,7 @@ static void WriteFragmentData(const MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||||
|
|
||||||
// See if we are aligning with nops, and if so do that first to try to fill
|
// See if we are aligning with nops, and if so do that first to try to fill
|
||||||
// the Count bytes. Then if that did not fill any bytes or there are any
|
// the Count bytes. Then if that did not fill any bytes or there are any
|
||||||
// bytes left to fill use the the Value and ValueSize to fill the rest.
|
// bytes left to fill use the Value and ValueSize to fill the rest.
|
||||||
// If we are aligning with nops, ask that target to emit the right data.
|
// If we are aligning with nops, ask that target to emit the right data.
|
||||||
if (AF.hasEmitNops()) {
|
if (AF.hasEmitNops()) {
|
||||||
if (!Asm.getBackend().writeNopData(Count, OW))
|
if (!Asm.getBackend().writeNopData(Count, OW))
|
||||||
|
|
|
@ -198,7 +198,7 @@ static inline void EmitDwarfLineTable(MCStreamer *MCOS,
|
||||||
// Set the value of the symbol, as we are at the end of the section.
|
// Set the value of the symbol, as we are at the end of the section.
|
||||||
MCOS->EmitLabel(SectionEnd);
|
MCOS->EmitLabel(SectionEnd);
|
||||||
|
|
||||||
// Switch back the the dwarf line section.
|
// Switch back the dwarf line section.
|
||||||
MCOS->SwitchSection(context.getObjectFileInfo()->getDwarfLineSection());
|
MCOS->SwitchSection(context.getObjectFileInfo()->getDwarfLineSection());
|
||||||
|
|
||||||
const MCAsmInfo &asmInfo = MCOS->getContext().getAsmInfo();
|
const MCAsmInfo &asmInfo = MCOS->getContext().getAsmInfo();
|
||||||
|
|
|
@ -1397,7 +1397,7 @@ bool AsmParser::ParseCppHashLineFilenameComment(const SMLoc &L) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// DiagHandler - will use the the last parsed cpp hash line filename comment
|
/// DiagHandler - will use the last parsed cpp hash line filename comment
|
||||||
/// for the Filename and LineNo if any in the diagnostic.
|
/// for the Filename and LineNo if any in the diagnostic.
|
||||||
void AsmParser::DiagHandler(const SMDiagnostic &Diag, void *Context) {
|
void AsmParser::DiagHandler(const SMDiagnostic &Diag, void *Context) {
|
||||||
const AsmParser *Parser = static_cast<const AsmParser*>(Context);
|
const AsmParser *Parser = static_cast<const AsmParser*>(Context);
|
||||||
|
|
|
@ -2198,7 +2198,7 @@ ARMBaseInstrInfo::getNumMicroOps(const InstrItineraryData *ItinData,
|
||||||
//
|
//
|
||||||
// On Cortex-A8, each pair of register loads / stores can be scheduled on the
|
// On Cortex-A8, each pair of register loads / stores can be scheduled on the
|
||||||
// same cycle. The scheduling for the first load / store must be done
|
// same cycle. The scheduling for the first load / store must be done
|
||||||
// separately by assuming the the address is not 64-bit aligned.
|
// separately by assuming the address is not 64-bit aligned.
|
||||||
//
|
//
|
||||||
// On Cortex-A9, the formula is simply (#reg / 2) + (#reg % 2). If the address
|
// On Cortex-A9, the formula is simply (#reg / 2) + (#reg % 2). If the address
|
||||||
// is not 64-bit aligned, then AGU would take an extra cycle. For VFP / NEON
|
// is not 64-bit aligned, then AGU would take an extra cycle. For VFP / NEON
|
||||||
|
|
|
@ -603,7 +603,7 @@ static bool tryAddingSymbolicOperand(uint64_t Address, int32_t Value,
|
||||||
/// These can often be values in a literal pool near the Address of the
|
/// These can often be values in a literal pool near the Address of the
|
||||||
/// instruction. The Address of the instruction and its immediate Value are
|
/// instruction. The Address of the instruction and its immediate Value are
|
||||||
/// used as a possible literal pool entry. The SymbolLookUp call back will
|
/// used as a possible literal pool entry. The SymbolLookUp call back will
|
||||||
/// return the name of a symbol referenced by the the literal pool's entry if
|
/// return the name of a symbol referenced by the literal pool's entry if
|
||||||
/// the referenced address is that of a symbol. Or it will return a pointer to
|
/// the referenced address is that of a symbol. Or it will return a pointer to
|
||||||
/// a literal 'C' string if the referenced address of the literal pool's entry
|
/// a literal 'C' string if the referenced address of the literal pool's entry
|
||||||
/// is an address into a section with 'C' string literals.
|
/// is an address into a section with 'C' string literals.
|
||||||
|
|
|
@ -190,7 +190,7 @@ RecordARMScatteredHalfRelocation(MachObjectWriter *Writer,
|
||||||
// 0 - arm instructions
|
// 0 - arm instructions
|
||||||
// 1 - thumb instructions
|
// 1 - thumb instructions
|
||||||
// the other half of the relocated expression is in the following pair
|
// the other half of the relocated expression is in the following pair
|
||||||
// relocation entry in the the low 16 bits of r_address field.
|
// relocation entry in the low 16 bits of r_address field.
|
||||||
unsigned ThumbBit = 0;
|
unsigned ThumbBit = 0;
|
||||||
unsigned MovtBit = 0;
|
unsigned MovtBit = 0;
|
||||||
switch ((unsigned)Fixup.getKind()) {
|
switch ((unsigned)Fixup.getKind()) {
|
||||||
|
|
|
@ -1485,7 +1485,7 @@ bool X86FastISel::X86VisitIntrinsicCall(const IntrinsicInst &I) {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// The call to CreateRegs builds two sequential registers, to store the
|
// The call to CreateRegs builds two sequential registers, to store the
|
||||||
// both the the returned values.
|
// both the returned values.
|
||||||
unsigned ResultReg = FuncInfo.CreateRegs(I.getType());
|
unsigned ResultReg = FuncInfo.CreateRegs(I.getType());
|
||||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(OpC), ResultReg)
|
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(OpC), ResultReg)
|
||||||
.addReg(Reg1).addReg(Reg2);
|
.addReg(Reg1).addReg(Reg2);
|
||||||
|
|
|
@ -1673,7 +1673,7 @@ X86TargetLowering::LowerCallResult(SDValue Chain, SDValue InFlag,
|
||||||
SDValue Val;
|
SDValue Val;
|
||||||
|
|
||||||
// If this is a call to a function that returns an fp value on the floating
|
// If this is a call to a function that returns an fp value on the floating
|
||||||
// point stack, we must guarantee the the value is popped from the stack, so
|
// point stack, we must guarantee the value is popped from the stack, so
|
||||||
// a CopyFromReg is not good enough - the copy instruction may be eliminated
|
// a CopyFromReg is not good enough - the copy instruction may be eliminated
|
||||||
// if the return value is not used. We use the FpPOP_RETVAL instruction
|
// if the return value is not used. We use the FpPOP_RETVAL instruction
|
||||||
// instead.
|
// instead.
|
||||||
|
|
|
@ -380,14 +380,14 @@ static InstructionClass GetBasicInstructionClass(const Value *V) {
|
||||||
return isa<InvokeInst>(V) ? IC_CallOrUser : IC_User;
|
return isa<InvokeInst>(V) ? IC_CallOrUser : IC_User;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// IsRetain - Test if the the given class is objc_retain or
|
/// IsRetain - Test if the given class is objc_retain or
|
||||||
/// equivalent.
|
/// equivalent.
|
||||||
static bool IsRetain(InstructionClass Class) {
|
static bool IsRetain(InstructionClass Class) {
|
||||||
return Class == IC_Retain ||
|
return Class == IC_Retain ||
|
||||||
Class == IC_RetainRV;
|
Class == IC_RetainRV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// IsAutorelease - Test if the the given class is objc_autorelease or
|
/// IsAutorelease - Test if the given class is objc_autorelease or
|
||||||
/// equivalent.
|
/// equivalent.
|
||||||
static bool IsAutorelease(InstructionClass Class) {
|
static bool IsAutorelease(InstructionClass Class) {
|
||||||
return Class == IC_Autorelease ||
|
return Class == IC_Autorelease ||
|
||||||
|
|
|
@ -1330,7 +1330,7 @@ static bool FoldTwoEntryPHINode(PHINode *PN, const TargetData *TD) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we folded the the first phi, PN dangles at this point. Refresh it. If
|
// If we folded the first phi, PN dangles at this point. Refresh it. If
|
||||||
// we ran out of PHIs then we simplified them all.
|
// we ran out of PHIs then we simplified them all.
|
||||||
PN = dyn_cast<PHINode>(BB->begin());
|
PN = dyn_cast<PHINode>(BB->begin());
|
||||||
if (PN == 0) return true;
|
if (PN == 0) return true;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# This function determins if the the isinf function isavailable on this
|
# This function determins if the isinf function isavailable on this
|
||||||
# platform.
|
# platform.
|
||||||
#
|
#
|
||||||
AC_DEFUN([AC_FUNC_ISINF],[
|
AC_DEFUN([AC_FUNC_ISINF],[
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# This function determins if the the HUGE_VAL macro is compilable with the
|
# This function determins if the HUGE_VAL macro is compilable with the
|
||||||
# -pedantic switch or not. XCode < 2.4.1 doesn't get it right.
|
# -pedantic switch or not. XCode < 2.4.1 doesn't get it right.
|
||||||
#
|
#
|
||||||
AC_DEFUN([AC_HUGE_VAL_CHECK],[
|
AC_DEFUN([AC_HUGE_VAL_CHECK],[
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# This function determins if the the srand48,drand48,lrand48 functions are
|
# This function determins if the srand48,drand48,lrand48 functions are
|
||||||
# available on this platform.
|
# available on this platform.
|
||||||
#
|
#
|
||||||
AC_DEFUN([AC_FUNC_RAND48],[
|
AC_DEFUN([AC_FUNC_RAND48],[
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
%0 = type opaque
|
%0 = type opaque
|
||||||
%struct.NSConstantString = type { i32*, i32, i8*, i32 }
|
%struct.NSConstantString = type { i32*, i32, i8*, i32 }
|
||||||
|
|
||||||
; Make sure that the string ends up the the correct section.
|
; Make sure that the string ends up the correct section.
|
||||||
|
|
||||||
; CHECK: .section __TEXT,__cstring
|
; CHECK: .section __TEXT,__cstring
|
||||||
; CHECK-NEXT: l_.str3:
|
; CHECK-NEXT: l_.str3:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
; RUN: not llvm-as < %s 2>&1 | grep "value doesn't match function result type 'i32'"
|
; RUN: not llvm-as < %s 2>&1 | grep "value doesn't match function result type 'i32'"
|
||||||
|
|
||||||
; Verify the the operand type of the ret instructions in a function match the
|
; Verify the operand type of the ret instructions in a function match the
|
||||||
; delcared return type of the function they live in.
|
; delcared return type of the function they live in.
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,7 @@ bool BugDriver::run(std::string &ErrMsg) {
|
||||||
// If we're not running as a child, the first thing that we must do is
|
// If we're not running as a child, the first thing that we must do is
|
||||||
// determine what the problem is. Does the optimization series crash the
|
// determine what the problem is. Does the optimization series crash the
|
||||||
// compiler, or does it produce illegal code? We make the top-level
|
// compiler, or does it produce illegal code? We make the top-level
|
||||||
// decision by trying to run all of the passes on the the input program,
|
// decision by trying to run all of the passes on the input program,
|
||||||
// which should generate a bitcode file. If it does generate a bitcode
|
// which should generate a bitcode file. If it does generate a bitcode
|
||||||
// file, then we know the compiler didn't crash, so try to diagnose a
|
// file, then we know the compiler didn't crash, so try to diagnose a
|
||||||
// miscompilation.
|
// miscompilation.
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
//
|
//
|
||||||
// This files implements the the LLVM difference Consumer
|
// This files implements the LLVM difference Consumer
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ void EmitMatcherTable(const Matcher *Matcher, const CodeGenDAGPatterns &CGP,
|
||||||
raw_ostream &OS);
|
raw_ostream &OS);
|
||||||
|
|
||||||
|
|
||||||
/// Matcher - Base class for all the the DAG ISel Matcher representation
|
/// Matcher - Base class for all the DAG ISel Matcher representation
|
||||||
/// nodes.
|
/// nodes.
|
||||||
class Matcher {
|
class Matcher {
|
||||||
// The next matcher node that is executed after this one. Null if this is the
|
// The next matcher node that is executed after this one. Null if this is the
|
||||||
|
|
|
@ -564,7 +564,7 @@ EmitItineraries(raw_ostream &OS,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit either the the value defined in the TableGen Record, or the default
|
// Emit either the value defined in the TableGen Record, or the default
|
||||||
// value defined in the C++ header. The Record is null if the processor does not
|
// value defined in the C++ header. The Record is null if the processor does not
|
||||||
// define a model.
|
// define a model.
|
||||||
void SubtargetEmitter::EmitProcessorProp(raw_ostream &OS, const Record *R,
|
void SubtargetEmitter::EmitProcessorProp(raw_ostream &OS, const Record *R,
|
||||||
|
|
|
@ -193,7 +193,7 @@ function check_valid_urls() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Export sources to the the build directory.
|
# Export sources to the build directory.
|
||||||
function export_sources() {
|
function export_sources() {
|
||||||
check_valid_urls
|
check_valid_urls
|
||||||
|
|
||||||
|
|
|
@ -1465,7 +1465,7 @@ char* CodePointToUtf8(UInt32 code_point, char* str) {
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The following two functions only make sense if the the system
|
// The following two functions only make sense if the system
|
||||||
// uses UTF-16 for wide string encoding. All supported systems
|
// uses UTF-16 for wide string encoding. All supported systems
|
||||||
// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.
|
// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue