summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Several cosmetic changes, no functionality changed.Chandler Carruth2011-05-013-44/+38
| | | | | | | | | | Mostly trailing whitespace so that me editor nuking it doesn't muddy the waters of subsequent commits that do change functionality. Also nukes a stray statement that was harmless but redundant that I introduced in r130666. llvm-svn: 130667
* Move the state bits in DeclRefExpr out of the pointer union and intoChandler Carruth2011-05-014-52/+62
| | | | | | | | | | | | | | | a bitfield in the base class. DREs weren't using any bits here past the normal Expr bits, so we have plenty of room. This makes the common case of getting a Decl out of a DRE no longer need to do any masking etc. Also, while here, clean up code to use the accessor methods rather than directly poking these bits, and provide a nice comment for DREs that includes the information previously attached to the bits going into the pointer union. No functionality changed here, but DREs should be a tad faster now. llvm-svn: 130666
* Switch getAs to castAs (didn't know about this before!) and simplifyChandler Carruth2011-05-011-2/+2
| | | | | | some code. llvm-svn: 130665
* Remove a stale comment, it no longer applied after my cleanups.Chandler Carruth2011-05-011-8/+5
| | | | | | | Also fix several misspellings in my comments. I cannot spell, and cannot even be trusted to ask my editor how to spell apparently. llvm-svn: 130662
* enhance memcpyopt to obey -fno-builtin and friends. This addresses aChris Lattner2011-05-012-0/+20
| | | | | | problem reported on cfe-dev. llvm-svn: 130661
* Fixed source range for extern linkage specification without braces.Abramo Bagnara2011-05-011-0/+5
| | | | llvm-svn: 130660
* Add r130624 back now that ELF has been fixed to work with -fno-dwarf2-cfi-asm.Rafael Espindola2011-05-011-2/+1
| | | | llvm-svn: 130659
* Add r130623 back now that ELF has been fixed to work with -fno-dwarf2-cfi-asm.Rafael Espindola2011-05-018-17/+24
| | | | llvm-svn: 130658
* Windows/DynamicLibrary.inc: Clean up ELM_Callback. We may check the decl ↵NAKAMURA Takumi2011-05-016-31/+108
| | | | | | | | | instead of the versions of individual libraries. autoconf: Add checking ELM_Callback decl for mingw32 and mingw-w64. cmake/config-ix.cmake: Add checking ELM_Callback decl for win32. llvm-svn: 130657
* Based on the new information in the AST provided by r130628, writeChandler Carruth2011-05-014-15/+14
| | | | | | | | | | | 3 lines of code and improve a bunch of information in the libclang view of the code. Updates the two tests that exercise this with the new data, checking that each new source location actually points back to the declared template parameter. llvm-svn: 130656
* Move several more type traits' implementations into the AST. A few wereChandler Carruth2011-05-012-12/+42
| | | | | | already present in the AST, and I added the ones that weren't. llvm-svn: 130655
* Switch __is_scalar to use the isScalarType predicate rather thanChandler Carruth2011-05-011-6/+1
| | | | | | duplicating its logic. llvm-svn: 130654
* Have the array type traits build an expression with type 'size_t'Chandler Carruth2011-05-011-1/+8
| | | | | | | | | | instead of 'int'. The Embarcadero spec says 'unsigned int', not 'int'. That's what 'size_t' is on Windows, but for Clang using a 'size_t' that can be larger than int seems more appropriate. llvm-svn: 130653
* Remove an inapplicable and completely out of place comment. The type is in ↵Chandler Carruth2011-05-011-1/+1
| | | | | | fact 'bool'. llvm-svn: 130652
* Remove more dead code for emitting diagnostics. The callers of theseChandler Carruth2011-05-012-19/+8
| | | | | | | | | | | | | functions already precluded dependent types from reaching them. Also change one of the callers to not error when a trait is applied to a dependent type. This is a perfectly reasonable pattern, and both Unary and Binary type traits already support dependent types (by populating the AST with a nonce value). Remove the actual diagnostic, since these aren't errors. llvm-svn: 130651
* Improve traversing of BlockExprs in RecursiveASTVisitor.Argyrios Kyrtzidis2011-05-011-5/+12
| | | | llvm-svn: 130650
* Simplify the flow of some of the array type trait code.Chandler Carruth2011-05-011-13/+4
| | | | | | Completely remove a switch which selected between the same two types. llvm-svn: 130649
* Convert the expression trait evaluation to a static function andChandler Carruth2011-05-011-20/+19
| | | | | | | | | a switch with any default case. This both warns when an enumerator is missing and asserts if a value sneaks through despite the warning. While in there fix a bunch of coding style issues with this code. llvm-svn: 130648
* Remove the default case from the unary type trait evaluation function,Chandler Carruth2011-05-011-2/+1
| | | | | | | adding an unreachable annotation. Remarkably this one was already enumarting every trait. llvm-svn: 130647
* Remove a few more bogus returns when the switch covers all theChandler Carruth2011-05-011-4/+3
| | | | | | | | | enumerators. Also remove a default that led to llvm_unreachable to make another switch warn if any enumerators fail to be covered. llvm-svn: 130646
* Remove another default and a *completely* bogus return from a switchChandler Carruth2011-05-011-2/+2
| | | | | | | | over type traits. Add the missing trait from this switch that Clang's warning uncovered. llvm-svn: 130645
* Mark that this function ends in a covering switch statement with everyChandler Carruth2011-05-011-0/+2
| | | | | | | | case returning a value. Silences a GCC warning. llvm-svn: 130644
* Remove the type traits UTT_IsLvalueExpr and UTT_IsRvalueExpr.Chandler Carruth2011-05-014-11/+0
| | | | | | | | | | | As might be surmised from their names, these aren't type traits, they're expression traits. Amazingly enough, they're expression traits that we have, and fully implement. These "type" traits are even parsed from the same tokens as the expression traits. Luckily, the parser only tried the expression trait parsing for these tokens, so this was all just a pile of dead code. llvm-svn: 130643
* Fully implement delegating constructors!Alexis Hunt2011-05-0114-18/+194
| | | | | | | | | | As far as I know, this implementation is complete but might be missing a few optimizations. Exceptions and virtual bases are handled correctly. Because I'm an optimist, the web page has appropriately been updated. If I'm wrong, feel free to downgrade its support categories. llvm-svn: 130642
* More cleanup of the type traits implementation.Chandler Carruth2011-05-011-81/+110
| | | | | | | | | | | | | | | | | | | | 1) Moved the completeness checking routine above the evaluation routine so the reader sees that we do in fact check for complete types when necessary. 2) Remove the FIXME comment about not doing this. 3) Make the arguments to the evaluate function agree in order with those to the completeness checking function. 4) Completely specify the enumerators for the completeness checking function rather than relying on a default. 5) Remove a check for the Borland language to only require complete types in a few places. Borland's own documentation doesn't agree with this: some of the previously unspecified traits *do* require a complete type, some don't. 6) Correctly split the traits which do not require complete types from those that do, clarifying comments and citations to the standard or other documentation where relevant. llvm-svn: 130641
* Remove an unused variable from this function introduced in r130637,Chandler Carruth2011-05-011-1/+0
| | | | | | likely a result of copy/paste. llvm-svn: 130640
* Order the type traits according to the standard's listing of unary typeChandler Carruth2011-05-011-54/+79
| | | | | | | | | traits where possible. For the rest, group them and add some documentation regarding their origins. No functionality change intended. llvm-svn: 130639
* Begin cleaning up type trait expression implementations and settling onChandler Carruth2011-05-011-21/+21
| | | | | | a single pattern for implementing each. llvm-svn: 130638
* GCC uses a different encoding of pointers in the FDE when usingRafael Espindola2011-05-0113-24/+76
| | | | | | -fno-dwarf2-cfi-asm. Implement the same behavior. llvm-svn: 130637
* Add a triple to this test, otherwise it fails under MSVC because wchar_t is ↵Francois Pichet2011-05-011-1/+1
| | | | | | unsigned with the i686-pc-win32 triple. llvm-svn: 130636
* I forgot these files in the previous commit.Rafael Espindola2011-05-012-0/+2
| | | | llvm-svn: 130635
* Simplify the handling of pcrel relocations on ELF. Now we do the right thingRafael Espindola2011-05-0115-70/+45
| | | | | | | | | | for all symbol differences and can drop the old EmitPCRelSymbolValue method. This also make getExprForFDESymbol on ELF equal to the one on MachO, and it can be made non-virtual. llvm-svn: 130634
* Improve the documentation for the two ObjCDeclQualifiers so that IJohn McCall2011-05-013-20/+23
| | | | | | stop considering whether I can compress them. :) llvm-svn: 130633
* Compress some bits. Only matters for MSVC, or if we everJohn McCall2011-05-013-66/+91
| | | | | | | devirtualize Decl (because bits can't get laid out in base classes if the base is POD). llvm-svn: 130632
* Update instructions: LLVM.cmake is now LLVMConfig.cmakeOscar Fuentes2011-05-011-1/+1
| | | | llvm-svn: 130631
* Switch the interface name for both TemplateTypeParmType andChandler Carruth2011-05-015-7/+7
| | | | | | | | | | | SubstTemplateTypeParmType to be 'getIdentifier' instead of 'getName' as it returns an identifier. This makes them more consistent with the NamedDecl interface. Also, switch back to using this interface to acquire the indentifier in TypePrinter.cpp. I missed this in r130628. llvm-svn: 130629
* Re-applies the patch first applied way back in r106099, withChandler Carruth2011-05-0117-65/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | accompanying fixes to make it work today. The core of this patch is to provide a link from a TemplateTypeParmType back to the TemplateTypeParmDecl node which declared it. This in turn provides much more precise information about the type, where it came from, and how it functions for AST consumers. To make the patch work almost a year after its first attempt, it needed serialization support, and it now retains the old getName() interface. Finally, it requires us to not attempt to instantiate the type in an unsupported friend decl -- specifically those coming from template friend decls but which refer to a specific type through a dependent name. A cleaner representation of the last item would be to build FriendTemplateDecl nodes for these, storing their template parameters etc, and to perform proper instantation of them like any other template declaration. They can still be flagged as unsupported for the purpose of access checking, etc. This passed an asserts-enabled bootstrap for me, and the reduced test case mentioned in the original review thread no longer causes issues, likely fixed at somewhere amidst the 24k revisions that have elapsed. llvm-svn: 130628
* Revert the previous patch while I figure out how to make llvm-gccRafael Espindola2011-04-301-1/+2
| | | | | | less agressive about disabling cfi on linux :-( llvm-svn: 130627
* Revert the previous patch while I figure out how to make llvm-gccRafael Espindola2011-04-309-27/+17
| | | | | | less agressive about disabling cfi on linux :-( llvm-svn: 130626
* X86AsmPrinter doesn't know how to handle the X86II::MO_GOT_ABSOLUTE_ADDRESS flagJakob Stoklund Olesen2011-04-301-0/+12
| | | | | | | | | | | | | | after folding ADD32ri to ADD32mi, so don't do that. This only happens when the greedy register allocator gets itself in trouble and spills %vreg9 here: 16L %vreg9<def> = MOVPC32r 0, %ESP<imp-use>; GR32:%vreg9 48L %vreg9<def> = ADD32ri %vreg9, <es:_GLOBAL_OFFSET_TABLE_>[TF=1], %EFLAGS<imp-def,dead>; GR32:%vreg9 That should never happen, the live range should be split instead. llvm-svn: 130625
* Update for cfi.Rafael Espindola2011-04-301-2/+1
| | | | llvm-svn: 130624
* Enable CFI on OS X.Rafael Espindola2011-04-309-17/+27
| | | | | | | | | | | | | | | Currently the output should be almost identical to the one produced by CodeGen to make the transition easier. The only two differences I know of are: * Some files get an extra advance loc of size 0. This will be fixed when relaxations are enabled. * The optimization of declaring an EH symbol as an external variable is not implemented. This is a subset of adding the nounwind attribute, so we if really this at -O0 we should probably do it at the IL level. llvm-svn: 130623
* Remove unused function.Benjamin Kramer2011-04-301-14/+0
| | | | llvm-svn: 130622
* Remove noisy semicolons.Benjamin Kramer2011-04-302-2/+2
| | | | llvm-svn: 130621
* PR9792: Make sure to use the right definition of wchar_t when the defaultEli Friedman2011-04-302-1/+7
| | | | | | wchar_t is an unsigned type. llvm-svn: 130620
* When a physreg is live-in and live through a basic block, make sure its liveJakob Stoklund Olesen2011-04-301-1/+1
| | | | | | | | range covers the entire block. The live range can't be terminated at a random instruction. llvm-svn: 130619
* Some small improvements to the builtin (-ffreestanding) stdint.h; inEli Friedman2011-04-302-13/+21
| | | | | | particular, make sure to handle WCHAR_MIN correctly. llvm-svn: 130618
* Pass -fno-dwarf2-cfi-asm and use FileCheck.Rafael Espindola2011-04-301-2/+8
| | | | llvm-svn: 130617
* Implement -fno-dwarf2-cfi-asm.Rafael Espindola2011-04-306-0/+16
| | | | llvm-svn: 130616
* InstCombine: Turn (zext A) udiv (zext B) into (zext (A udiv B)). Same for ↵Benjamin Kramer2011-04-302-3/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | urem or constant B. This obviously helps a lot if the division would be turned into a libcall (think i64 udiv on i386), but div is also one of the few remaining instructions on modern CPUs that become more expensive when the bitwidth gets bigger. This also helps register pressure on i386 when dividing chars, divb needs two 8-bit parts of a 16 bit register as input where divl uses two registers. int foo(unsigned char a) { return a/10; } int bar(unsigned char a, unsigned char b) { return a/b; } compiles into (x86_64) _foo: imull $205, %edi, %eax shrl $11, %eax ret _bar: movzbl %dil, %eax divb %sil, %al movzbl %al, %eax ret llvm-svn: 130615
OpenPOWER on IntegriCloud