Commit Graph

71882 Commits

Author SHA1 Message Date
Daniel Dunbar b0a1942196 Spell empty StringRef correctly (0 is a null StringRef, which is not the same).
llvm-svn: 87011
2009-11-12 18:40:12 +00:00
Douglas Gregor 49ba3cabdd Recognize (and check) pointer-to-member template arguments that are
non-type template parameters or constants of pointer-to-member
type. Once checked, be sure to retain those pointer-to-member
constants as expressions if they are dependent, or as declarations if
they are not dependent.

llvm-svn: 87010
2009-11-12 18:38:13 +00:00
Dan Gohman 29271e7585 Mark DBG_LABEL, EH_LABEL, and GC_LABEL as not-duplicable, since
they really are not duplicable.

llvm-svn: 87009
2009-11-12 18:36:19 +00:00
Devang Patel 94f798c079 "Attach debug info with llvm instructions" mode was enabled a month ago. Now make it permanent and remove old way of inserting intrinsics to encode debug info for locations and types.
llvm-svn: 87007
2009-11-12 18:21:39 +00:00
Benjamin Kramer 3628bdab14 Silence a warning on targets with unsigned chars.
llvm-svn: 87002
2009-11-12 17:59:45 +00:00
Devang Patel 6e98d7af22 Use getNameAsCString() instead of getName().data()
llvm-svn: 87001
2009-11-12 17:49:47 +00:00
Douglas Gregor 4e948ce769 When instantiating a reference to a non-type template parameter of pointer to
member type (e.g., T Class::*Member), build a pointer-to-member
constant expression. Previously, we we just building a simple
declaration reference expression, which meant that the expression was
not treated as a pointer to member.

llvm-svn: 87000
2009-11-12 17:40:13 +00:00
Jim Grosbach 5d57714e6c Update TB[BH] layout optimization. Add support for moving the target block
to directly follow the jump table. Move the layout changes to prior to any
constant island handling.

llvm-svn: 86999
2009-11-12 17:25:07 +00:00
Chandler Carruth bc55fe26c6 Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.
This resolves the layering violation where CodeGen depended on Frontend.

llvm-svn: 86998
2009-11-12 17:24:48 +00:00
Jim Grosbach 1025a4998b Clean up testcase a bit. Simplify case blocks and adjust switch instruction to not take an undefined value as input.
llvm-svn: 86997
2009-11-12 17:19:09 +00:00
Anders Carlsson 9a1cd87d17 Set CK_BaseToDerived in TryStaticDowncast.
llvm-svn: 86996
2009-11-12 16:53:16 +00:00
Douglas Gregor 6051c8d344 Give CanQual<T> an implicit conversion to bool, so that it can be used
in "if" statements like:

  if (CanQual<ReferenceType> RefType = T.getAs<ReferenceType>())

Thanks to Clang for pointing out this mistake :)

llvm-svn: 86995
2009-11-12 16:49:45 +00:00
Anders Carlsson a70ad93f8a Add a CK_BaseToDerived cast kind.
llvm-svn: 86994
2009-11-12 16:43:42 +00:00
Douglas Gregor 19ac2d6494 When comparing template parameter lists, distinguish between three cases:
- Comparing template parameter lists to determine if we have a redeclaration
  - Comparing template parameter lists to determine if we have equivalent
    template template parameters
  - Comparing template parameter lists to determine whether a template 
    template argument is valid for a given template template parameter.

Previously, we did not distinguish between the last two cases, which
got us into trouble when we were looking for exact type matches
between the types of non-type template parameters that were dependent
types. Now we do, so we properly delay checking of template template
arguments until instantiation time.

Also, fix an accidental fall-through in a case statement that was
causing crashes.

llvm-svn: 86992
2009-11-12 16:20:59 +00:00
Daniel Dunbar 068ae76e02 Disallow FIX-ITs when generating code.
llvm-svn: 86990
2009-11-12 15:42:53 +00:00
Douglas Gregor ef986e8fc3 Improve source-location information for implicitly-generated member call expressions
llvm-svn: 86989
2009-11-12 15:31:47 +00:00
Daniel Dunbar 91cd960d50 clang-cc: Coalesce frontend options further.
llvm-svn: 86988
2009-11-12 15:23:20 +00:00
Nuno Lopes f8fcac7470 fix crash in my previous patch
llvm-svn: 86987
2009-11-12 15:10:33 +00:00
Nuno Lopes 60d5b1cfdb implement shl, ashr, and lshr methods. shl is not fully implemented as it is quite tricky.
llvm-svn: 86986
2009-11-12 14:53:53 +00:00
Benjamin Kramer 5218176bc6 Fix typo in run line.
llvm-svn: 86984
2009-11-12 12:35:27 +00:00
Benjamin Kramer 1eb8569bcb Fix MSVC build.
llvm-svn: 86983
2009-11-12 12:30:05 +00:00
Gabor Greif 13431c6cdf typo
llvm-svn: 86980
2009-11-12 09:44:17 +00:00
Zhongxing Xu c6d9292197 update CMakefile
llvm-svn: 86979
2009-11-12 08:39:33 +00:00
Zhongxing Xu 88cca6b085 Add boilerplate logic for a malloc/free checker.
llvm-svn: 86978
2009-11-12 08:38:56 +00:00
Chris Lattner 55c9877b66 Generalize stdint.h for non-8-bit-multiple types, patch by
Ken Dyck!

"This adds definitions for types of 8-bit multiples
from 8 to 64 to stdint.h and rationalizes the selection of types 
for the exact-width definitions in InitPreprocessor.cpp."

llvm-svn: 86977
2009-11-12 08:08:27 +00:00
Chris Lattner 0fb5bbd401 do not store wchar/char16/char32/intmax width/alignment info
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!

llvm-svn: 86976
2009-11-12 08:04:33 +00:00
Chris Lattner eb9acbfb05 implement a nice little efficiency hack in the inliner. Since we're now
running IPSCCP early, and we run functionattrs interlaced with the inliner,
we often (particularly for small or noop functions) completely propagate
all of the information about a call to its call site in IPSSCP (making a call
dead) and functionattrs is smart enough to realize that the function is
readonly (because it is interlaced with inliner).

To improve compile time and make the inliner threshold more accurate, realize
that we don't have to inline dead readonly function calls.  Instead, just 
delete the call.  This happens all the time for C++ codes, here are some
counters from opt/llvm-ld counting the number of times calls were deleted vs
inlined on various apps:

Tramp3d opt:
  5033 inline                - Number of call sites deleted, not inlined
 24596 inline                - Number of functions inlined
llvm-ld:
  667 inline           - Number of functions deleted because all callers found
  699 inline           - Number of functions inlined

483.xalancbmk opt:
  8096 inline                - Number of call sites deleted, not inlined
 62528 inline                - Number of functions inlined
llvm-ld:
   217 inline           - Number of allocas merged together
  2158 inline           - Number of functions inlined

471.omnetpp:
  331 inline                - Number of call sites deleted, not inlined
 8981 inline                - Number of functions inlined
llvm-ld:
  171 inline           - Number of functions deleted because all callers found
  629 inline           - Number of functions inlined


Deleting a call is much faster than inlining it, and is insensitive to the
size of the callee. :)

llvm-svn: 86975
2009-11-12 07:56:08 +00:00
Evan Cheng 5d85a46f76 RegScavenger::enterBasicBlock should always reset register state.
llvm-svn: 86972
2009-11-12 07:49:10 +00:00
Evan Cheng 85a9f430e9 - Teach LSR to avoid changing cmp iv stride if it will create an immediate that
cannot be folded into target cmp instruction.
- Avoid a phase ordering issue where early cmp optimization would prevent the
  later count-to-zero optimization.
- Add missing checks which could cause LSR to reuse stride that does not have
  users.
- Fix a bug in count-to-zero optimization code which failed to find the pre-inc
  iv's phi node.
- Remove, tighten, loosen some incorrect checks disable valid transformations.
- Quite a bit of code clean up.

llvm-svn: 86969
2009-11-12 07:35:05 +00:00
Daniel Dunbar 4c0e8274e9 Move warning options into DiagnosticOptions.
llvm-svn: 86968
2009-11-12 07:28:44 +00:00
Daniel Dunbar 71ed08ba39 Avoid comparing string literals.
llvm-svn: 86967
2009-11-12 07:28:29 +00:00
Daniel Dunbar 8fd69a09cc Move dump-build-information option into DiagnosticOptions.
llvm-svn: 86966
2009-11-12 07:28:21 +00:00
Evan Cheng e129dd311e Use table to separate opcode from operands.
llvm-svn: 86965
2009-11-12 07:16:34 +00:00
Evan Cheng 15b80e4a9f isLegalICmpImmediate should take a signed integer; code clean up.
llvm-svn: 86964
2009-11-12 07:13:11 +00:00
Daniel Dunbar ec256a921f clang-cc: Factor CreateDiagnosticEngine out of main.
llvm-svn: 86963
2009-11-12 06:48:31 +00:00
Daniel Dunbar 0d1defd4cd clang-cc: -fixit is actually option, not an action, although its use with non
-fsyntax-only is probably untested.

llvm-svn: 86962
2009-11-12 06:48:24 +00:00
Daniel Dunbar 723e74ab75 Simplify.
llvm-svn: 86961
2009-11-12 06:48:17 +00:00
Oscar Fuentes 700205c49f CMake: Hopefully unbreak the build by mimicking the changes on the
other build system about the new C_INCLUDE_DIRS configure option.

llvm-svn: 86960
2009-11-12 06:48:09 +00:00
Ted Kremenek 6c37c5c356 PthreadLockChecker doesn't need PreVisitCallExpr() yet. All the current logic should be done in PostVisitCallExpr()
llvm-svn: 86959
2009-11-12 06:26:58 +00:00
Ted Kremenek d48568f641 Add most of the boilerplate logic for a simple pthread_mutux_lock() -> pthread_mutex_unlock() checker. We need to add a visitor method to Checker for handling dead symbols in order to detect locks that are not unlocked.
llvm-svn: 86958
2009-11-12 06:17:47 +00:00
Ted Kremenek 386a2a52d3 Remove obsolete 'struct NullDerefTag'.
llvm-svn: 86957
2009-11-12 06:16:18 +00:00
Rafael Espindola f401fa0386 Use the --with-c-include-dirs configure option.
llvm-svn: 86956
2009-11-12 05:48:41 +00:00
Rafael Espindola d95960be25 Add the --with-c-include-dirs to llvm's configure.
The clang patch is next.

llvm-svn: 86955
2009-11-12 05:46:09 +00:00
Oscar Fuentes d533e1d46b CMake: Pass -lm to check_symbol_exists for detecting several math
functions like floorf, ceilf, ... Add test for detecting nearbyintf.

This change was prompted by test/Transforms/SimplifyLibCalls/floor.ll

llvm-svn: 86954
2009-11-12 05:36:09 +00:00
Chris Lattner 5f6b8b2bcb use getPredicateOnEdge to fold comparisons through PHI nodes,
which implements GCC PR18046.  This also gets us 360 more
jump threads on 176.gcc.

llvm-svn: 86953
2009-11-12 05:24:05 +00:00
Chris Lattner 22db4b5e0c various fixes to the lattice transfer functions.
llvm-svn: 86952
2009-11-12 04:57:13 +00:00
Chris Lattner c893c4ed10 switch jump threading to use getPredicateOnEdge in one place
making the new LVI stuff smart enough to subsume some special
cases in the old code.  Disable them when LVI is around, the
testcase still passes.

llvm-svn: 86951
2009-11-12 04:37:50 +00:00
Chris Lattner 565ee2f1bd Add a new getPredicateOnEdge method which returns more rich information for
constant constraints.  Improve the LVI lattice to include inequality 
constraints.

llvm-svn: 86950
2009-11-12 04:36:58 +00:00
Ted Kremenek a971afb90f Enhance Checker class (and GRExprEngine) to support PostVisitation for CallExprs. No clients (yet).
llvm-svn: 86949
2009-11-12 04:35:08 +00:00
Ted Kremenek 8f6c4e8617 Remove GRExprEngine::EvalCall(). It had a single callsite in GRExprEngine, and was easily inlined.
llvm-svn: 86948
2009-11-12 04:16:35 +00:00