Douglas Gregor
678d76c026
Introduce the notion of instantiation dependence into Clang's AST. A
...
type/expression/template argument/etc. is instantiation-dependent if
it somehow involves a template parameter, even if it doesn't meet the
requirements for the more common kinds of dependence (dependent type,
type-dependent expression, value-dependent expression).
When we see an instantiation-dependent type, we know we always need to
perform substitution into that instantiation-dependent type. This
keeps us from short-circuiting evaluation in places where we
shouldn't, and lets us properly implement C++0x [temp.type]p2.
In theory, this would also allow us to properly mangle
instantiation-dependent-but-not-dependent decltype types per the
Itanium C++ ABI, but we aren't quite there because we still mangle
based on the canonical type in cases like, e.g.,
template<unsigned> struct A { };
template<typename T>
void f(A<sizeof(sizeof(decltype(T() + T())))>) { }
template void f<int>(A<sizeof(sizeof(int))>);
and therefore get the wrong answer.
llvm-svn: 134225
2011-07-01 01:22:09 +00:00
Akira Hatanaka
f2bcad972d
Improve Mips back-end's handling of DBG_VALUE.
...
llvm-svn: 134224
2011-07-01 01:04:43 +00:00
Dan Gohman
54664ed714
Improve constant folding of undef for cmp and select operators.
...
llvm-svn: 134223
2011-07-01 01:03:43 +00:00
Eric Christopher
29f1db85dd
Add support for the 'j' immediate constraint. This is conditionalized on
...
supporting the instruction that the constraint is for 'movw'.
Part of rdar://9119939
llvm-svn: 134222
2011-07-01 01:00:07 +00:00
Dan Gohman
ca8d9e1341
Improve constant folding of undef for binary operators.
...
llvm-svn: 134221
2011-07-01 00:42:17 +00:00
Eric Christopher
c011d31543
Add support for the ARM 't' register constraint. And another testcase
...
for the 'x' register constraint.
Part of rdar://9119939
llvm-svn: 134220
2011-07-01 00:30:46 +00:00
Evan Cheng
d8e27a584e
Switch SubtargetFeatures from std::string to StringRef.
...
llvm-svn: 134219
2011-07-01 00:23:10 +00:00
Eric Christopher
f09b0f1043
We'll return a null RC by default if we can't match.
...
Part of rdar://9119939
llvm-svn: 134217
2011-07-01 00:19:27 +00:00
Rafael Espindola
4b522de5c0
Add 134199 back, but disable the optimization when the second copy is a kill.
...
llvm-svn: 134216
2011-07-01 00:16:54 +00:00
Eric Christopher
f1c74595aa
Add support for the 'x' constraint.
...
Part of rdar://9307836 and rdar://9119939
llvm-svn: 134215
2011-07-01 00:14:47 +00:00
John McCall
3a4a4c5228
Change the mangling of enclosing template template parameters
...
that serve as the base template name of an unresolved-name to
be mangled as a substitution.
llvm-svn: 134213
2011-07-01 00:04:39 +00:00
Bill Wendling
c737ac1816
Remove tabs.
...
llvm-svn: 134212
2011-06-30 23:59:38 +00:00
Eric Christopher
1f054f27af
Capitalize the unsigned part of the initializer.
...
llvm-svn: 134211
2011-06-30 23:59:16 +00:00
Eric Christopher
cf2007ca78
Rename Pair to RCPair lacking any better naming ideas.
...
llvm-svn: 134210
2011-06-30 23:50:52 +00:00
Bill Wendling
40cc749788
Improve comment: Show the register the DWARF label is added to.
...
llvm-svn: 134209
2011-06-30 23:47:40 +00:00
Bill Wendling
3f049b8b7e
Use the correct registers on X86_64.
...
llvm-svn: 134208
2011-06-30 23:47:14 +00:00
Jakob Stoklund Olesen
d0e2352b65
Fix a problem with fast-isel return values introduced in r134018.
...
We would put the return value from long double functions in the wrong
register.
This fixes gcc.c-torture/execute/conversion.c
llvm-svn: 134205
2011-06-30 23:42:18 +00:00
Jim Grosbach
e9cc901814
Refact ARM Thumb1 tMOVr instruction family.
...
Merge the tMOVr, tMOVgpr2tgpr, tMOVtgpr2gpr, and tMOVgpr2gpr instructions
into tMOVr. There's no need to keep them separate. Giving the tMOVr
instruction the proper GPR register class for its operands is sufficient
to give the register allocator enough information to do the right thing
directly.
llvm-svn: 134204
2011-06-30 23:38:17 +00:00
Eric Christopher
f45daac30f
Add support for the 'h' constraint.
...
Part of rdar://9119939
llvm-svn: 134203
2011-06-30 23:23:01 +00:00
Bill Wendling
b403f0c4ed
Add target a target hook to get the register number used by the compact unwind
...
encoding for the registers it knows about. Return -1 if it can't handle that
register.
llvm-svn: 134202
2011-06-30 23:20:32 +00:00
Rafael Espindola
abe5f97634
Revert my previous patch while I debug llvm-gcc bootstrap.
...
llvm-svn: 134201
2011-06-30 22:58:17 +00:00
Bill Wendling
2fd8d775df
Add one more comment to the FDE verbose asm output.
...
llvm-svn: 134200
2011-06-30 22:35:49 +00:00
Rafael Espindola
027cb82657
Don't give up on coalescing A and B when we find
...
A = X
B = X
Instead, proceed as if we had found
A = X
B = A
llvm-svn: 134199
2011-06-30 22:24:13 +00:00
Eric Christopher
c486b47b15
Add a convenience typedef for std::pair<unsigned, const TargetRegisterClass*>.
...
No functional change.
Part of rdar://9119939
llvm-svn: 134198
2011-06-30 22:17:01 +00:00
Jim Grosbach
b98ab91e39
Thumb1 register to register MOV instruction is predicable.
...
Fix a FIXME and allow predication (in Thumb2) for the T1 register to
register MOV instructions. This allows some better codegen with
if-conversion (as seen in the test updates), plus it lays the groundwork
for pseudo-izing the tMOVCC instructions.
llvm-svn: 134197
2011-06-30 22:10:46 +00:00
Bill Wendling
f166ab447e
Add comments to the FDE.
...
llvm-svn: 134196
2011-06-30 22:02:20 +00:00
John McCall
db49969b32
No, actually, we do need to be able to mangle substituted template names.
...
llvm-svn: 134195
2011-06-30 21:59:02 +00:00
Bill Wendling
e7fe47e53b
Add more comments to the ASM output for the CIE's "moves".
...
llvm-svn: 134194
2011-06-30 21:45:12 +00:00
Jakob Stoklund Olesen
2034261972
Tweak error messages to match GCC. Should fix gcc.target/i386/pr30848.c
...
llvm-svn: 134193
2011-06-30 21:30:30 +00:00
Johnny Chen
ee481783cb
Add module docstring to the auto-generated lldb.py file.
...
llvm-svn: 134192
2011-06-30 21:29:50 +00:00
Bill Wendling
567a1aee85
Add comments to the ASM output to help understand the compact unwind and CIE tables.
...
llvm-svn: 134191
2011-06-30 21:25:51 +00:00
Howard Hinnant
ce48a1137d
_STD -> _VSTD to avoid macro clash on windows
...
llvm-svn: 134190
2011-06-30 21:18:19 +00:00
Rafael Espindola
070f96c567
Create a isFullCopy predicate.
...
llvm-svn: 134189
2011-06-30 21:15:52 +00:00
Tobias Grosser
7c5ba83015
ScheduleOpt: Prevectorize the innermost parallel loop
...
Only prevectorize loops that are actually parallel and can
be vectorized. Take the innermost loop that is eligible.
llvm-svn: 134187
2011-06-30 20:29:20 +00:00
Tobias Grosser
c6699b7fe8
ScheduleOpt: Add first version of prevectorization
...
We just strip-mine the innermost dimension by the vector width. This does not
take into account if this dimension is parallel nor if it is constant.
llvm-svn: 134186
2011-06-30 20:29:13 +00:00
Hans Wennborg
77d1abef07
Fix off-by-one error in StringLiteral::getLocationOfByte.
...
This fixes PR10223.
llvm-svn: 134183
2011-06-30 20:17:41 +00:00
Rafael Espindola
b10a0f223a
Add r134057 back, but splice the predecessor after the successors phi
...
nodes.
Original message:
Let simplify cfg simplify bb with only debug and lifetime intrinsics.
llvm-svn: 134182
2011-06-30 20:14:24 +00:00
Tobias Grosser
de68cc91cf
ScheduleOpt: Use band forest to get the schedules
...
isl introduced a new representation for the schedules it calculates. The new
representation uses a forest of bands and is closer to the structure of the
data as the old interface. Switch to the new interface, as it is nicer to use
and as the old interface will soon be removed from isl.
WARNING: This commit needs a version of isl that is more recent that the one
included in CLooG. See:
http://polly.grosser.es/get_started.html#islTrunk
llvm-svn: 134181
2011-06-30 20:01:02 +00:00
Tobias Grosser
080307119e
Buildsystem: Add -no-rtti
...
Build Polly without run time type info (rtti), as otherwise Polly cannot be
loaded into a LLVM that is built without rtti.
llvm-svn: 134180
2011-06-30 19:50:04 +00:00
Tobias Grosser
97fb5acf48
CodeGeneration: Adapt to SCEVExpander change
...
Reported-By: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 134179
2011-06-30 19:39:10 +00:00
Jim Grosbach
e4750ef6ec
Pseudo-ize the Thumb tTPsoft instruction.
...
It's just a call to a special helper function. Get rid of the T2 variant
entirely, as it's identical to the Thumb1 version.
llvm-svn: 134178
2011-06-30 19:38:01 +00:00
Andrew Trick
efe89ad414
indvars -disable-iv-rewrite: handle cloning binary operators that cannot overflow.
...
llvm-svn: 134177
2011-06-30 19:02:17 +00:00
Johnny Chen
cc76475fff
Ifdef out the 'lldb::Encoding GetEncoding(uint32_t &count)' API from
...
Python SWIG, since it cannot hanlde the (uint32_t &count) parameter.
llvm-svn: 134176
2011-06-30 18:40:27 +00:00
Jim Grosbach
353da73186
Pseudo-ize the t2LDMIA_RET instruction.
...
It's just a t2LDMIA_UPD instruction with extra codegen properties, so it
doesn't need the encoding information. As a side-benefit, we now correctly
recognize for instruction printing as a 'pop' instruction.
llvm-svn: 134173
2011-06-30 18:25:42 +00:00
Jim Grosbach
417671a7b1
Pseudo-ize the Thumb tPOP_RET instruction.
...
It's just a tPOP instruction with additional code-gen properties, so it
doesn't need encoding information.
llvm-svn: 134172
2011-06-30 17:34:04 +00:00
Hans Wennborg
de7a9c2415
Move test/Sema/return.cpp into test/SemaCXX/return.cpp
...
llvm-svn: 134171
2011-06-30 17:20:18 +00:00
John McCall
0b645e9030
Perform lvalue-to-rvalue conversions on both operands of ->*
...
and the RHS of .*. Noticed by Enea Zaffanella!
llvm-svn: 134170
2011-06-30 17:15:34 +00:00
Hans Wennborg
bfee88a0cf
svn propdel svn:eol-style test/Sema/return.cpp
...
llvm-svn: 134169
2011-06-30 16:49:43 +00:00
Peter Collingbourne
d395b9344d
Replace an unreachable error path with an assert
...
(SourceManager::createFileID cannot return an invalid file ID).
Also update a comment to reflect this.
llvm-svn: 134168
2011-06-30 16:41:03 +00:00
Peter Collingbourne
400d7b9e08
Fix typo
...
llvm-svn: 134167
2011-06-30 16:40:50 +00:00