| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 72607
|
|
|
|
|
|
| |
of a reference correctly.
llvm-svn: 72463
|
|
|
|
|
|
|
|
| |
an integral constant expression, maintain a cache of the value and the
is-an-ICE flag within the VarDecl itself. This eliminates
exponential-time behavior of the Fibonacci template metaprogram.
llvm-svn: 72428
|
|
|
|
| |
llvm-svn: 71405
|
|
|
|
| |
llvm-svn: 70689
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"aligned" attribute. Previously, we were skipping over these
attributes when we jumped directly to the canonical type. Now,
ASTContext::getTypeInfo walks through typedefs and other
"non-canonical" types manually, looking for "aligned" attributes on
typedefs.
As part of this change, I moved the GNU-specific logic (such as
determining the alignment of void or of a function pointer) out of the
expression evaluator and into ASTContext::getTypeInfo.
llvm-svn: 70497
|
|
|
|
| |
llvm-svn: 70406
|
|
|
|
| |
llvm-svn: 70317
|
|
|
|
|
|
|
| |
int. Note that constant int->complex float and float->complex int casts
were being miscompiled.
llvm-svn: 69821
|
|
|
|
|
|
|
|
|
| |
addRecordToClass.
- Among other things, this fixes a crash when applying sizeof to an
interface with synthesized ivars, although things still aren't
"correct" here.
llvm-svn: 69675
|
|
|
|
|
|
| |
declaring a static Block 'const'.
llvm-svn: 69306
|
|
|
|
|
|
| |
Expr as an LValue.
llvm-svn: 68763
|
|
|
|
|
|
| |
No functionality change (really).
llvm-svn: 68726
|
|
|
|
| |
llvm-svn: 68075
|
|
|
|
| |
llvm-svn: 67593
|
|
|
|
|
|
| |
Evaluate for __extension__ and __builtin_choose_expr.
llvm-svn: 67506
|
|
|
|
| |
llvm-svn: 67503
|
|
|
|
|
|
| |
unclear areas. Maybe Doug can shed some light on some of the fixmes.
llvm-svn: 67059
|
|
|
|
|
|
| |
chosen sub-expression, rather than just evaluating the condition.
llvm-svn: 66018
|
|
|
|
|
|
| |
integer __real__ and __imag__. Not sure how I missed this.
llvm-svn: 65677
|
|
|
|
|
|
|
|
| |
normal expression, and change Evaluate and IRGen to evaluate it like a
normal expression. This simplifies the code significantly, and fixes
PR3396.
llvm-svn: 65622
|
|
|
|
| |
llvm-svn: 65613
|
|
|
|
|
|
|
|
|
| |
- For types whose native representation is a pointer.
- Use to replace ExprConstant.cpp:HasPointerEvalType,
CodeGenFunction::isObjCPointerType.
llvm-svn: 65569
|
|
|
|
|
|
|
|
|
| |
pretty sure we want to keep constant expression verification outside of
Evaluate. Because of that, the short-circuit evaluation doesn't
generally make sense, and the comma warning doesn't make sense in its
current form.
llvm-svn: 65525
|
|
|
|
|
|
|
| |
The big difference here is that (like string literal) @encode has
array type, not pointer type.
llvm-svn: 65391
|
|
|
|
|
|
| |
Remove support for "Class<P>". Will be making this an error.
llvm-svn: 65332
|
|
|
|
| |
llvm-svn: 65305
|
|
|
|
|
|
| |
someone would reasonably expect Evaluate to handle for C/ObjC.
llvm-svn: 65284
|
|
|
|
|
|
|
|
| |
I know, these follow the exact same rules as pointers, so I just made
them use the same codepath. Someone more familiar with ObjC should
double-check this, though.
llvm-svn: 65261
|
|
|
|
|
|
| |
partially done in r65258.)
llvm-svn: 65260
|
|
|
|
|
|
|
| |
expr; hilarity ensued.
- PR3640.
llvm-svn: 65234
|
|
|
|
|
|
| |
- PR3463 (again).
llvm-svn: 65133
|
|
|
|
| |
llvm-svn: 65105
|
|
|
|
|
|
| |
from the testsuite.
llvm-svn: 65098
|
|
|
|
|
|
|
|
|
|
| |
- PR3463, PR3398, <rdar://problem/6553401> crash on relocatable
symbol addresses as constants in static locals.
- There are many more scenarious we could handle (like arithmetic on
such an int) but this is the main use case.
llvm-svn: 65074
|
|
|
|
| |
llvm-svn: 65073
|
|
|
|
|
|
|
| |
appear to be constant. I'll probably redo this and throw it all away
later once we have codegen for BlockDeclRefExprs.
llvm-svn: 65070
|
|
|
|
|
|
| |
- Prep for handling lvalues, no intended functionality change.
llvm-svn: 65063
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
manual setting of the Result.
- Idiom now enforces that result will always have correct width and
type; this exposed three new bugs:
o Enum constant decl value can have different width than type
(PR3173).
o EvaluateInteger should not run an IntExprEvaluator over
non-integral expressions.
o FloatExprEvaluate was not handling casts correctly (it was
evaluating the cast in the IntExprEvaluator!).
llvm-svn: 65053
|
|
|
|
|
|
|
|
|
|
|
| |
- Handles assignment to Result with appropriate type.
- Simplifies & encapsulates most direct handling of the Result value;
prep for allowing IntExprEvaluator to deal with LValue APValues.
- No intended functionality change.
llvm-svn: 65038
|
|
|
|
|
|
| |
expressions as well.
llvm-svn: 65013
|
|
|
|
|
|
| |
The size calculation is improved.
llvm-svn: 64994
|
|
|
|
| |
llvm-svn: 64951
|
|
|
|
|
|
| |
with Expr::Evaluate().
llvm-svn: 64850
|
|
|
|
|
|
|
|
|
|
|
| |
- Renamed to getDeclAlignInBytes since most other query functions
work in bits.
- Fun to track down as isIntegerConstantExpr was getting it right,
but Evaluate() was getting it wrong. Maybe we should assert they
compute the same thing when they succeed?
llvm-svn: 64828
|
|
|
|
|
|
|
| |
general use; as for, objc2's gc type attributes. No
change in functionality.
llvm-svn: 64778
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
about, whether they are builtins or not. Use this to add the
appropriate "format" attribute to NSLog, NSLogv, asprintf, and
vasprintf, and to translate builtin attributes (from Builtins.def)
into actual attributes on the function declaration.
Use the "printf" format attribute on function declarations to
determine whether we should do format string checking, rather than
looking at an ad hoc list of builtins and "known" function names.
Be a bit more careful about when we consider a function a "builtin" in
C++.
llvm-svn: 64561
|
|
|
|
| |
llvm-svn: 64086
|
|
|
|
| |
llvm-svn: 63280
|
|
|
|
|
|
|
|
|
| |
- Lift (int,float) -> (int,float) conversion into separate routines.
- Fix handling of, e.g., char -> _Complex int, which was producing a
_Complex char value instead.
llvm-svn: 63278
|