Mirror of official clang git repository located at http://llvm.org/git/clang. Updated every five minutes.
Перейти к файлу
Daniel Dunbar edfac03024 IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes.
- We do this when it is easy to determine that the backend will pass them on
   the stack properly by itself.

Currently LLVM codegen is really bad in some cases with byval, for example, on
the test case here (which is derived from Sema code, which likes to pass
SourceLocations around)::

  struct s47 { unsigned a; };
  void f47(int,int,int,int,int,int,struct s47);
  void test47(int a, struct s47 b) { f47(a, a, a, a, a, a, b); }

we used to emit code like this::

  ...
  movl	%esi, -8(%rbp)
  movl	-8(%rbp), %ecx
  movl	%ecx, (%rsp)
  ...

to handle moving the struct onto the stack, which is just appalling.

Now we generate::

  movl	%esi, (%rsp)

which seems better, no?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152462 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10 01:03:58 +00:00
INPUTS Extend all-std-headers.cpp to include C++11 headers when building in C++11 mode. 2012-02-14 23:06:14 +00:00
bindings/python [clang.py] Return bool from Cursor.__eq__ 2012-03-05 00:42:15 +00:00
docs Document the conversion from a lambda closure type to a block pointer 2012-03-09 23:24:48 +00:00
examples [analyzer] Rename clang::CallGraph into clang::idx::CallGraph + rename 2012-03-02 22:54:36 +00:00
include Assign APValues by swapping from a temporary. Removes a bunch of unnecessary 2012-03-10 00:28:11 +00:00
lib IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes. 2012-03-10 01:03:58 +00:00
runtime build/compiler-rt: Stop forcing off -integrated-as for compiler-rt builds. 2012-03-05 20:19:03 +00:00
test IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes. 2012-03-10 01:03:58 +00:00
tools [AST/Sema/libclang] Replace getSourceRange().getBegin() with getLocStart(). 2012-03-09 18:35:03 +00:00
unittests get rid of an unsued variable warning. 2012-03-06 21:18:56 +00:00
utils [utils/FuzzTest] Add '--stop-on-fail' to stop the script on the first failure 2012-03-08 20:29:39 +00:00
www Improve diagnostics for UCNs referring to control characters and members of the 2012-03-09 22:27:51 +00:00
.gitignore Revert "Test commit" 2011-10-24 10:03:25 +00:00
CMakeLists.txt CMake: install libclang.dll to $CMAKE_INSTALL_PREFIX/bin. 2012-02-25 16:46:50 +00:00
INSTALL.txt Add minimal INSTALL.txt 2009-09-13 02:21:31 +00:00
LICENSE.TXT Happy new year 2012! 2012-01-01 08:16:56 +00:00
Makefile Add the Clang tblgen backends to Clang, and flip the switch to cause 2011-10-06 13:03:08 +00:00
ModuleInfo.txt Move the ModuleInfo.txt file. 2007-07-11 17:03:27 +00:00
NOTES.txt Make a note about a missing optimization. 2011-07-28 07:41:22 +00:00
README.txt commit access verified, revert change 2012-03-06 22:55:51 +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/