llvm-project/llvm/utils
Kostya Serebryany a5054ad2f3 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.

llvm-svn: 148553
2012-01-20 17:56:17 +00:00
..
FileCheck Make SMDiagnostic a little more sane. Instead of passing around note/warning/error as a 2011-10-16 05:43:57 +00:00
FileUpdate Put targets on folders, if the IDE supports the feature. 2011-02-20 22:06:10 +00:00
KillTheDoctor Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
Misc
PerfectShuffle In r131488 I misunderstood how VREV works. It splits the vector in half and splits each half. Therefore, the real problem was that we were using a VREV64 for a 4xi16, when we should have been using a VREV32. 2011-05-18 06:42:21 +00:00
TableGen Add a CoveredBySubRegs property to Register descriptions. 2012-01-18 00:16:39 +00:00
Target/ARM McARM: Write a silly Python script to compute some hard coded info from the 2011-01-11 19:06:26 +00:00
bugpoint
buildit Remove broken command to copy tblgen tool. 2011-12-22 22:12:40 +00:00
count Put targets on folders, if the IDE supports the feature. 2011-02-20 22:06:10 +00:00
crosstool
emacs Remove Multidefs 2011-10-07 18:25:05 +00:00
fpcmp Merge System into Support. 2010-11-29 18:16:10 +00:00
git
jedit
json-bench Changes the JSON parser to use the SourceMgr. 2011-12-21 18:16:39 +00:00
kate syntax-highlighting: Fix module asm keyword. 2010-10-09 15:44:36 +00:00
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 Use $(ECHOPATH) to make llvm-lit from llvm-lit.in. 2011-03-08 12:25:19 +00:00
not Put targets on folders, if the IDE supports the feature. 2011-02-20 22:06:10 +00:00
release Support a 'final' release candidate tag. 2011-11-28 11:45:10 +00:00
unittest build/unittests: Fix llvm-config names for gtest libraries, and bring Makefile 2011-12-15 23:35:08 +00:00
valgrind valgrind: Suppress glibc's optiized strcasecmp harder. 2011-09-03 17:59:31 +00:00
vim Remove Multidefs 2011-10-07 18:25:05 +00:00
DSAclean.py
DSAextract.py Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
GenLibDeps.pl Fix typo in generated HTML. 2011-03-31 00:23:57 +00:00
GetRepositoryPath utils: Add GetRepositoryPath script, patch by Jonathan Mulder! 2010-09-29 17:57:01 +00:00
GetSourceVersion GetSourceVersion: Strip off svninfo extra markers, which aren't really part of the version. 2010-09-29 19:30:17 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Adds a JSON parser and a benchmark (json-bench) to catch performance regressions. 2011-12-16 13:09:10 +00:00
NewNightlyTest.pl Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
UpdateCMakeLists.pl
check-each-file
clang-parse-diagnostics-file Rename show-diagnostics to something less ambiguous. 2011-11-02 00:44:16 +00:00
codegen-diff
countloc.sh
findmisopt Convert a bunch of uses of 'bytecode' into 'bitcode'. This 2010-09-29 20:09:55 +00:00
findoptdiff Convert a bunch of uses of 'bytecode' into 'bitcode'. This 2010-09-29 20:09:55 +00:00
findsym.pl
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 utils: Rename the "llvmbuild" script to llvm-compilers-check. 2011-11-04 01:09:02 +00:00
llvm-native-gcc Convert a bunch of uses of 'bytecode' into 'bitcode'. This 2010-09-29 20:09:55 +00:00
llvm-native-gxx Convert a bunch of uses of 'bytecode' into 'bitcode'. This 2010-09-29 20:09:55 +00:00
llvm.grm Extend Attributes to 64 bits 2012-01-20 17:56:17 +00:00
llvmdo Remove CVS artifacts. 2010-08-04 16:11:24 +00:00
llvmgrep
makellvm
profile.pl Rename profile_rt.so to libprofile_rt.so under configure+make (it already was 2011-04-29 02:12:06 +00:00
test_debuginfo.pl Fix typo in temp. script file name. 2010-09-13 21:23:17 +00:00