llvm-6502/utils
Kostya Serebryany 164b86b439 Extend Attributes to 64 bits
Problem: LLVM needs more function attributes than currently available (32 bits).
One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc).

Solution:
- extend the Attributes from 32 bits to 64-bits
- wrap the object into a class so that unsigned is never erroneously used instead
- change "unsigned" to "Attributes" throughout the code, including one place in clang.
- the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking.
- the class has "safe operator bool()" to support the common idiom:  if (Attributes attr = getAttrs()) useAttrs(attr);
- The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls
- Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work.
- Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit.

Tested:
"make check" on Linux (32-bit and 64-bit) and Mac (10.6)
built/run spec CPU 2006 on Linux with clang -O2.


This change will break clang build in lib/CodeGen/CGCall.cpp.
The following patch will fix it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148553 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20 17:56:17 +00:00
..
bugpoint
buildit Remove broken command to copy tblgen tool. 2011-12-22 22:12:40 +00:00
count
crosstool
emacs
FileCheck
FileUpdate
fpcmp
git
jedit
json-bench Changes the JSON parser to use the SourceMgr. 2011-12-21 18:16:39 +00:00
kate
KillTheDoctor
lint
lit [lit] Add a --filter option which is useful when dealing with virtual test 2012-01-18 00:03:12 +00:00
llvm-build build/unittests: Fix llvm-config names for gtest libraries, and bring Makefile 2011-12-15 23:35:08 +00:00
llvm-lit
Misc
not
PerfectShuffle
release
TableGen Add a CoveredBySubRegs property to Register descriptions. 2012-01-18 00:16:39 +00:00
Target/ARM
unittest build/unittests: Fix llvm-config names for gtest libraries, and bring Makefile 2011-12-15 23:35:08 +00:00
valgrind
vim
check-each-file
clang-parse-diagnostics-file
codegen-diff
countloc.sh
DSAclean.py
DSAextract.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetRepositoryPath
GetSourceVersion
getsrcs.sh
lldbDataFormatters.py Add an LLDB data formatter script for llvm::SmallVector, maybe this is helpful to someone else. 2012-01-17 14:52:12 +00:00
llvm-compilers-check
llvm-native-gcc
llvm-native-gxx
llvm.grm Extend Attributes to 64 bits 2012-01-20 17:56:17 +00:00
LLVMBuild.txt
llvmdo
llvmgrep
Makefile Adds a JSON parser and a benchmark (json-bench) to catch performance regressions. 2011-12-16 13:09:10 +00:00
makellvm
NewNightlyTest.pl
profile.pl
test_debuginfo.pl
UpdateCMakeLists.pl