| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently only used for 128-bit integers.
Note that we can't use the fixed-width integer types for other integer
modes without other changes because glibc headers redefines (u)int*_t
and friends using the mode attribute. For example, this means that uint64_t
has to be compatible with unsigned __attribute((mode(DI))), and
uint64_t is currently defined to long long. And I have a feeling we'll
run into issues if we try to define uint64_t as something which isn't
either long or long long.
This doesn't get the alignment right in most cases, including
the 128-bit integer case; I'll file a PR shortly. The gist of the issue
is that the targets don't really expose the information necessary to
figure out the alignment outside of the target description, so there's a
non-trivial amount of work involved in getting it working right. That
said, the alignment used is conservative, so the only issue with the
current implementation is ABI compatibility.
This makes it trivial to add some sort of "bitwidth" attribute to make
arbitrary-width integers; I'll do that in a followup.
We could also use this for stuff like the following for compatibility
with gcc, but I have a feeling it would be a better idea for clang to be
consistent between C and C++ modes rather than follow gcc's example for
C mode.
struct {unsigned long long x : 33;} x;
unsigned long long a(void) {return x.x+1;}
llvm-svn: 64434
|
|
|
|
| |
llvm-svn: 64425
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 64411
|
|
|
|
|
|
| |
to a base class (nonfragile abi ir gen bug).
llvm-svn: 64391
|
|
|
|
|
|
|
|
| |
tried to put FIXMEs on the most important things to fix up. Lots left
to do including more codegen, more documentation and cleaning code and
style cleanups.
llvm-svn: 64390
|
|
|
|
| |
llvm-svn: 64387
|
|
|
|
|
|
|
|
| |
- rename isObjCIdType/isObjCClassType -> isObjCIdStructType/isObjCClassStructType. The previous name didn't do what you would expect.
- add back isObjCIdType/isObjCClassType to do what you would expect. Not currently used, however many of the isObjCIdStructType/isObjCClassStructType clients could be converted over time.
- move static Sema function areComparableObjCInterfaces to ASTContext (renamed to areComparableObjCPointerTypes, since it now operates on pointer types).
llvm-svn: 64385
|
|
|
|
| |
llvm-svn: 64380
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Doesn't yet handle case where values are passed in mixed (general
purpose & floating point) registers; otherwise largely
functional. Code still needs some cleaning.
Fixes:
MultiSource/Applications/lua/lua
MultiSource/Applications/siod/siod
MultiSource/Applications/sqlite3/sqlite3
SingleSource/Regression/C/PR640
SingleSource/UnitTests/2003-07-09-SignedArgs
SingleSource/UnitTests/2007-03-02-VaCopy
gcc compat test suite results (Darwin x86-32 & -64):
--
# of expected passes 1262
# of unexpected failures 56
# of unresolved testcases 34
# of unsupported tests 2
Compare to: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090209/012050.html
llvm-svn: 64370
|
|
|
|
| |
llvm-svn: 64346
|
|
|
|
|
|
| |
case on x86_64.
llvm-svn: 64333
|
|
|
|
| |
llvm-svn: 64325
|
|
|
|
| |
llvm-svn: 64323
|
|
|
|
| |
llvm-svn: 64306
|
|
|
|
|
|
|
| |
subtle and non-obvious promotion rules. We already handle +=
and +1 correctly.
llvm-svn: 64296
|
|
|
|
|
|
| |
finishing off rdar://6520707
llvm-svn: 64295
|
|
|
|
|
|
| |
block. Fixes PR3536.
llvm-svn: 64252
|
|
|
|
|
|
| |
tests in the dejagnu test suite in the nonfragile abi mode.
llvm-svn: 64251
|
|
|
|
|
|
| |
- Missed this file.
llvm-svn: 64238
|
|
|
|
| |
llvm-svn: 64235
|
|
|
|
|
|
|
| |
type-nsobject-attribute.m in the dejagnu test suite
in the nonfragile abi mode.
llvm-svn: 64233
|
|
|
|
|
|
| |
in preparation for nonfragile ivar offset work.
llvm-svn: 64225
|
|
|
|
| |
llvm-svn: 64221
|
|
|
|
| |
llvm-svn: 64205
|
|
|
|
|
|
| |
instead.
llvm-svn: 64203
|
|
|
|
|
|
| |
".auto." to mangle their names. The working of PIC16AsmPrinter relies on that keyword currently.
llvm-svn: 64198
|
|
|
|
|
|
|
|
|
|
|
| |
gcc compat test suite results (Darwin x86-32 & -64):
--
# of expected passes 1110
# of unexpected failures 74
# of unresolved testcases 168
# of unsupported tests 2
llvm-svn: 64197
|
|
|
|
|
|
|
|
|
| |
memory representation (e.g., bool).
- This upgrades (downgrades) MultiSource/Applications/ClamAV/clamscan
to a miscompile and fixes
SingleSource/UnitTests/2003-05-31-CastToBool.
llvm-svn: 64194
|
|
|
|
|
|
|
| |
from LLVM memory type to/from LLVM temporary type.
- No intended functionality change.
llvm-svn: 64191
|
|
|
|
|
|
| |
ABI.
llvm-svn: 64187
|
|
|
|
|
|
| |
will remove the old Obj-C EH cleanup code.
llvm-svn: 64161
|
|
|
|
| |
llvm-svn: 64160
|
|
|
|
|
|
| |
functionality change (yet).
llvm-svn: 64159
|
|
|
|
| |
llvm-svn: 64157
|
|
|
|
| |
llvm-svn: 64156
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to a class template. For example, the template-id 'vector<int>' now
has a nice, sugary type in the type system. What we can do now:
- Parse template-ids like 'vector<int>' (where 'vector' names a
class template) and form proper types for them in the type system.
- Parse icky template-ids like 'A<5>' and 'A<(5 > 0)>' properly,
using (sadly) a bool in the parser to tell it whether '>' should
be treated as an operator or not.
This is a baby-step, with major problems and limitations:
- There are currently two ways that we handle template arguments
(whether they are types or expressions). These will be merged, and,
most likely, TemplateArg will disappear.
- We don't have any notion of the declaration of class template
specializations or of template instantiations, so all template-ids
are fancy names for 'int' :)
llvm-svn: 64153
|
|
|
|
| |
llvm-svn: 64105
|
|
|
|
| |
llvm-svn: 64100
|
|
|
|
| |
llvm-svn: 64099
|
|
|
|
|
|
| |
of making it use the cleanup stack.
llvm-svn: 64098
|
|
|
|
| |
llvm-svn: 64096
|
|
|
|
| |
llvm-svn: 64095
|
|
|
|
|
|
|
|
| |
If people could beat on it and let me know if there are any new
semantics required by newer language standards or DRs or any little
details I goofed on, I'd be happy to fix any issues found.
llvm-svn: 64079
|
|
|
|
|
|
| |
switch block and end block.
llvm-svn: 64072
|
|
|
|
| |
llvm-svn: 64069
|
|
|
|
| |
llvm-svn: 64068
|
|
|
|
| |
llvm-svn: 64064
|
|
|
|
| |
llvm-svn: 64059
|
|
|
|
|
|
| |
fixes and cleanup.
llvm-svn: 64053
|