Commit Graph

11108 Commits

Author SHA1 Message Date
Daniel Dunbar b311a6b3ae MC: First cut at MCFixup, for getting fixup/relocation information out of an MCCodeEmitter.
llvm-svn: 95708
2010-02-09 22:59:55 +00:00
Chris Lattner b06015aa69 move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h.  #include the new TargetOpcodes.h
into MachineInstr.  Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the 
codebase.

llvm-svn: 95687
2010-02-09 19:54:29 +00:00
Jeffrey Yasskin ddfe8092e9 Add support for TypeBuilder<const/volatile void*, false>.
Thanks to Jochen Wilhelmy for the suggestion!

llvm-svn: 95677
2010-02-09 19:07:19 +00:00
Eric Christopher ad1aa86276 Pull these back out, they're a little too aggressive and time
consuming for a simple optimization.

llvm-svn: 95671
2010-02-09 17:29:18 +00:00
Dan Gohman 1413549418 Mention IndVarSimplify in the comment by getSmallConstantTripCount, as
is done for getTripCount.

llvm-svn: 95666
2010-02-09 17:00:40 +00:00
Dan Gohman d39d8c83cc Mention vAny and iPTRAny in a comment.
llvm-svn: 95665
2010-02-09 16:59:14 +00:00
Dale Johannesen ce33776994 Debug operands should not be def or kill.
llvm-svn: 95632
2010-02-09 00:42:08 +00:00
Lang Hames 4695741312 Changed the definition of an "invalid" slot to include the empty & tombstone values, but not zero.
llvm-svn: 95631
2010-02-09 00:41:23 +00:00
Chris Lattner 928480ec18 stop using reserved identifiers.
llvm-svn: 95630
2010-02-09 00:40:07 +00:00
Eric Christopher 9f85e7eb16 Add a new pass to do llvm.objsize lowering using SCEV.
Initial skeleton and SCEVUnknown lowering implemented,
the rest should come relatively quickly.  Move testcase
to new directory.

Move pass to right before SimplifyLibCalls - which is
moved down a bit so we can take advantage of a few opts.

llvm-svn: 95628
2010-02-09 00:35:38 +00:00
Dan Gohman cc066d6e66 Add explicit keywords.
llvm-svn: 95626
2010-02-09 00:29:29 +00:00
Chris Lattner a460edca79 enhance bits_storage to work with enums by using a c-style
cast instead of reinterpret_cast, fixing PR6243.  Apparently
reinterpret_cast and I aren't getting along today.

llvm-svn: 95622
2010-02-09 00:05:45 +00:00
Dan Gohman 9a9d9ea7bc Document that MCExpr::Mod is actually remainder.
Document that MCExpr::Div, Mod, and the comparison operators are all
signed operators.

Document that the comparison operators' results are target-dependent.

Document that the behavior of shr is target-dependent.

llvm-svn: 95619
2010-02-08 23:58:47 +00:00
Sean Callanan cb956d93b8 Added header file declarations and .exports entries
for the new APIs offered by the enhanced disassembler
for inspecting operands.

llvm-svn: 95606
2010-02-08 23:34:25 +00:00
Chris Lattner ebc970e4eb now that @GOTOFF is no longer represented as a suffix on a
MCSymbol, we can remove the 'suffix' argument of 
GetBlockAddressSymbol.  Do so.

llvm-svn: 95601
2010-02-08 23:10:08 +00:00
Chris Lattner 54d88f1759 don't make hte dtor private or we can't construct the class.
llvm-svn: 95587
2010-02-08 22:07:36 +00:00
Chris Lattner cddc4c17b1 use a c-style cast instead of reinterpret-cast, as sometimes the
cast needs to adjust for a vtable pointer when going from base to
derived type (when the base doesn't have a vtable but the
derived type does).

llvm-svn: 95585
2010-02-08 22:05:38 +00:00
Dan Gohman 6f9646e1c5 Add const qualifiers.
llvm-svn: 95582
2010-02-08 22:00:06 +00:00
Dan Gohman 3464a5b609 Rename the PerformTailCallOpt variable to GuaranteedTailCallOpt to reflect
its current purpose.

llvm-svn: 95564
2010-02-08 20:27:50 +00:00
Chris Lattner 38d022efe9 add scaffolding for target-specific MCExprs.
llvm-svn: 95559
2010-02-08 19:41:07 +00:00
Duncan Sands e77bebc4ba Flesh out the list of predicates, for those who like this style. I was
looking for isPointer, and added the rest for uniformity.

llvm-svn: 95557
2010-02-08 19:36:51 +00:00
Daniel Dunbar ff7e95878f ImmutableIntervalMap: Fix for unqualified lookup into dependent base class, done
by clang's -fixit! :)

llvm-svn: 95551
2010-02-08 18:08:46 +00:00
Dale Johannesen 0a741b7258 Add a Debug bit to MachineOperand, for uses that
are from debug info.  Add an iterator to MachineRegisterInfo
to skip Debug operands when walking the use list.  No
functional change yet.

llvm-svn: 95473
2010-02-06 02:28:32 +00:00
Jakob Stoklund Olesen 74bb06c0f0 Reintroduce the InlineHint function attribute.
This time it's for real! I am going to hook this up in the frontends as well.

The inliner has some experimental heuristics for dealing with the inline hint.
When given a -respect-inlinehint option, functions marked with the inline
keyword are given a threshold just above the default for -O3.

We need some experiments to determine if that is the right thing to do.

llvm-svn: 95466
2010-02-06 01:16:28 +00:00
Devang Patel 6efc8e5120 Set DW_AT_artificial only if argument is marked as artificial.
llvm-svn: 95461
2010-02-06 01:02:37 +00:00
Jakob Stoklund Olesen b0b2297066 Update CodeMetrics to count 'big' function calls explicitly.
llvm-svn: 95453
2010-02-05 23:21:18 +00:00
Jakob Stoklund Olesen 916f48a054 Teach SimplifyCFG about magic pointer constants.
Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.

Code like this:

void f(const char *x) {
  if (!x)
    puts("null");
  else if ((uintptr_t)x == 1)
    puts("one");
  else if (x == (char*)2 || x == (char*)3)
    puts("two");
  else if ((intptr_t)x == 4)
    puts("four");
  else
    puts(x);
}

Now becomes a switch:

define void @f(i8* %x) nounwind ssp {
entry:
  %magicptr23 = ptrtoint i8* %x to i64            ; <i64> [#uses=1]
  switch i64 %magicptr23, label %if.else16 [
    i64 0, label %if.then
    i64 1, label %if.then2
    i64 2, label %if.then9
    i64 3, label %if.then9
    i64 4, label %if.then14
  ]

Note that LLVM's own DenseMap uses magic pointers.

llvm-svn: 95439
2010-02-05 22:03:18 +00:00
Jeffrey Yasskin 31faefff92 Move --march, --mcpu, and --mattr from JIT/TargetSelect.cpp to lli.cpp.
llc.cpp also defined these flags, meaning that when I linked all of LLVM's
libraries into a single shared library, llc crashed on startup with duplicate
flag definitions.  This patch passes them through the EngineBuilder into
JIT::selectTarget().

llvm-svn: 95390
2010-02-05 16:19:36 +00:00
Daniel Dunbar 675ae27e37 MC: Change default comment column to 40 characters.
llvm-svn: 95378
2010-02-05 07:32:18 +00:00
Evan Phoenix ee9d33b4e7 Disable external stubs for X86-32 and X86-64
Instruction selection for X86 now can choose an instruction
sequence that will fit any address of any symbol, no matter
the pointer width. X86-64 uses a mov+call-via-reg sequence
for this.

llvm-svn: 95323
2010-02-04 19:56:59 +00:00
Chris Lattner 8228b11abc add support for the sparcv9-*-* target triple to turn on
64-bit sparc codegen.  Patch by Nathan Keynes!

llvm-svn: 95293
2010-02-04 06:34:01 +00:00
Dan Gohman 9946b5109c Change the argument to getIntegerSCEV to be an int64_t, rather
than int. This will make it more convenient for LSR, which does
a lot of things with int64_t offsets.

llvm-svn: 95281
2010-02-04 02:43:51 +00:00
Sean Callanan 9eb8d6fb43 Filled in a few new APIs for the enhanced
disassembly library that provide access to
instruction information, and fixed ambiguous
wording in the comments for the header.

llvm-svn: 95274
2010-02-04 01:43:08 +00:00
Devang Patel 999b499024 Provide interface to identifiy artificial methods.
llvm-svn: 95240
2010-02-03 19:57:19 +00:00
Jeffrey Yasskin 099552a0ca r94686 changed all ModuleProvider parameters to Modules, which made the
1-argument ExecutionEngine::create(Module*) ambiguous with the signature that
used to be ExecutionEngine::create(ModuleProvider*, defaulted_params).  Fixed
by removing the 1-argument create().  Fixes PR6221.

llvm-svn: 95236
2010-02-03 19:18:04 +00:00
Daniel Dunbar e3ee332fe0 llvm-mc: Add --show-inst option, for showing the MCInst inline with the assembly
output.

llvm-svn: 95227
2010-02-03 18:18:30 +00:00
Zhongxing Xu f5e0e3c3a7 Remove redundant declaration.
llvm-svn: 95213
2010-02-03 09:05:21 +00:00
Zhongxing Xu dcfa2576b0 Add constructors.
llvm-svn: 95212
2010-02-03 09:04:11 +00:00
Chris Lattner 082f484074 make MachineModuleInfoMachO hold non-const MCSymbol*'s instead
of const ones.  non-const ones aren't very useful, because you can't
even, say, emit them.

llvm-svn: 95205
2010-02-03 06:18:30 +00:00
Chris Lattner edcf065a29 change addPassesToEmitFile to return true on failure instead of its input,
add -filetype=null for performance testing and remove -filetype=dynlib,
which isn't planned to be implemented.

llvm-svn: 95202
2010-02-03 05:55:08 +00:00
Jeffrey Yasskin bf5ce0a6c2 Reconfigure with autoconf-2.60, and fix autoconf.ac to work with that version.
llvm-svn: 95191
2010-02-03 02:11:49 +00:00
Chris Lattner f1866ab682 privatize a bunch of methods and move \n printing into them.
llvm-svn: 95186
2010-02-03 01:46:05 +00:00
Chris Lattner 8856a67e41 Hook up -filetype=obj through the MachO streamer. Here's a demo:
$ cat t.ll 
@g = global i32 42
$ llc t.ll -o t.o -filetype=obj
$ nm t.o
00000000 D _g

There is still a ton of work left.  Instructions are not being encoded
yet apparently.

llvm-svn: 95162
2010-02-02 23:57:42 +00:00
Evan Cheng 6f36a083ef Revert 95130.
llvm-svn: 95160
2010-02-02 23:55:14 +00:00
Chris Lattner b0d44c3807 refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it.  This allows other 
types of MCStreamer's to be passed in.

llvm-svn: 95155
2010-02-02 23:37:42 +00:00
Chris Lattner 919b97436e Remove a bunch of stuff around the edges of the ELF writer.
Now the only use of the ELF writer is the JIT, which won't be
easy to fix in the short term. :( :(

llvm-svn: 95148
2010-02-02 22:31:11 +00:00
Daniel Dunbar 255a8c8b13 MC/Mach-O: Set SOME_INSTRUCTIONS bit for sections.
llvm-svn: 95135
2010-02-02 21:44:01 +00:00
Chris Lattner 0cd6c2a047 eliminate all the dead addSimpleCodeEmitter implementations.
eliminate random "code emitter" stuff in Alpha, except for
the JIT path.  Next up, remove the template cruft.

llvm-svn: 95131
2010-02-02 21:31:47 +00:00
Evan Cheng c1b0116ff1 Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.
llvm-svn: 95130
2010-02-02 21:29:10 +00:00
Dan Gohman 47d7347858 Make DenseSet's erase pass on the return value rather than swallowing it.
llvm-svn: 95127
2010-02-02 21:11:22 +00:00