| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 67738
|
| |
|
|
| |
llvm-svn: 67737
|
| |
|
|
| |
llvm-svn: 67736
|
| |
|
|
|
|
|
| |
CodeGenModule. Once there, add a new NoCommon option to
it and implement -fno-common.
llvm-svn: 67735
|
| |
|
|
| |
llvm-svn: 67734
|
| |
|
|
| |
llvm-svn: 67733
|
| |
|
|
| |
llvm-svn: 67732
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Zhongxing and I discussed by email.
Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)
This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.
llvm-svn: 67731
|
| |
|
|
| |
llvm-svn: 67729
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
%a = ...
%b = and i32 %a, 2
%c = srl i32 %b, 1
%d = br i32 %c,
into
%a = ...
%b = and %a, 2
%c = X86ISD::CMP %b, 0
%d = X86ISD::BRCOND %c ...
This applies only when the AND constant value has one bit set and the SRL
constant is equal to the log2 of the AND constant. The back-end is smart enough
to convert the result into a TEST/JMP sequence.
llvm-svn: 67728
|
| |
|
|
| |
llvm-svn: 67727
|
| |
|
|
| |
llvm-svn: 67726
|
| |
|
|
|
|
| |
intended functionality change.
llvm-svn: 67725
|
| |
|
|
|
|
|
| |
called from llc, not opt, but it's an IR level
optimization nevertheless.)
llvm-svn: 67724
|
| |
|
|
|
|
|
|
| |
all the way down to ActOnClassTemplate.
Doug, Sebastian: Plz review! :)
llvm-svn: 67723
|
| |
|
|
|
|
| |
original declaration.
llvm-svn: 67722
|
| |
|
|
|
|
| |
is of type void*. I'll try to add the appropriate checking later.
llvm-svn: 67721
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specializations can be treated as a template. Finally, we can parse
and process the first implementation of Fibonacci I wrote!
Note that this code does not handle all of the cases where
injected-class-names can be treated as templates. In particular,
there's an ambiguity case that we should be able to handle (but
can't), e.g.,
template <class T> struct Base { };
template <class T> struct Derived : Base<int>, Base<char> {
typename Derived::Base b; // error: ambiguous
typename Derived::Base<double> d; // OK
};
llvm-svn: 67720
|
| |
|
|
|
|
| |
analysis values, related to the instructions in the basic block.
llvm-svn: 67719
|
| |
|
|
|
|
|
|
| |
a C++ record decl.
Also, fix fallout from the change.
llvm-svn: 67717
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
templates, including in-class initializers. For example:
template<typename T, T Divisor>
class X {
public:
static const T value = 10 / Divisor;
};
instantiated with, e.g.,
X<int, 5>::value
to get the value '2'.
llvm-svn: 67715
|
| |
|
|
|
|
|
|
| |
register classes. Before, MVT::Other would be returned anytime a reg was
in multiple register classes. Now, MVT::Other is only returned if the types
for those register classes differ.
llvm-svn: 67714
|
| |
|
|
|
|
| |
is not in use).
llvm-svn: 67713
|
| |
|
|
| |
llvm-svn: 67710
|
| |
|
|
| |
llvm-svn: 67708
|
| |
|
|
|
|
|
|
|
|
|
| |
the declarations of member classes are instantiated when the owning
class template is instantiated. The definitions of such member classes
are instantiated when a complete type is required.
This change also introduces the injected-class-name into a class
template specialization.
llvm-svn: 67707
|
| |
|
|
|
|
| |
... arguments.
llvm-svn: 67706
|
| |
|
|
|
|
|
|
|
|
|
|
| |
terminated with an EOF token. The condition it is trying to check for is
handled by this code above.
// Empty arguments are standard in C99 and supported as an extension in
// other modes.
if (ArgTokens.empty() && !Features.C99)
Diag(Tok, diag::ext_empty_fnmacro_arg);
llvm-svn: 67705
|
| |
|
|
| |
llvm-svn: 67703
|
| |
|
|
| |
llvm-svn: 67702
|
| |
|
|
|
|
| |
Also fixes SDISel so it *does not* force promote return value if the function is not marked signext / zeroext.
llvm-svn: 67701
|
| |
|
|
| |
llvm-svn: 67700
|
| |
|
|
| |
llvm-svn: 67697
|
| |
|
|
|
|
| |
from previous block literals.
llvm-svn: 67696
|
| |
|
|
| |
llvm-svn: 67695
|
| |
|
|
| |
llvm-svn: 67694
|
| |
|
|
|
|
|
|
| |
stoppoint nodes around until Legalize; doing this
imposed an ordering on a sequence of loads that
came from different lines, interfering with scheduling.
llvm-svn: 67692
|
| |
|
|
| |
llvm-svn: 67691
|
| |
|
|
| |
llvm-svn: 67689
|
| |
|
|
| |
llvm-svn: 67688
|
| |
|
|
| |
llvm-svn: 67687
|
| |
|
|
| |
llvm-svn: 67686
|
| |
|
|
| |
llvm-svn: 67685
|
| |
|
|
| |
llvm-svn: 67684
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- This is really gross, but its the easiest way to match gcc. Once we
are confident in the driver, we can try and push these translations
down into tools.
- No test cases for this yet, it's hard to see the effects of these
translations before the gcc tool argument translation is pulled
over.
- Interaction with "unused argument" warning hasn't been worked out
yet.
- <rdar://problem/6717359> [driver] implement toolchain specific
argument translation.
"It's horrible in here."
llvm-svn: 67683
|
| |
|
|
|
|
|
|
|
|
|
|
| |
call, we should treat "i64 zext" as the start of a constant expr, but
"i64 0 zext" as an argument with an obsolete attribute on it (this form
is already tested by test/Assembler/2007-07-30-AutoUpgradeZextSext.ll).
Make the autoupgrade logic more discerning to avoid treating "i64 zext"
as an old-style attribute, causing us to reject a valid constant expr.
This fixes PR3876.
llvm-svn: 67682
|
| |
|
|
| |
llvm-svn: 67681
|
| |
|
|
|
|
|
| |
we aren't going to support. For example:
clang -Xarch_i386 -S -Xarch_i386 -o -Xarch_i386 myi386asm.s ...
llvm-svn: 67680
|
| |
|
|
|
|
| |
matches the flag in Options.def).
llvm-svn: 67679
|
| |
|
|
|
|
|
|
| |
representing symbolic expressions like 'x'+3 and 'x'+'y'. The design is
subjected to change later when we fix the class hierarchy of symbolic
expressions.
llvm-svn: 67678
|