Commit Graph

86519 Commits

Author SHA1 Message Date
Evan Cheng 0664a67fe1 Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.
llvm-svn: 107550
2010-07-03 00:40:23 +00:00
Bruno Cardoso Lopes 621c85b038 Add AVX SSE4.1 round instructions
llvm-svn: 107549
2010-07-03 00:37:44 +00:00
Nick Kledzik 209ac43b76 ARM before armv6 did not supprt 'rev' instruction
llvm-svn: 107548
2010-07-03 00:12:47 +00:00
Jakob Stoklund Olesen 4c82a9e7d0 Detect and handle COPY in many places.
This code is transitional, it will soon be possible to eliminate
isExtractSubreg, isInsertSubreg, and isMoveInstr in most places.

llvm-svn: 107547
2010-07-03 00:04:37 +00:00
Dan Gohman ece6906ea0 Document that BasicAA respects noalias, while InterproceduralBasicAA
does not.

llvm-svn: 107546
2010-07-02 23:52:36 +00:00
Johnny Chen f1d2ac7c01 Test variable with function ptr type and that break on the function works.
llvm-svn: 107545
2010-07-02 23:50:37 +00:00
Dan Gohman de25629e4f Describe which dependencies are relevant to noalias, and document how
AliasAnalyses have the choice to respect noalias.

llvm-svn: 107544
2010-07-02 23:46:54 +00:00
Douglas Gregor a6d695057c Lazily declare implicit copy constructors.
llvm-svn: 107543
2010-07-02 23:41:54 +00:00
Argyrios Kyrtzidis 3701fcd759 Read/write CastExpr's CXXBaseSpecifierArray for PCH.
llvm-svn: 107542
2010-07-02 23:30:27 +00:00
Argyrios Kyrtzidis 4259ebcdac Fix broken PCH support for CXXDefaultArgExpr.
llvm-svn: 107541
2010-07-02 23:30:15 +00:00
Bruno Cardoso Lopes 5b59c1bf1f Simple refactoring of SSE4.1 instructions, making room for the AVX forms
llvm-svn: 107540
2010-07-02 23:27:59 +00:00
Greg Clayton 13a177aeb8 Plugged 4 more leaks in the libunwind code. One leaks is still left in as it
is quite gnarly code and there is no good way to clean it up. I will have
Jason look at a fix for this.

llvm-svn: 107539
2010-07-02 23:23:14 +00:00
Dan Gohman 3770af5852 Add some html anchors, to allow attributes to be linked to directly.
llvm-svn: 107538
2010-07-02 23:18:08 +00:00
Eric Christopher 5e5416056b 80-col fixup.
llvm-svn: 107537
2010-07-02 23:17:38 +00:00
Douglas Gregor 52b7282081 Introduce a new routine, LookupConstructors(), and use it for all
constructor-name lookup.

llvm-svn: 107536
2010-07-02 23:12:18 +00:00
Stephen Canon 04b97967dd [unsigned] int -> float soft-float conversions for single- and double-precision
llvm-svn: 107535
2010-07-02 23:05:46 +00:00
Jakob Stoklund Olesen 676a15bdf5 Add a new target independent COPY instruction and code to lower it.
The COPY instruction is intended to replace the target specific copy
instructions for virtual registers as well as the EXTRACT_SUBREG and
INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection
DAG.

COPY is lowered to native register copies by LowerSubregs.

llvm-svn: 107529
2010-07-02 22:29:50 +00:00
Sean Callanan 248e64b5b8 Fixes to improve logging (by printing basic
block labels) and produce cleaner IR (by removing
the thread-safe statics guards)

llvm-svn: 107528
2010-07-02 22:22:28 +00:00
Johnny Chen 03813ec687 Also verified the values of global variables.
llvm-svn: 107525
2010-07-02 22:12:25 +00:00
Stephen Canon 4be0d7ead9 float- and double-to-integer soft-float conversions for compiler-rt
llvm-svn: 107524
2010-07-02 22:10:58 +00:00
Bruno Cardoso Lopes c7111fd355 - Add support for the rest of AVX SSE3 instructions
- Fix VEX prefix to be emitted with 3 bytes whenever VEX_5M
represents a REX equivalent two byte leading opcode

llvm-svn: 107523
2010-07-02 22:06:54 +00:00
Johnny Chen 85d6948f3d Add a test to show global variables and to verify that they do display as having
global scopes.

llvm-svn: 107522
2010-07-02 22:04:42 +00:00
Douglas Gregor 330b9cff74 Lazily declare copy-assignment operators.
llvm-svn: 107521
2010-07-02 21:50:04 +00:00
Jakob Stoklund Olesen 3b1657b777 Clean up TargetOpcodes.h a bit, and limit the number of places where the full
list of predefined instructions appear. Add some consistency checks.

Ideally, TargetOpcodes.h should be produced by TableGen from Target.td, but it
is hardly worth the effort.

llvm-svn: 107520
2010-07-02 21:44:22 +00:00
Sean Callanan 177909a350 Small fixes to the DWARF relocator.
llvm-svn: 107518
2010-07-02 21:28:35 +00:00
Jim Grosbach 3c43248560 Custom inserters (e.g., conditional moves in Thumb1 can introduce
new basic blocks, and if used as a function argument, that can cause call frame
setup / destroy pairs to be split across a basic block boundary. That prevents
us from doing a simple assertion to check that the pairs match and alloc/
dealloc the same amount of space. Modify the assertion to only check the
amount allocated when there are matching pairs in the same basic block.

rdar://8022442

llvm-svn: 107517
2010-07-02 21:23:37 +00:00
Devang Patel cefe3831b7 MDString is already checked earlier.
llvm-svn: 107516
2010-07-02 21:13:23 +00:00
Sean Callanan 2df8a1f39c Added the skeleton of a transformation pass to
convert IR to DWARF.  So far, this pass only
performs a depth-first traversal of the IR,
logging each basic block as it finds it.

llvm-svn: 107515
2010-07-02 21:09:36 +00:00
Evan Cheng c3525dc0fd Remove early IT block formation. It's not used.
llvm-svn: 107513
2010-07-02 21:07:09 +00:00
Zhanyong Wan 5bf71a3af5 Make RecursiveASTVisitor traverse function parameter types in a function
prototype declaration.  Reviewed by chandlerc and csilvers.

llvm-svn: 107511
2010-07-02 21:02:30 +00:00
Douglas Gregor 7454c563f1 Lazily declare the implicitly-declared destructor in a C++ class.
llvm-svn: 107510
2010-07-02 20:37:36 +00:00
Evan Cheng 0ce84486c3 - Two-address pass should not assume unfolding is always successful.
- X86 unfolding should check if the instructions being unfolded has memoperands.
  If there is no memoperands, then it must assume conservative alignment. If this
  would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand
  etc. should not unfold the instruction.

llvm-svn: 107509
2010-07-02 20:36:18 +00:00
Johnny Chen c653d4c574 Fixed logic error; checking return status and raising exception should only be
done if the environment variable LLDB_LOG is defined.

llvm-svn: 107508
2010-07-02 20:35:23 +00:00
Dan Gohman 2eaa26e8ea Remove an unused enum.
llvm-svn: 107507
2010-07-02 20:20:50 +00:00
Dale Johannesen 4d887f7ca7 Propagate the AlignStack bit in InlineAsm's to the
PrologEpilog code, and use it to determine whether
the asm forces stack alignment or not.  gcc consistently
does not do this for GCC-style asms; Apple gcc inconsistently
sometimes does it for asm blocks.  There is no
convenient place to put a bit in either the SDNode or
the MachineInstr form, so I've added an extra operand
to each; unlovely, but it does allow for expansion for
more bits, should we need it.  PR 5125.  Some
existing testcases are affected.
The operand lists of the SDNode and MachineInstr forms
are indexed with awesome mnemonics, like "2"; I may
fix this someday, but not now.  I'm not making it any
worse.  If anyone is inspired I think you can find all
the right places from this patch.

llvm-svn: 107506
2010-07-02 20:16:09 +00:00
Jakob Stoklund Olesen df8429aeb4 Remove invalid assert
llvm-svn: 107505
2010-07-02 19:54:47 +00:00
Jakob Stoklund Olesen 9e2d9478f2 Handle unindexed instructions in SlotIndices.
SlotIndexes::insertMachineInstrInMaps would crash when trying to insert an
instruction imediately after an unmapped debug value.

llvm-svn: 107504
2010-07-02 19:54:45 +00:00
Jakob Stoklund Olesen cf6c5c960f Properly handle debug values during inline spilling.
llvm-svn: 107503
2010-07-02 19:54:40 +00:00
Eli Friedman b6c9e103a1 Implement GetProgramFileSpec().
llvm-svn: 107502
2010-07-02 19:38:10 +00:00
Eli Friedman 5423ebff13 Add hacky, incomplete Linux host implementation; barely enough to allow
compiling lldb.  Someone else might try to improve it, though. :)

llvm-svn: 107501
2010-07-02 19:28:44 +00:00
Gabor Greif 9da02a83e9 beautify output
llvm-svn: 107500
2010-07-02 19:26:28 +00:00
Eli Friedman feaeebfb5d Add const qualification; fixes error on gcc 4.4.
llvm-svn: 107499
2010-07-02 19:15:50 +00:00
Gabor Greif e537ddbdb4 use ArgOperand API
llvm-svn: 107498
2010-07-02 19:08:46 +00:00
Craig Silverstein 27e11400ad Don't visit implicitly defined functions (default constructors and the
like).  Our goal with this visitor is to visit exactly what people type.

Reviewed by chandlerc.

llvm-svn: 107497
2010-07-02 19:07:50 +00:00
Dan Gohman 832282e061 Don't claim to preserve AliasAnalysis. First, this is doesn't actually
have any effect, and second, deleting stores can potentially invalidate
an AliasAnalysis, and there's currently no notification for this.

llvm-svn: 107496
2010-07-02 18:43:05 +00:00
Dan Gohman df12d08b8e Reword the definition of the noalias attribute. The intention is for
the noalias argument on function attributes be usable to model the
C99 restrict keyword on arguments, and to allow AliasAnalysis to
consider a noalias-attributed argument to be an "identified object".

To support this, refactor a new "based on" concept out of the current
pointer aliasing "associated" concept. This "based on" concept is very
similar to (though it is not identical with) the "based on" concept
in C99.

Also, reword the definition of NoAlias to more closely describe the
concept that the optimizer uses.

llvm-svn: 107495
2010-07-02 18:41:32 +00:00
Greg Clayton d2d60ce388 Updated to llvm/clang from July 2, 2010 at 8:00AM.
llvm-svn: 107494
2010-07-02 18:39:06 +00:00
Jakob Stoklund Olesen 96037187e5 Rematerialize as much as possible before inserting spills and reloads.
This allows us to recognize the common case where all uses could be
rematerialized, and no stack slot allocation is necessary.

If some values could be fully rematerialized, remove them from the live range
before allocating a stack slot for the rest.

llvm-svn: 107492
2010-07-02 17:44:57 +00:00
Douglas Gregor 0be31a2eb7 Move the "current scope" state from the Parser into Action. This
allows Sema some limited access to the current scope, which we only
use in one way: when Sema is performing some kind of declaration that
is not directly driven by the parser (e.g., due to template
instantiatio or lazy declaration of a member), we can find the Scope
associated with a DeclContext, if that DeclContext is still in the
process of being parsed. 

Use this to make the implicit declaration of special member functions
in a C++ class more "scope-less", rather than using the NULL Scope hack.

llvm-svn: 107491
2010-07-02 17:43:08 +00:00
Jim Grosbach 9b7755fbc6 80-column and trailing whitespace cleanup.
llvm-svn: 107490
2010-07-02 17:41:59 +00:00