| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
its size). Adjust various lowering functions to
pass this info through from CallInst. Use it to
implement sseregparm returns on X86. Remove
X86_ssecall calling convention.
llvm-svn: 56677
|
| |
|
|
| |
llvm-svn: 56674
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
information is in an unreachable block, then it's possible that the high/low pc
values won't be set for the dwarf information. E.g., this function:
void abort(void) __attribute__((__noreturn__));
void dead_beef(void) __attribute__ ((noreturn));
int *b;
void dead_beef(void) {
*b=0xdeadbeef;
abort();
}
has a call to "@llvm.dbg.region.end" only in the unreachable block:
define void @dead_beef() noreturn nounwind {
entry:
call void @llvm.dbg.func.start(...)
call void @llvm.dbg.stoppoint(...)
...
call void @abort( ) noreturn nounwind
unreachable
return: ; No predecessors!
call void @llvm.dbg.stoppoint(...)
call void @llvm.dbg.region.end(...)
ret void
}
The dwarf information emitted is something like:
0x00000084: TAG_subprogram [5]
AT_name( "dead_beef" )
AT_external( 0x01 )
AT_prototyped( 0x01 )
AT_decl_file( 0x01 )
AT_decl_line( 0x08 )
Note that this is *not* the best fix for this problem, but a band-aid for an
gaping wound. This code needs to be changed when we revamp our debugging
information.
llvm-svn: 56628
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.
This requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56622
|
| |
|
|
|
|
|
|
| |
meaning sse_regparm (i.e. float/double values go
in XMM0 instead of ST0). Update documentation
to reflect reality.
llvm-svn: 56619
|
| |
|
|
|
|
| |
i1 operands are assumed to already by zero-extended.
llvm-svn: 56615
|
| |
|
|
| |
llvm-svn: 56614
|
| |
|
|
| |
llvm-svn: 56613
|
| |
|
|
| |
llvm-svn: 56610
|
| |
|
|
| |
llvm-svn: 56609
|
| |
|
|
|
|
| |
giving the target a chance to materialize constants.
llvm-svn: 56605
|
| |
|
|
| |
llvm-svn: 56604
|
| |
|
|
| |
llvm-svn: 56602
|
| |
|
|
|
|
|
| |
a separate function, eliminating duplication between the
add-passes-for-file and add-passes-for-machine-code code.
llvm-svn: 56599
|
| |
|
|
|
|
| |
(!OpInfo.AssignedRegs.Regs.empty() && "Couldn't allocate input reg!")
llvm-svn: 56597
|
| |
|
|
| |
llvm-svn: 56596
|
| |
|
|
|
|
|
| |
for earlyclobbers. Teach Local RA about earlyclobber,
and add some tests for it.
llvm-svn: 56592
|
| |
|
|
| |
llvm-svn: 56584
|
| |
|
|
| |
llvm-svn: 56583
|
| |
|
|
| |
llvm-svn: 56579
|
| |
|
|
| |
llvm-svn: 56575
|
| |
|
|
| |
llvm-svn: 56574
|
| |
|
|
| |
llvm-svn: 56573
|
| |
|
|
| |
llvm-svn: 56572
|
| |
|
|
| |
llvm-svn: 56571
|
| |
|
|
| |
llvm-svn: 56567
|
| |
|
|
| |
llvm-svn: 56553
|
| |
|
|
| |
llvm-svn: 56552
|
| |
|
|
| |
llvm-svn: 56551
|
| |
|
|
|
|
|
|
|
|
| |
the SelectionDAG and DAGCombiner code. The only functionality change is that now
the DAG combiner is performing the constant folding for these operations instead
of being a no-op.
This is *not* in response to a bug, so there isn't a testcase.
llvm-svn: 56550
|
| |
|
|
|
|
|
|
|
|
| |
RA problem by expanding the live interval of an
earlyclobber def back one slot. Remove
overlap-earlyclobber throughout. Remove
earlyclobber bits and their handling from
live internals.
llvm-svn: 56539
|
| |
|
|
|
|
| |
separate method.
llvm-svn: 56531
|
| |
|
|
|
|
| |
dead loads.
llvm-svn: 56529
|
| |
|
|
|
|
| |
any volatile memory references.
llvm-svn: 56528
|
| |
|
|
|
|
| |
the addressing mode, it requires the same logic for PIC relative addressing, etc.
llvm-svn: 56526
|
| |
|
|
| |
llvm-svn: 56513
|
| |
|
|
|
|
|
| |
correctly, it's not necessary to explicitly remove registers
from their use-def lists.
llvm-svn: 56509
|
| |
|
|
|
|
| |
object. This will be needed to support debug info.
llvm-svn: 56508
|
| |
|
|
|
|
|
| |
efficient implementation possible, but it's pretty simple and
good enough for the time being.
llvm-svn: 56504
|
| |
|
|
|
|
|
| |
track of the number of live registers, which is all the set was
being used for.
llvm-svn: 56498
|
| |
|
|
| |
llvm-svn: 56485
|
| |
|
|
|
|
|
| |
load address has an offset from the base of the constant pool
entry.
llvm-svn: 56479
|
| |
|
|
| |
llvm-svn: 56476
|
| |
|
|
|
|
| |
machine dominators.
llvm-svn: 56475
|
| |
|
|
|
|
|
|
|
| |
can't
just use LI::MergeValueAsValue, as its behavior in the presence of overlapping ranges
isn't what StrongPHIElimination wants.
llvm-svn: 56472
|
| |
|
|
|
|
| |
default.
llvm-svn: 56471
|
| |
|
|
| |
llvm-svn: 56469
|
| |
|
|
| |
llvm-svn: 56468
|
| |
|
|
| |
llvm-svn: 56456
|
| |
|
|
|
|
|
| |
(srl x, (trunc (and y, c))) -> (srl x, (and (trunc y), c))
etc. when both "trunc" and "and" have single uses.
llvm-svn: 56452
|