| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 61715
|
| |
|
|
| |
llvm-svn: 61695
|
| |
|
|
|
|
|
|
|
| |
This means that we have to include an additional header.
This patch should be functionally equivalent. I cannot outrule any performance
degradation, though I do not expect any.
llvm-svn: 61694
|
| |
|
|
| |
llvm-svn: 61645
|
| |
|
|
|
|
|
| |
Clean up some of the existing code by making it use hasFnAttr/addFnAttr
and round it off by creating removeFnAttr.
llvm-svn: 61627
|
| |
|
|
|
|
| |
to help catch errors.
llvm-svn: 61622
|
| |
|
|
| |
llvm-svn: 61619
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.
Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.
llvm-svn: 61611
|
| |
|
|
|
|
| |
* Minor spacing and comment cleanups
llvm-svn: 61590
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and clean recursive descent parser.
This change has a couple of ramifications:
1. The parser code is about 400 lines shorter (in what we maintain, not
including what is autogenerated).
2. The code should be significantly faster than the old code because we
don't have to work around bison's poor handling of datatypes with
ctors/dtors. This also makes the code much more resistant to memory
leaks.
3. We now get caret diagnostics from the .ll parser, woo.
4. The actual diagnostics emited from the parser are completely different
so a bunch of testcases had to be updated.
5. I now disallow "%ty = type opaque %ty = type i32". There was no good
reason to support this, it was just an accident of the old
implementation. I have no reason to think that anyone is actually using
this.
6. The syntax for sticking a global variable has changed to make it
unambiguous. I don't think anyone is depending on this since only clang
supports this and it is not solid yet, so I'm not worried about anything
breaking.
7. This gets rid of the last use of bison, and along with it the .cvs files.
I'll prune this from the makefiles as a subsequent commit.
There are a few minor cleanups that can be done after this commit (suggestions
welcome!) but this passes dejagnu testing and is ready for its time in the
limelight.
llvm-svn: 61558
|
| |
|
|
| |
llvm-svn: 61554
|
| |
|
|
|
|
|
|
|
|
| |
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).
llvm-svn: 61542
|
| |
|
|
|
|
| |
there's nothing in the vector. Pacify them.
llvm-svn: 61536
|
| |
|
|
| |
llvm-svn: 61532
|
| |
|
|
| |
llvm-svn: 61531
|
| |
|
|
|
|
|
|
| |
to work out (in a very simplistic way) which function
arguments (pointer arguments only) are only dereferenced
and so do not escape. Mark such arguments 'nocapture'.
llvm-svn: 61525
|
| |
|
|
| |
llvm-svn: 61517
|
| |
|
|
|
|
| |
Darwin doesn't. Make this optional for platforms.
llvm-svn: 61484
|
| |
|
|
|
|
| |
verifier, asm parser, etc can share it.
llvm-svn: 61461
|
| |
|
|
|
|
| |
Add a clear() method to remove all ranges and value numbers for a live interval.
llvm-svn: 61459
|
| |
|
|
|
|
| |
works.
llvm-svn: 61448
|
| |
|
|
| |
llvm-svn: 61420
|
| |
|
|
|
|
| |
about other platforms.
llvm-svn: 61415
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.
This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.
llvm-svn: 61389
|
| |
|
|
|
|
| |
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.
llvm-svn: 61376
|
| |
|
|
| |
llvm-svn: 61374
|
| |
|
|
|
|
| |
functions.
llvm-svn: 61345
|
| |
|
|
|
|
|
| |
reallocations. We don't do cloning on MachineInstr schedule DAGs,
but this is a worthwhile sanity check regardless.
llvm-svn: 61343
|
| |
|
|
| |
llvm-svn: 61342
|
| |
|
|
|
|
| |
comment for the ScheduleDAGSDNodes class.
llvm-svn: 61341
|
| |
|
|
| |
llvm-svn: 61338
|
| |
|
|
| |
llvm-svn: 61280
|
| |
|
|
|
|
| |
can be static member functions.
llvm-svn: 61278
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.
172 %ECX<def> = MOV32rr %reg1039<kill>
180 INLINEASM <es:subl $5,$1
sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
188 %EAX<def> = MOV32rr %EAX<kill>
196 %ECX<def> = MOV32rr %ECX<kill>
204 %ECX<def> = MOV32rr %ECX<kill>
212 %EAX<def> = MOV32rr %EAX<kill>
220 %EAX<def> = MOV32rr %EAX
228 %reg1039<def> = MOV32rr %ECX<kill>
The early clobber operand ties ECX input to the ECX def.
The live interval of ECX is represented as this:
%reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47)
The right way to represent this is something like
%reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47)
Of course that won't work since that means overlapping live ranges defined by two val#.
The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.
llvm-svn: 61259
|
| |
|
|
| |
llvm-svn: 61253
|
| |
|
|
|
|
| |
This operation can be used to build dyn_cast, isa, and cast.
llvm-svn: 61252
|
| |
|
|
|
|
| |
Patch by Lukasz Janyst!
llvm-svn: 61251
|
| |
|
|
|
|
|
| |
The EH_frame and .eh symbols are now private, except for darwin9 and earlier.
The patch also fixes the definition of PrivateGlobalPrefix on pcc linux.
llvm-svn: 61242
|
| |
|
|
|
|
|
|
|
|
| |
The problematic part of this patch is that we were out of attribute bits,
requiring some fancy bit hacking to make it fit (by shrinking alignment)
without breaking existing users or the file format.
This change will require users to rebuild llvm-gcc to match llvm.
llvm-svn: 61239
|
| |
|
|
|
|
| |
one instruction.
llvm-svn: 61236
|
| |
|
|
|
|
|
| |
argument. Nothing was using it, and it set the MBB member without
calling enterBasicBlock, which was problematic.
llvm-svn: 61234
|
| |
|
|
| |
llvm-svn: 61209
|
| |
|
|
|
|
|
|
| |
llvm.dbg.compile_units to identify source file for various debug entities. Each llvm.dbg.compile_unit matches one file on the disk. However, the backend only supports one DW_TAG_compile_unit per .o file. The backend selects first compile_unit from the vector to construct DW_TAG_compile_unit entry, which is not correct in all cases.
First step to resolve this is, record file name and directory directly in debug info for various debug entities.
llvm-svn: 61164
|
| |
|
|
|
|
|
|
|
|
| |
- ability to insert previously created instructions using a builder
- creation of aliases
- creation of inline asm constants
Patch by Zoltan Varga!
llvm-svn: 61153
|
| |
|
|
| |
llvm-svn: 61120
|
| |
|
|
|
|
| |
Add (error) and (empty).
llvm-svn: 61117
|
| |
|
|
|
|
| |
builds.
llvm-svn: 61094
|
| |
|
|
|
|
|
| |
which source/line a certain BB/instruction comes from, original variable names,
and original (unmangled) C++ name of functions.
llvm-svn: 61085
|
| |
|
|
|
|
|
| |
instruction or BasicBlock, and to search for DbgDeclareInst corresponding to a
variable.
llvm-svn: 61084
|
| |
|
|
|
|
|
| |
especially in the case of addresses computed from loop induction
variables.
llvm-svn: 61075
|