| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 67603
|
|
|
|
|
|
|
|
|
| |
in release-assert builds. For automatic variables, explicitly set
a name with setName that does not make a temporary std::string.
This speeds up -emit-llvm-only -disable-free on PR3810 by 4.6%
llvm-svn: 67459
|
|
|
|
|
|
| |
more optimistic that it will work (optimizing for the common case).
llvm-svn: 67438
|
|
|
|
| |
llvm-svn: 67219
|
|
|
|
|
|
|
| |
There are some more complex cases (_Complex and structs)
that I'm still working on.
llvm-svn: 67218
|
|
|
|
| |
llvm-svn: 67164
|
|
|
|
|
|
| |
chosen sub-expression, rather than just evaluating the condition.
llvm-svn: 66018
|
|
|
|
|
|
|
| |
still give an unsupported error for them due to the fact this is a
work in progress.
llvm-svn: 66007
|
|
|
|
|
|
|
| |
block literal is causing the problem, instead of the vague reference
to the entire block literal.
llvm-svn: 65798
|
|
|
|
| |
llvm-svn: 65688
|
|
|
|
|
|
|
| |
The big difference here is that (like string literal) @encode has
array type, not pointer type.
llvm-svn: 65391
|
|
|
|
|
|
|
| |
of a pointer to object; This patch does this odd behavior according to
gcc.
llvm-svn: 65334
|
|
|
|
|
|
|
| |
true a local pointer to objective-c object in generating
write barriers.
llvm-svn: 65290
|
|
|
|
| |
llvm-svn: 65251
|
|
|
|
|
|
| |
type.
llvm-svn: 65205
|
|
|
|
| |
llvm-svn: 65145
|
|
|
|
|
|
| |
- Remove an unused variant of EmitCallExpr overload.
llvm-svn: 65130
|
|
|
|
| |
llvm-svn: 65097
|
|
|
|
| |
llvm-svn: 65077
|
|
|
|
| |
llvm-svn: 65051
|
|
|
|
|
|
| |
of objects in objc.
llvm-svn: 64992
|
|
|
|
| |
llvm-svn: 64984
|
|
|
|
|
|
| |
ir gen.
llvm-svn: 64954
|
|
|
|
|
|
| |
objc gc type attributes.
llvm-svn: 64935
|
|
|
|
|
|
|
|
| |
This make warn-weak-field.m to fail (subject of
a followup patch).
attr-objc-gc.m no passes.
llvm-svn: 64925
|
|
|
|
| |
llvm-svn: 64779
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Define pow[lf]?, sqrt[lf]? as builtins.
- Add -fmath-errno option which binds to LangOptions.MathErrno
- Add new builtin flag Builtin::Context::isConstWithoutErrno for
functions which can be marked as const if errno isn't respected for
math functions. Sema automatically marks these functions as const
when they are defined, if MathErrno=0.
- IRgen uses const attribute on sqrt and pow library functions to
decide if it can use the llvm intrinsic.
llvm-svn: 64689
|
|
|
|
|
|
|
|
|
|
|
| |
emit two volatile loads for:
typedef __attribute__(( ext_vector_type(4) )) float float4;
float test(volatile float4 *P) {
return P->x+P->y;
}
llvm-svn: 64683
|
|
|
|
|
|
| |
suggestion
llvm-svn: 64681
|
|
|
|
| |
llvm-svn: 64667
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
etc.) when we perform name lookup on them. This ensures that we
produce the correct signature for these functions, which has two
practical impacts:
1) When we're supporting the "implicit function declaration" feature
of C99, these functions will be implicitly declared with the right
signature rather than as a function returning "int" with no
prototype. See PR3541 for the reason why this is important (hint:
GCC always predeclares these functions).
2) If users attempt to redeclare one of these library functions with
an incompatible signature, we produce a hard error.
This patch does a little bit of work to give reasonable error
messages. For example, when we hit case #1 we complain that we're
implicitly declaring this function with a specific signature, and then
we give a note that asks the user to include the appropriate header
(e.g., "please include <stdlib.h> or explicitly declare 'malloc'"). In
case #2, we show the type of the implicit builtin that was incorrectly
declared, so the user can see the problem. We could do better here:
for example, when displaying this latter error message we say
something like:
'strcpy' was implicitly declared here with type 'char *(char *, char
const *)'
but we should really print out a fake code line showing the
declaration, like this:
'strcpy' was implicitly declared here as:
char *strcpy(char *, char const *)
This would also be good for printing built-in candidates with C++
operator overloading.
The set of C library functions supported by this patch includes all
functions from the C99 specification's <stdlib.h> and <string.h> that
(a) are predefined by GCC and (b) have signatures that could cause
codegen issues if they are treated as functions with no prototype
returning and int. Future work could extend this set of functions to
other C library functions that we know about.
llvm-svn: 64504
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ABI to the CodeGen library. Since C++ code-generation is so
incomplete, we can't exercise much of this mangling code. However, a
few smoke tests show that it's doing the same thing as GCC. When C++
codegen matures, we'll extend the ABI tester to verify name-mangling
as well, and complete the implementation here.
At this point, the major client of name mangling is in the uses of the
new "overloadable" attribute in C, which allows overloading. Any
"overloadable" function in C (or in an extern "C" block in C++) will
be mangled the same way that the corresponding C++ function would be
mangled.
llvm-svn: 64413
|
|
|
|
| |
llvm-svn: 64346
|
|
|
|
| |
llvm-svn: 64325
|
|
|
|
|
|
| |
in preparation for nonfragile ivar offset work.
llvm-svn: 64225
|
|
|
|
|
|
|
| |
from LLVM memory type to/from LLVM temporary type.
- No intended functionality change.
llvm-svn: 64191
|
|
|
|
| |
llvm-svn: 63845
|
|
|
|
| |
llvm-svn: 63644
|
|
|
|
| |
llvm-svn: 63578
|
|
|
|
|
|
| |
- Inefficient & leaks memory currently, will be cleaned up subsequently.
llvm-svn: 63567
|
|
|
|
|
|
|
| |
- Lift CGFunctionInfo creation above ReturnTypeUsesSret and
EmitFunction{Epi,Pro}log.
llvm-svn: 63553
|
|
|
|
|
|
|
|
|
|
|
| |
- Lift CGFunctionInfo creation up to callers of EmitCall.
- Move isVariadic bit out of CGFunctionInfo, take as argument to
GetFunctionType instead.
No functionality change.
llvm-svn: 63550
|
|
|
|
|
|
| |
objc2 nonfragile ivar access code gen.
llvm-svn: 63541
|
|
|
|
| |
llvm-svn: 62458
|
|
|
|
|
|
| |
to access a field of its type.
llvm-svn: 62123
|
|
|
|
| |
llvm-svn: 62004
|
|
|
|
|
|
| |
crashes.
llvm-svn: 61992
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
information for declarations that were referenced via a qualified-id,
e.g., N::C::value. We keep track of the location of the start of the
nested-name-specifier. Note that the difference between
QualifiedDeclRefExpr and DeclRefExpr does have an effect on the
semantics of function calls in two ways:
1) The use of a qualified-id instead of an unqualified-id suppresses
argument-dependent lookup
2) If the name refers to a virtual function, the qualified-id
version will call the function determined statically while the
unqualified-id version will call the function determined dynamically
(by looking up the appropriate function in the vtable).
Neither of these features is implemented yet, but we do print out
qualified names for QualifiedDeclRefExprs as part of the AST printing.
llvm-svn: 61789
|
|
|
|
|
|
| |
CodeGenFunction::EmitArraySubscriptExpr.
llvm-svn: 61303
|