]> granicus.if.org Git - clang/log
clang
16 years agoBasic codegen test for conditional with void*.
Eli Friedman [Sun, 10 Feb 2008 23:18:23 +0000 (23:18 +0000)]
Basic codegen test for conditional with void*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46940 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd a couple of sema tests for qualifiers with conditionals containing
Eli Friedman [Sun, 10 Feb 2008 23:14:16 +0000 (23:14 +0000)]
Add a couple of sema tests for qualifiers with conditionals containing
void*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46939 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix PR1999, by emitting a hard error only if an argument declarator is completely
Chris Lattner [Sun, 10 Feb 2008 23:08:00 +0000 (23:08 +0000)]
Fix PR1999, by emitting a hard error only if an argument declarator is completely
missing.  Otherwise, it is an implicit int case, which is valid in c90 and invalid
elsewhere, but accepted as an extension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46938 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix the type of conditionals involving void* to be self-consistent and
Eli Friedman [Sun, 10 Feb 2008 22:59:36 +0000 (22:59 +0000)]
Fix the type of conditionals involving void* to be self-consistent and
spec-compliant.

I'll put together some testcases in a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46937 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd a diagnostics helper to remove some redundant code.
Steve Naroff [Sun, 10 Feb 2008 21:38:56 +0000 (21:38 +0000)]
Add a diagnostics helper to remove some redundant code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46936 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agolong is 32-bit is on win32.
Chris Lattner [Sun, 10 Feb 2008 21:12:45 +0000 (21:12 +0000)]
long is 32-bit is on win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46935 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRefine bug fix to Expr::isLvalue (commit r46917).
Steve Naroff [Sun, 10 Feb 2008 01:39:04 +0000 (01:39 +0000)]
Refine bug fix to Expr::isLvalue (commit r46917).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46919 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoChange Expr::isLvalue() to allow the "void" type. This fixes bz2000 submitted by...
Steve Naroff [Sun, 10 Feb 2008 00:30:18 +0000 (00:30 +0000)]
Change Expr::isLvalue() to allow the "void" type. This fixes bz2000 submitted by Neil Booth.

Neil, can you point me to the place in the C99 spec that says this is allowed? I thought Expr::isLvalue() conformed to the spec, which says "C99 6.3.2.1: an lvalue is an expression with an object type or an incomplete type other than void.". Please advise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46917 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImplement __builtin_va_copy
Anders Carlsson [Sat, 9 Feb 2008 20:26:43 +0000 (20:26 +0000)]
Implement __builtin_va_copy

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46911 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoBehave correctly if a constraint expression is invalid.
Anders Carlsson [Sat, 9 Feb 2008 19:57:29 +0000 (19:57 +0000)]
Behave correctly if a constraint expression is invalid.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46910 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix spelling in comment.
Steve Naroff [Sat, 9 Feb 2008 17:25:18 +0000 (17:25 +0000)]
Fix spelling in comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46906 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix <rdar://problem/5733511> clang doesn't emit error for const array.
Steve Naroff [Sat, 9 Feb 2008 16:59:44 +0000 (16:59 +0000)]
Fix <rdar://problem/5733511> clang doesn't emit error for const array.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46905 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoExpose the logic for field address codegen; it is needed for aggregate
Eli Friedman [Sat, 9 Feb 2008 08:50:58 +0000 (08:50 +0000)]
Expose the logic for field address codegen; it is needed for aggregate
initializers, and I don't want to duplicate the bitfield-handling code.
(I'll send a patch for aggregate initializers to the mailing
list sometime soon.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46904 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoA bunch-o changes to fix <rdar://problem/5716046> incomplete implementation of ObjC...
Steve Naroff [Fri, 8 Feb 2008 22:06:17 +0000 (22:06 +0000)]
A bunch-o changes to fix <rdar://problem/5716046> incomplete implementation of ObjC class warning is incomplete

As part of this fix, I made a low-level change to the text diagnostics machinery (to basically avoid printing duplicate source lines/carets when you have multiple diagnostics that refer to the same exact place). For now, this only happens with we don't have a source range (could be extended to support source ranges as well).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46897 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoSplit off expression-bindings in ValueState from variable-bindings.
Ted Kremenek [Fri, 8 Feb 2008 21:10:02 +0000 (21:10 +0000)]
Split off expression-bindings in ValueState from variable-bindings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46892 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoChanged "GetValue" methods to take an
Ted Kremenek [Fri, 8 Feb 2008 20:29:23 +0000 (20:29 +0000)]
Changed "GetValue" methods to take an
Expr* instead of a Stmt*, since we only
store bindings for Expr*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46891 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix a bitfield regression. Reported by Anders Carlsson.
Lauro Ramos Venancio [Fri, 8 Feb 2008 19:46:46 +0000 (19:46 +0000)]
Fix a bitfield regression. Reported by Anders Carlsson.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46889 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMoved implementation of "RemoveDeadBindings" from the main
Ted Kremenek [Fri, 8 Feb 2008 19:17:19 +0000 (19:17 +0000)]
Moved implementation of "RemoveDeadBindings" from the main
GRConstants logic to ValueStateManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46888 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRemoved ability to create symbol bindings
Ted Kremenek [Fri, 8 Feb 2008 19:08:13 +0000 (19:08 +0000)]
Removed ability to create symbol bindings
in VarKey and VariableBindingsTy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46887 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse getLogicalLineNumber() in FuzzyParseMicrosoftAsmStatement(), it's more general...
Steve Naroff [Fri, 8 Feb 2008 18:01:27 +0000 (18:01 +0000)]
Use getLogicalLineNumber() in FuzzyParseMicrosoftAsmStatement(), it's more general and simplifies the code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46885 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMoved that clang doesn't depend on llvm-gcc above
Ted Kremenek [Fri, 8 Feb 2008 07:32:26 +0000 (07:32 +0000)]
Moved that clang doesn't depend on llvm-gcc above
the subsection of building clang with llvm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46884 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImplemented transfer functions for "<<" and ">>" when the RValues are
Ted Kremenek [Fri, 8 Feb 2008 07:14:58 +0000 (07:14 +0000)]
Implemented transfer functions for "<<" and ">>" when the RValues are
ConcreteInts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46883 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd instructions for building clang while building llvm.
Eric Christopher [Fri, 8 Feb 2008 07:10:48 +0000 (07:10 +0000)]
Add instructions for building clang while building llvm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46881 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImplemented transfer functions for Statement-Expressions and Commas.
Ted Kremenek [Fri, 8 Feb 2008 07:05:39 +0000 (07:05 +0000)]
Implemented transfer functions for Statement-Expressions and Commas.
Fixed bug in dispatching to the correct transfer function for |=, &=, and ^|.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46880 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDe-^Mify file.
Eric Christopher [Fri, 8 Feb 2008 06:45:49 +0000 (06:45 +0000)]
De-^Mify file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46879 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoSupport fuzzy parsing MS line-oriented __asm's that originate from a macro (a case...
Steve Naroff [Fri, 8 Feb 2008 03:36:19 +0000 (03:36 +0000)]
Support fuzzy parsing MS line-oriented __asm's that originate from a macro (a case where we can't obtain source line info). As the test case indicates, we don't currently support line-oriented asm statements that mix file/macro body tokens.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46878 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMore variable renamings.
Ted Kremenek [Fri, 8 Feb 2008 03:02:48 +0000 (03:02 +0000)]
More variable renamings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46875 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRenamed InvalidValue to UnknownVal.
Ted Kremenek [Fri, 8 Feb 2008 02:57:34 +0000 (02:57 +0000)]
Renamed InvalidValue to UnknownVal.
Renamed UninitializedValue to UninitializedVal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46874 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix indentation.
Eli Friedman [Fri, 8 Feb 2008 01:24:30 +0000 (01:24 +0000)]
Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46873 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDetabify SemaExpr. My text editor defaults to 8 spaces per tab, so it
Eli Friedman [Fri, 8 Feb 2008 01:19:44 +0000 (01:19 +0000)]
Detabify SemaExpr. My text editor defaults to 8 spaces per tab, so it
gets kind of annoying.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46872 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImprove diagnostic for illegal array initialization.
Eli Friedman [Fri, 8 Feb 2008 00:48:24 +0000 (00:48 +0000)]
Improve diagnostic for illegal array initialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46869 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoPut back the top-level asm code; all tests pass now.
Anders Carlsson [Fri, 8 Feb 2008 00:33:21 +0000 (00:33 +0000)]
Put back the top-level asm code; all tests pass now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46868 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoBack out 46855 for now, it causes test failures on Darwin.
Anders Carlsson [Fri, 8 Feb 2008 00:23:11 +0000 (00:23 +0000)]
Back out 46855 for now, it causes test failures on Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46867 91177308-0d34-0410-b5e6-96231b3b80d8

16 years ago- Add support for fuzzy parsing line-oriented __asm's (yuck).
Steve Naroff [Thu, 7 Feb 2008 23:24:32 +0000 (23:24 +0000)]
- Add support for fuzzy parsing line-oriented __asm's (yuck).
- Change handling of __w64 to a built-in macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46864 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoSimplify bitfield codegen.
Lauro Ramos Venancio [Thu, 7 Feb 2008 19:29:53 +0000 (19:29 +0000)]
Simplify bitfield codegen.
Fix codegen of struct { short a[3]; int b:15; }.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46859 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix codegen of
Lauro Ramos Venancio [Thu, 7 Feb 2008 18:18:58 +0000 (18:18 +0000)]
Fix codegen of
struct {
  char a[3];
  unsigned char b:1;
};

Fix PR1990.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46856 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoHandle top-level asm declarations.
Anders Carlsson [Thu, 7 Feb 2008 17:19:11 +0000 (17:19 +0000)]
Handle top-level asm declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46855 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMinor cleanup from yesterday's -fms-extension commit. Move __int* MS keywords to...
Steve Naroff [Thu, 7 Feb 2008 15:26:07 +0000 (15:26 +0000)]
Minor cleanup from yesterday's -fms-extension commit. Move __int* MS keywords to predefined macros. This removes some of the MS-madness from Parser::ParseDeclarationSpecifiers().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46852 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded some more opcode pretty-printing.
Ted Kremenek [Thu, 7 Feb 2008 15:20:13 +0000 (15:20 +0000)]
Added some more opcode pretty-printing.
Minor cleanups with generating nodes for NULL-pointer dereferences.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46851 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded proof-of-concept NULL pointer diagnostics to GRConstants.
Ted Kremenek [Thu, 7 Feb 2008 06:33:19 +0000 (06:33 +0000)]
Added proof-of-concept NULL pointer diagnostics to GRConstants.
Modified the driver to pass the Diagnostic object to GRConstants.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46847 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded support to distinguish between both implicit and explicit null dereferences.
Ted Kremenek [Thu, 7 Feb 2008 06:04:18 +0000 (06:04 +0000)]
Added support to distinguish between both implicit and explicit null dereferences.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46846 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImplement support for the extremely atrocious MS /##/ extension,
Chris Lattner [Thu, 7 Feb 2008 06:03:59 +0000 (06:03 +0000)]
Implement support for the extremely atrocious MS /##/ extension,
which pastes together a comment.  This is only enabled with
-fms-extensions of course.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46845 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agothese aren't tokens.
Chris Lattner [Thu, 7 Feb 2008 05:57:50 +0000 (05:57 +0000)]
these aren't tokens.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46844 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded recording of "implicit" NULL dereferences of symbolic pointers.
Ted Kremenek [Thu, 7 Feb 2008 05:48:01 +0000 (05:48 +0000)]
Added recording of "implicit" NULL dereferences of symbolic pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46843 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd a FIXME for alternate address spaces.
Eli Friedman [Thu, 7 Feb 2008 05:24:51 +0000 (05:24 +0000)]
Add a FIXME for alternate address spaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46841 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoget the tree building again
Chris Lattner [Thu, 7 Feb 2008 05:01:42 +0000 (05:01 +0000)]
get the tree building again

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46840 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded several guards in transfer functions for "InvalidValues".
Ted Kremenek [Thu, 7 Feb 2008 04:16:04 +0000 (04:16 +0000)]
Added several guards in transfer functions for "InvalidValues".

Fixed bug in RemoveDeadBindings by implementing a simple "mark-and-sweep"
cleaner over the bindings, starting from the Decls and block-level expressions
that are considered "live" by the Liveness analysis.

Fixed bug in isa<> implementation for class LValue.

Added "VisitDeclRefExpr" to GRConstants so that we explicitly bind the current
value of variable to the Block-level Expression (i.e., when the DeclRefExpr is
at the CFGBlock level).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46839 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImplement -fms-extensions. This allows us to fuzzy parse non-standard MS constructs...
Steve Naroff [Thu, 7 Feb 2008 03:50:06 +0000 (03:50 +0000)]
Implement -fms-extensions. This allows us to fuzzy parse non-standard MS constructs used in "windows.h".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46838 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFixed bug in LiveVariables analysis where Block-level exprs appearing
Ted Kremenek [Thu, 7 Feb 2008 02:38:55 +0000 (02:38 +0000)]
Fixed bug in LiveVariables analysis where Block-level exprs appearing
as the initializers for DeclStmts were not being registered as being
live at the start of the DeclStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46837 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded transfer function logic for ReturnStmts.
Ted Kremenek [Thu, 7 Feb 2008 01:08:27 +0000 (01:08 +0000)]
Added transfer function logic for ReturnStmts.
Fixed insidious bug in handling dereferences.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46835 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMinor reordering of the serialization of the fields of MemberExpr to result
Ted Kremenek [Wed, 6 Feb 2008 23:03:14 +0000 (23:03 +0000)]
Minor reordering of the serialization of the fields of MemberExpr to result
in a smaller encoding on disk.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46832 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMajor code refactoring/cleanup with transfer function logic. Now the
Ted Kremenek [Wed, 6 Feb 2008 22:50:25 +0000 (22:50 +0000)]
Major code refactoring/cleanup with transfer function logic.  Now the
code structure is more suitable for additional symbolic analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46831 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMake sure to propagate qualifiers through the member operator.
Eli Friedman [Wed, 6 Feb 2008 22:48:16 +0000 (22:48 +0000)]
Make sure to propagate qualifiers through the member operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46830 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoexplicitly document that return statement argument does not necessarily follow the...
Chris Lattner [Wed, 6 Feb 2008 21:20:34 +0000 (21:20 +0000)]
explicitly document that return statement argument does not necessarily follow the result type of the function.  Add testcase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46823 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse the subprocess module instead of os.system. Patch by Sam Bishop.
Anders Carlsson [Wed, 6 Feb 2008 19:03:27 +0000 (19:03 +0000)]
Use the subprocess module instead of os.system. Patch by Sam Bishop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46819 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded main transfer function support for unary operator "!".
Ted Kremenek [Wed, 6 Feb 2008 17:56:00 +0000 (17:56 +0000)]
Added main transfer function support for unary operator "!".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46815 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded assumption logic for symbolic non-lvalues when used in conditions such as
Ted Kremenek [Wed, 6 Feb 2008 17:32:17 +0000 (17:32 +0000)]
Added assumption logic for symbolic non-lvalues when used in conditions such as
"if(x)". On the true branch we know the value is != 0, and on the false branch
we know it is 0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46814 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd pointer + int (and vice versa) to the constant emitter.
Anders Carlsson [Wed, 6 Feb 2008 07:23:14 +0000 (07:23 +0000)]
Add pointer + int (and vice versa) to the constant emitter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46812 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoGenerate code for the various __builtin_ctz functions.
Anders Carlsson [Wed, 6 Feb 2008 07:19:27 +0000 (07:19 +0000)]
Generate code for the various __builtin_ctz functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46811 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agonow that ConvertTagDeclType is nice and simple, use it from UpdateCompletedType.
Chris Lattner [Wed, 6 Feb 2008 06:06:49 +0000 (06:06 +0000)]
now that ConvertTagDeclType is nice and simple, use it from UpdateCompletedType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46809 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agosimplify and speed up type refinement logic. No functionality change.
Chris Lattner [Wed, 6 Feb 2008 06:03:51 +0000 (06:03 +0000)]
simplify and speed up type refinement logic.  No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46808 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoonly convert the type name once, not each type it is refined.
Chris Lattner [Wed, 6 Feb 2008 05:48:29 +0000 (05:48 +0000)]
only convert the type name once, not each type it is refined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46807 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix the codegen of structs with flexible array members.
Eli Friedman [Wed, 6 Feb 2008 05:33:51 +0000 (05:33 +0000)]
Fix the codegen of structs with flexible array members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46806 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agosimplify a bunch of code.
Chris Lattner [Wed, 6 Feb 2008 05:29:46 +0000 (05:29 +0000)]
simplify a bunch of code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46805 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agorename TypeHolderMap to TypeCache, which more aptly describes what it is.
Chris Lattner [Wed, 6 Feb 2008 05:21:55 +0000 (05:21 +0000)]
rename TypeHolderMap to TypeCache, which more aptly describes what it is.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46804 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agosplit tagged decl layout into its own method.
Chris Lattner [Wed, 6 Feb 2008 05:18:32 +0000 (05:18 +0000)]
split tagged decl layout into its own method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46803 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoonly update the llvm type for a struct when we used the struct
Chris Lattner [Wed, 6 Feb 2008 05:12:09 +0000 (05:12 +0000)]
only update the llvm type for a struct when we used the struct
previously in an opaque context.  If we didn't do this,
computing its layout could be wasted: just be lazy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46802 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agosink more of the type related code into CodeGenTypes.
Chris Lattner [Wed, 6 Feb 2008 05:08:19 +0000 (05:08 +0000)]
sink more of the type related code into CodeGenTypes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46801 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agocodegen static variables in a function into a different namespace from
Chris Lattner [Wed, 6 Feb 2008 04:54:32 +0000 (04:54 +0000)]
codegen static variables in a function into a different namespace from
static variables outside functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46800 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoBe a bit stricter about array type compatibility.
Eli Friedman [Wed, 6 Feb 2008 04:53:22 +0000 (04:53 +0000)]
Be a bit stricter about array type compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46799 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFinish off the refactoring of type handling stuff. Now we recompile every
Chris Lattner [Wed, 6 Feb 2008 04:51:19 +0000 (04:51 +0000)]
Finish off the refactoring of type handling stuff.  Now we recompile every
tag decl after it has been completed

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46798 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFixed bug in '=' transfer function: RHS does not have to be a non-LValue.
Ted Kremenek [Wed, 6 Feb 2008 04:41:14 +0000 (04:41 +0000)]
Fixed bug in '=' transfer function: RHS does not have to be a non-LValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46797 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFixed signedness bug in cast transfer function when casting integers to pointers.
Ted Kremenek [Wed, 6 Feb 2008 04:31:33 +0000 (04:31 +0000)]
Fixed signedness bug in cast transfer function when casting integers to pointers.
Removed lval::SymIntConstraintVal; wrappers for symbolic constraints are not lvalues (only integers that evaluate to !0 or 0).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46796 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoModified state pretty-printing to include the '!=' and '==' constraints on
Ted Kremenek [Wed, 6 Feb 2008 03:56:15 +0000 (03:56 +0000)]
Modified state pretty-printing to include the '!=' and '==' constraints on
symbols (for constant integers).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46795 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDisabled operator= for ValueStateImpl.
Ted Kremenek [Wed, 6 Feb 2008 02:50:36 +0000 (02:50 +0000)]
Disabled operator= for ValueStateImpl.
ValueState no longer inherits FoldingSetNode (not needed).
Removed redundant operator= implementation for ValueState (it simply did the default behavior).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46794 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFixed bug when allocating a ValueStateImpl object in getPersistentState()
Ted Kremenek [Wed, 6 Feb 2008 02:45:20 +0000 (02:45 +0000)]
Fixed bug when allocating a ValueStateImpl object in getPersistentState()
using the bump-pointer allocator and a placed new; we accidentally allocated
a ValueStateImpl* instead, causing an overrun when we did a placed new().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46793 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agomove the codegen ASTConsumer out of the driver into libcodegen,
Chris Lattner [Wed, 6 Feb 2008 02:01:47 +0000 (02:01 +0000)]
move the codegen ASTConsumer out of the driver into libcodegen,
eliminating a bunch of forwarding methods and generally
simplifying things.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46792 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agopull .ll and .bc writing out of the ASTConsumer destructors into some top
Chris Lattner [Wed, 6 Feb 2008 01:42:25 +0000 (01:42 +0000)]
pull .ll and .bc writing out of the ASTConsumer destructors into some top
level code in clang.  This is a cleanup, but does implement "-o" for
-emit-llvm.  One effect of this is that "clang foo.c -emit-llvm" will now
emit into foo.ll instead of stdout.  Use "clang foo.c -emit-llvm -o -" or
"clang < foo.c -emit-llvm" to get the old behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46791 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded some skeleton code for performing "assume" on symbols: e.g. assume($0 != 0).
Ted Kremenek [Wed, 6 Feb 2008 00:54:14 +0000 (00:54 +0000)]
Added some skeleton code for performing "assume" on symbols: e.g. assume($0 != 0).
This action will add constraints to the possible values of a symbol.
Still needs to be debugged.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46789 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoinform astconsumer about tagdecls as they are defined.
Chris Lattner [Wed, 6 Feb 2008 00:51:33 +0000 (00:51 +0000)]
inform astconsumer about tagdecls as they are defined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46788 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agopass the astconsumer into Sema's ctor, clean up some stuff in
Chris Lattner [Wed, 6 Feb 2008 00:46:58 +0000 (00:46 +0000)]
pass the astconsumer into Sema's ctor, clean up some stuff in
Sema::ActOnTranslationUnitScope.  The various ObjC pieces at the top
of Sema.cpp should be moved into SemaObjC or something.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46787 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agorename ASTSTreamer.{h|cpp} -> ParseAST.{h|cpp}
Chris Lattner [Wed, 6 Feb 2008 00:23:21 +0000 (00:23 +0000)]
rename ASTSTreamer.{h|cpp} -> ParseAST.{h|cpp}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46786 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agokill the ASTStreamer class, inlining it into its only client: clang::ParseAST
Chris Lattner [Wed, 6 Feb 2008 00:15:02 +0000 (00:15 +0000)]
kill the ASTStreamer class, inlining it into its only client: clang::ParseAST

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46785 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoEven more inline asm codegen fixes.
Anders Carlsson [Wed, 6 Feb 2008 00:11:32 +0000 (00:11 +0000)]
Even more inline asm codegen fixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46784 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agosimple implementation of __builtin_alloca
Nate Begeman [Wed, 6 Feb 2008 00:02:50 +0000 (00:02 +0000)]
simple implementation of __builtin_alloca

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46783 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd a FIXME to clarify previous commit/experiment.
Steve Naroff [Tue, 5 Feb 2008 23:59:27 +0000 (23:59 +0000)]
Add a FIXME to clarify previous commit/experiment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46782 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoHandle the memory clobber.
Anders Carlsson [Tue, 5 Feb 2008 23:30:20 +0000 (23:30 +0000)]
Handle the memory clobber.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46780 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImprovements to inline asm code generation.
Anders Carlsson [Tue, 5 Feb 2008 23:18:57 +0000 (23:18 +0000)]
Improvements to inline asm code generation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46779 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded pretty-printing support for lval::SymIntConstraintVal and
Ted Kremenek [Tue, 5 Feb 2008 23:08:41 +0000 (23:08 +0000)]
Added pretty-printing support for lval::SymIntConstraintVal and
nonlval::SymIntConstraintVal.

Reworked transfer function for '==' and '!=' for LValues to return
SymIntConstraintVal when comparing a symbol with a constant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46778 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoHandle simple asm statements correctly.
Anders Carlsson [Tue, 5 Feb 2008 23:03:50 +0000 (23:03 +0000)]
Handle simple asm statements correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46777 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agosimplify some code.
Chris Lattner [Tue, 5 Feb 2008 22:40:55 +0000 (22:40 +0000)]
simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46774 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMoved implementation of cast<> for SymbolData closer to SymbolData's definition.
Ted Kremenek [Tue, 5 Feb 2008 22:21:54 +0000 (22:21 +0000)]
Moved implementation of cast<> for SymbolData closer to SymbolData's definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46772 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded new "NonLValue" class: SymIntConstraintVal. This class represents a binary
Ted Kremenek [Tue, 5 Feb 2008 22:10:48 +0000 (22:10 +0000)]
Added new "NonLValue" class: SymIntConstraintVal. This class represents a binary
contraint between a symbol and an integer constant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46771 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMoved subclasses of LValue and NonLValue into their own namespaces.
Ted Kremenek [Tue, 5 Feb 2008 21:52:21 +0000 (21:52 +0000)]
Moved subclasses of LValue and NonLValue into their own namespaces.
This noticeably cleans up the naming of these classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46770 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded "SymIntConstraint", a utility class to represent intermediate values for
Ted Kremenek [Tue, 5 Feb 2008 21:32:43 +0000 (21:32 +0000)]
Added "SymIntConstraint", a utility class to represent intermediate values for
transfer function evaluation that represent constraints between symbolic values
and constant integers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46769 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix Parser::ParseObjCTryStmt() to allow for trailing @-keyword statements/expressions.
Steve Naroff [Tue, 5 Feb 2008 21:27:35 +0000 (21:27 +0000)]
Fix Parser::ParseObjCTryStmt() to allow for trailing @-keyword statements/expressions.

This bug fix is the result of not having 2-token lookahead to recognize specific @-keywords.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46768 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd some binops.
Anders Carlsson [Tue, 5 Feb 2008 20:54:21 +0000 (20:54 +0000)]
Add some binops.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46766 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMore improvements to inline asm CG.
Anders Carlsson [Tue, 5 Feb 2008 20:01:53 +0000 (20:01 +0000)]
More improvements to inline asm CG.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46762 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded "batch" processing versions of Nodify and SetValue. Created typedefs
Ted Kremenek [Tue, 5 Feb 2008 19:35:18 +0000 (19:35 +0000)]
Added "batch" processing versions of Nodify and SetValue.  Created typedefs
for buffers for RValues and States.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46759 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded a "ConstantNotEq" map to ValueState (and added necessary typedefs and factory...
Ted Kremenek [Tue, 5 Feb 2008 18:51:06 +0000 (18:51 +0000)]
Added a "ConstantNotEq" map to ValueState (and added necessary typedefs and factory objects to ValueStateManager).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46758 91177308-0d34-0410-b5e6-96231b3b80d8