- Jan 20, 2012
-
-
Kostya Serebryany authored
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
-
- Oct 04, 2011
-
-
Rafael Espindola authored
llvm-svn: 141057
-
- Jun 15, 2011
-
-
John McCall authored
optimizations when emitting calls to the function; instead those calls may use faster relocations which require the function to be immediately resolved upon loading the dynamic object featuring the call. This is useful when it is known that the function will be called frequently and pervasively and therefore there is no merit in delaying binding of the function. Currently only implemented for x86-64, where it turns into a call through the global offset table. Patch by Dan Gohman, who assures me that he's going to add LangRef documentation for this once it's committed. llvm-svn: 133080
-
- Aug 29, 2010
-
-
Dan Gohman authored
llvm-svn: 112427
-
- Aug 04, 2010
-
-
Dan Gohman authored
and add comments about major implemented features. llvm-svn: 110215
-
- May 04, 2010
-
-
Dan Gohman authored
used together in either order. llvm-svn: 102983
-
- Mar 01, 2010
-
-
Dan Gohman authored
llvm-svn: 97457
-
- Feb 06, 2010
-
-
Jakob Stoklund Olesen authored
This time it's for real! I am going to hook this up in the frontends as well. The inliner has some experimental heuristics for dealing with the inline hint. When given a -respect-inlinehint option, functions marked with the inline keyword are given a threshold just above the default for -O3. We need some experiments to determine if that is the right thing to do. llvm-svn: 95466
-
- Jan 15, 2010
-
-
Eric Christopher authored
users. llvm-svn: 93558
-
- Aug 26, 2009
-
-
Dale Johannesen authored
code hints that it would be a good idea to inline a function ("inline" keyword). No functional change yet; FEs do not emit this and inliner does not use it. llvm-svn: 80063
-
- Jul 27, 2009
-
-
Dan Gohman authored
llvm-svn: 77261
-
- Jul 23, 2009
-
-
Dan Gohman authored
llvm-svn: 76811
-
- Jul 17, 2009
-
-
Dan Gohman authored
llvm-svn: 76135
-
- Jul 08, 2009
-
-
Nick Lewycky authored
these instructions, no autoupgrade or backwards compatibility support is provided. llvm-svn: 74991
-
- Jun 05, 2009
-
-
Dan Gohman authored
integer and floating-point opcodes, introducing FAdd, FSub, and FMul. For now, the AsmParser, BitcodeReader, and IRBuilder all preserve backwards compatability, and the Core LLVM APIs preserve backwards compatibility for IR producers. Most front-ends won't need to change immediately. This implements the first step of the plan outlined here: http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt llvm-svn: 72897
-
- Mar 30, 2009
-
-
Dan Gohman authored
valid argument attributes (zeroext and signext are). llvm-svn: 68053
-
- Mar 11, 2009
-
-
Duncan Sands authored
linkage, so remove it. llvm-svn: 66690
-
Duncan Sands authored
linkage: this linkage type only applies to declarations, but ODR is only relevant to globals with definitions. llvm-svn: 66650
-
- Mar 07, 2009
-
-
Duncan Sands authored
and extern_weak_odr. These are the same as the non-odr versions, except that they indicate that the global will only be overridden by an *equivalent* global. In C, a function with weak linkage can be overridden by a function which behaves completely differently. This means that IP passes have to skip weak functions, since any deductions made from the function definition might be wrong, since the definition could be replaced by something completely different at link time. This is not allowed in C++, thanks to the ODR (One-Definition-Rule): if a function is replaced by another at link-time, then the new function must be the same as the original function. If a language knows that a function or other global can only be overridden by an equivalent global, it can give it the weak_odr linkage type, and the optimizers will understand that it is alright to make deductions based on the function body. The code generators on the other hand map weak and weak_odr linkage to the same thing. llvm-svn: 66339
-
- Jan 06, 2009
-
-
Dan Gohman authored
llvm-svn: 61767
-
- Jan 05, 2009
-
-
Dan Gohman authored
- After GlobalAssign, emit addrspace before global/constant, to follow the new syntax. - Eliminate "type void", which is now invalid. - Fix invalid liblists like [, "foo"]. - Tweak whitespace in a few places. llvm-svn: 61706
-
Dan Gohman authored
llvm-svn: 61669
-
- Sep 15, 2008
-
-
Dan Gohman authored
x86_ssecallcc, function notes, and some whitespace adjustments. llvm-svn: 56221
-
- Jun 09, 2008
-
-
Dan Gohman authored
llvm-svn: 52149
-
- Jun 02, 2008
-
-
Dan Gohman authored
llvm-svn: 51879
-
- May 23, 2008
-
-
Dan Gohman authored
llvm-svn: 51484
-
Dan Gohman authored
and bitcode support for the extractvalue and insertvalue instructions and constant expressions. Note that this does not yet include CodeGen support. llvm-svn: 51468
-
Dan Gohman authored
llvm-svn: 51449
-