llvm-project/clang
Hans Wennborg 0a20f5417c Better codegen support for DLL attributes being dropped after the first declaration (PR20792)
For the following code:

  __declspec(dllimport) int f(int x);
  int user(int x) {
    return f(x);
  }
  int f(int x) { return 1; }

Clang will drop the dllimport attribute in the AST, but CodeGen would have
already put it on the LLVM::Function, and that would never get updated.
(The same thing happens for global variables.)

This makes Clang check dropped DLL attribute case each time the LLVM object
is referenced.

This isn't perfect, because we will still get it wrong if the function is
never referenced by codegen after the attribute is dropped, but this handles
the common cases and makes us not fail in the verifier.

llvm-svn: 216699
2014-08-29 00:16:06 +00:00
..
INPUTS
bindings Expose the CUDA shared attribute to the C API. 2014-08-08 14:59:00 +00:00
docs clang-format: New option SpacesInSquareBrackets. 2014-08-26 11:41:14 +00:00
examples Go back to having a takeModule instead of a getModule. 2014-08-19 14:32:16 +00:00
include Don't load ill-formed AmbiguityKind in Sema::Lookup. 2014-08-28 23:17:55 +00:00
lib Better codegen support for DLL attributes being dropped after the first declaration (PR20792) 2014-08-29 00:16:06 +00:00
runtime Unify the name of compiler-rt builtins library on Linux. 2014-05-22 21:13:30 +00:00
test Better codegen support for DLL attributes being dropped after the first declaration (PR20792) 2014-08-29 00:16:06 +00:00
tools [C++11] Support for capturing of variable length arrays in lambda expression. 2014-08-28 04:28:19 +00:00
unittests Overload SourceManager::overrideFileContents so that unconditionally passing ownership is explicitly done using unique_ptr. 2014-08-27 20:54:45 +00:00
utils Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 06:28:36 +00:00
www [cxx_status] Minor wording tweaks. 2014-06-22 16:00:05 +00:00
.arcconfig Updated phabricator server. 2014-04-07 03:39:55 +00:00
.clang-format
.gitignore
CMakeLists.txt Make clang's rewrite engine a core feature 2014-07-16 16:48:33 +00:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
Makefile
ModuleInfo.txt
NOTES.txt Remove trailing spaces 2014-07-13 17:11:45 +00:00
README.txt Remove whitespace from test commit. 2014-07-16 19:10:36 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/