107950 Commits

Author SHA1 Message Date
Jim Grosbach
ed5134a921 Size reducing SP adjusting t2ADDri needs to check predication.
tADDrSPi is not predicable, so we can't size-reduce a t2ADDri to it if the
predicate is anything other than "always."

llvm-svn: 134130
2011-06-30 02:22:49 +00:00
Evan Cheng
0b33a323ac Fix ARMSubtarget feature parsing.
llvm-svn: 134129
2011-06-30 02:12:44 +00:00
Evan Cheng
adc7959851 createTargetMachine now takes a CPU string.
llvm-svn: 134128
2011-06-30 02:06:32 +00:00
Evan Cheng
fe6e405e8c Fix the ridiculous SubtargetFeatures API where it implicitly expects CPU name to
be the first encoded as the first feature. It then uses the CPU name to look up
features / scheduling itineray even though clients know full well the CPU name
being used to query these properties.

The fix is to just have the clients explictly pass the CPU name!

llvm-svn: 134127
2011-06-30 01:53:36 +00:00
Joerg Sonnenberger
91e5662075 Recognize the xstorerng alias for VIA PadLock's xstore instruction.
llvm-svn: 134126
2011-06-30 01:38:03 +00:00
Jakob Stoklund Olesen
adc6a4ca5d Reapply r134047 now that the world is ready for it.
This patch will sometimes choose live range split points next to
interference instead of always splitting next to a register point. That
means spill code can now appear almost anywhere, and it was necessary
to fix code that didn't expect that.

The difficult places were:

- Between a CALL returning a value on the x87 stack and the
  corresponding FpPOP_RETVAL (was FpGET_ST0). Probably also near x87
  inline assembly, but that didn't actually show up in testing.

- Between a CALL popping arguments off the stack and the corresponding
  ADJCALLSTACKUP.

Both are fixed now. The only place spill code can't appear is after
terminators, see SplitAnalysis::getLastSplitPoint.

Original commit message:

Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.

This function has to deal with a lot of special cases, and the old
version got it wrong sometimes. In particular, it would sometimes leave
multiple uses in the stack interval in a single block. That causes bad
code with multiple reloads in the same basic block.

The new version handles block entry and exit in a single pass. It first
eliminates all the easy cases, and then goes on to create a local
interval for the blocks with difficult interference. Previously, we
would only create the local interval for completely isolated blocks.

It can happen that the stack interval becomes completely empty because
we could allocate a register in all edge bundles, and the new local
intervals deal with the interference. The empty stack interval is
harmless, but we need to remove a SplitKit assertion that checks for
empty intervals.

llvm-svn: 134125
2011-06-30 01:30:39 +00:00
Andrew Trick
cc68605353 indvars -disable-iv-rewrite: handle an edge case involving identity phis.
llvm-svn: 134124
2011-06-30 01:27:23 +00:00
Eric Christopher
f81292ba3b Remove getRegClassForInlineAsmConstraint and all dependencies.
Fixes rdar://9643582

llvm-svn: 134123
2011-06-30 01:20:03 +00:00
Eric Christopher
16cde8ad36 Make sure we use the correct register class here since we'll need to
care about spill values.

llvm-svn: 134122
2011-06-30 01:05:46 +00:00
Eric Christopher
c932173773 Fix a small thinko for constant i64 lock/orq optimization where we
we didn't have an opcode for 64-bit constant or expressions.

Fixes rdar://9692967

llvm-svn: 134121
2011-06-30 00:48:30 +00:00
John McCall
8bdae58c3a Document and check tighter assumptions about the TemplateName of a
TemplateSpecializationType.

llvm-svn: 134120
2011-06-30 00:42:27 +00:00
Bill Wendling
7517466970 * Use the proper size to output the range size.
* Rough in the compact encoding part.

llvm-svn: 134119
2011-06-30 00:30:52 +00:00
Johnny Chen
086b1b774e While we are at it, let's also exercise the similar SBModule.FindGlobalVariables() API within
the find_global_variables() test method.

Skipping test_find_global_variables_with_dwarf(self) due to segmentation fault.

llvm-svn: 134118
2011-06-30 00:24:31 +00:00
Bill Wendling
4cdb206e76 Stupid error: If the LSDA and Personality functions aren't there, emit 0 instead
of the encoding.

llvm-svn: 134117
2011-06-29 23:53:16 +00:00
Devang Patel
0eada03216 Revert r133953 for now.
llvm-svn: 134116
2011-06-29 23:50:13 +00:00
Bill Wendling
8fa4ada5cf We don't want to use relocations inside the compact unwind section. Just use the
symbols instead.

llvm-svn: 134115
2011-06-29 23:49:12 +00:00
Jim Grosbach
a8a8067dec Remove redundant Thumb2 ADD/SUB SP instruction definitions.
Unlike Thumb1, Thumb2 does not have dedicated encodings for adjusting the
stack pointer. It can just use the normal add-register-immediate encoding
since it can use all registers as a source, not just R0-R7. The extra
instruction definitions are just duplicates of the normal instructions with
the (not well enforced) constraint that the source register was SP.

llvm-svn: 134114
2011-06-29 23:25:04 +00:00
Jakob Stoklund Olesen
9f4cc4645b Always adjust the stack pointer immediately after the call.
Some x86-32 calls pop values off the stack, and we need to readjust the
stack pointer after the call. This happens when ADJCALLSTACKUP is
eliminated.

It could happen that spill code was inserted between the CALL and
ADJCALLSTACKUP instructions, and we would compute wrong stack pointer
offsets for those frame index references.

Fix this by inserting the stack pointer adjustment immediately after the
call instead of where the ADJCALLSTACKUP instruction was erased.

I don't have a test case since we don't currently insert code in that
position. We will soon, though. I am testing a regalloc patch that
didn't work on Linux because of this.

llvm-svn: 134113
2011-06-29 23:11:39 +00:00
Andrew Trick
ecdd6e4c67 indvars -disable-iv-rewrite: insert new trunc instructions carefully.
llvm-svn: 134112
2011-06-29 23:03:57 +00:00
Andrew Trick
e98e9a1540 Added IRBuilder::SetInsertPoint(Use) to find a valid insertion point
that dominates the given Use.

llvm-svn: 134111
2011-06-29 23:01:52 +00:00
Andrew Trick
f0f9f45087 whitespace
llvm-svn: 134110
2011-06-29 22:52:51 +00:00
Johnny Chen
466c593912 Add test cases to TestTargetAPI.py to exercise the newly added SBTarget.FindGlobalVariables() API.
llvm-svn: 134109
2011-06-29 22:45:06 +00:00
Enrico Granata
4becb37e34 This commit adds a new top subcommand "summary" to command type named "type". Currently this command
implements three commands:

type summary add <format> <typename1> [<typename2> ...]
type summary delete <typename1> [<typename2> ...]
type summary list [<typename1> [<typename2>] ...]
type summary clear

This allows you to specify the default format that will be used to display
summaries for variables, shown when you use "frame variable" or "expression", or the SBValue classes.

Examples:
type summary add "x = ${var.x}" Point

type summary list

type summary add --one-liner SimpleType

llvm-svn: 134108
2011-06-29 22:27:15 +00:00
Johnny Chen
d1ef780bb3 Add fuzz calls for SBModule/SBTarget.FindGlobalVariables(...).
llvm-svn: 134107
2011-06-29 22:26:59 +00:00
Cameron Zwarich
34c8f51d65 In the ARM global merging pass, allow extraneous alignment specifiers. This pass
already makes the assumption, which is correct on ARM, that a type's alignment is
less than its alloc size. This improves codegen with Clang (which inserts a lot of
extraneous alignment specifiers) and fixes <rdar://problem/9695089>.

llvm-svn: 134106
2011-06-29 22:24:25 +00:00
Argyrios Kyrtzidis
8cc0459907 Introduce a caching mechanism for macro expanded tokens.
Previously macro expanded tokens were added to Preprocessor's bump allocator and never released,
even after the TokenLexer that were lexing them was finished, thus they were wasting memory.
A very "useful" boost library was causing clang to eat 1 GB just for the expanded macro tokens.

Introduce a special cache that works like a stack; a TokenLexer can add the macro expanded tokens
in the cache, and when it finishes, the tokens are removed from the end of the cache.

Now consumed memory by expanded tokens for that library is ~ 1.5 MB.

Part of rdar://9327049.

llvm-svn: 134105
2011-06-29 22:20:11 +00:00
Argyrios Kyrtzidis
8bb2ecf32d [libclang] Introduce cxcursor::getCursorParentDecl(CXCursor Cursor) and use it at the appropriate place in CIndex.cpp
No functionality change.

llvm-svn: 134104
2011-06-29 22:20:07 +00:00
Argyrios Kyrtzidis
e379ee31c0 Introduce Preprocessor::getTotalMemory() and use it in CIndex.cpp, no functionality change.
llvm-svn: 134103
2011-06-29 22:20:04 +00:00
Greg Clayton
dea8cb4fe3 Added support for finding and global variables in the SBTarget and SBModule
level in the public API. 

Also modified the ValueObject values to be able to display global variables
without having a valid running process. The globals will read themselves from
the object file section data if there is no process, and from the process if
there is one.

Also fixed an issue where modifications for dynamic types could cause child
values of ValueObjects to not show up if the value was unable to evaluate
itself (children of NULL pointer objects).

llvm-svn: 134102
2011-06-29 22:09:02 +00:00
Jim Grosbach
1c2d4f2fea ARM RSCS* don't need explicit TableGen decoder checks.
They've been pseudos for a while now, so the decoder will never see
them in the first place.

llvm-svn: 134101
2011-06-29 22:01:15 +00:00
Evan Cheng
77ec04c656 Indentation
llvm-svn: 134100
2011-06-29 21:58:37 +00:00
Douglas Gregor
a82064ca27 Check for deprecated/unavailable/etc attributes on fields that are
initialized via initializer lists. Fixes <rdar://problem/9694686>.

llvm-svn: 134099
2011-06-29 21:51:31 +00:00
Johnny Chen
8bae20f7f7 Add fuzz calls for SBTypeMember.
llvm-svn: 134098
2011-06-29 21:42:46 +00:00
Douglas Gregor
825faf7a4f When redeclaring a local extern in the same scope, make sure that we
replace the existing declaration appropriately. Patch by Jordy Rose,
fixes PR10013 / <rdar://problem/9584157>.

llvm-svn: 134097
2011-06-29 21:22:02 +00:00
Johnny Chen
6999f86617 Add fuzz calls to SBType, SBValue, and SBValueList.
Fixed crashes for SBValue fuzz calls.
And change 'bool SBType::IsPointerType(void)' to
'bool SBType::IsAPointerType(void)' to avoid name collision with the static 'bool SBType::IsPointerType(void *)'
function, which SWIG cannot handle.

llvm-svn: 134096
2011-06-29 21:19:39 +00:00
Eric Christopher
1b8b9419ba Remove getRegClassForInlineAsmConstraint from the ARM port.
Part of rdar://9643582

llvm-svn: 134095
2011-06-29 21:10:36 +00:00
Eric Christopher
03e756b93b Remove todo.
llvm-svn: 134094
2011-06-29 21:05:54 +00:00
Rafael Espindola
ff218bd3fd make compose and isMoveInstr static functions.
llvm-svn: 134093
2011-06-29 20:55:48 +00:00
Jim Grosbach
d86f34d631 Refactor away tSpill and tRestore pseudos in ARM backend.
The tSpill and tRestore instructions are just copies of the tSTRspi and
tLDRspi instructions, respectively. Just use those directly instead.

llvm-svn: 134092
2011-06-29 20:26:39 +00:00
Fariborz Jahanian
326701e2c7 objc-arc: fix a IRGen crash when checking for
accessibility of an initializer which is a compound 
statement. // rdar://9694706

llvm-svn: 134091
2011-06-29 20:00:16 +00:00
Jim Ingham
20c771998b Remove a few more places where we were iterating linearly over the Breakpoint Site's rather than
looking up what we needed by address, which is much faster.

llvm-svn: 134090
2011-06-29 19:42:28 +00:00
Eric Christopher
e449141788 Add a TODO for the Alpha port inline asm constraints.
llvm-svn: 134089
2011-06-29 19:41:27 +00:00
Eric Christopher
372a5c2a98 Move Alpha from getRegClassForInlineAsmConstraint to
getRegForInlineAsmConstraint.

Part of rdar://9643582

llvm-svn: 134088
2011-06-29 19:40:01 +00:00
Eric Christopher
eaf77dc2bd Update comment for getRegForInlineAsmConstraint for Mips.
llvm-svn: 134087
2011-06-29 19:33:04 +00:00
Eric Christopher
dabd8a7bef Move the Blackfin port away from getRegClassForInlineAsmConstraint by
creating a few specific register classes.

Part of rdar://9643582

llvm-svn: 134086
2011-06-29 19:30:29 +00:00
Eric Christopher
d0e48c84f0 Remove getRegClassForInlineAsmConstraint from MBlaze. Add a TODO comment
for the port.

Part of rdar://9643582

llvm-svn: 134085
2011-06-29 19:12:24 +00:00
Eric Christopher
9519c08a43 Remove getRegClassForInlineAsmConstraint for Mips.
Part of rdar://9643582

llvm-svn: 134084
2011-06-29 19:04:31 +00:00
Eric Christopher
ff740621f1 Remove getRegClassForInlineAsmConstraint from sparc.
Part of rdar://9643582

llvm-svn: 134083
2011-06-29 18:53:10 +00:00
Fariborz Jahanian
25e61c58bf Use existing -fcatch-undefined-behavior option,
replacing -freset-local-blocks. // rdar://9227352

llvm-svn: 134082
2011-06-29 18:41:17 +00:00
Greg Clayton
626f4a13e3 Fixed an issue that was checked in with the dynamic types and update point
changes that caused all SBValue objects to completely ignore the target
lock due to bad C++ scoping of the target Mutex::Locker variables.

llvm-svn: 134081
2011-06-29 18:28:50 +00:00