Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Feb 2011 01:32:11 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r219077 - in head: contrib/llvm/include/llvm contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/MC contrib/llvm...
Message-ID:  <201102270132.p1R1WBrV016862@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sun Feb 27 01:32:10 2011
New Revision: 219077
URL: http://svn.freebsd.org/changeset/base/219077

Log:
  Update llvm/clang to trunk r126547.
  
  There are several bugfixes in this update, but the most important one is
  to ensure __start_ and __stop_ symbols for linker sets and kernel module
  metadata are always emitted in object files:
  
    http://llvm.org/bugs/show_bug.cgi?id=9292
  
  Before this fix, if you compiled kernel modules with clang, they would
  not be properly processed by kldxref, and if they had any dependencies,
  the kernel would fail to load those.  Another problem occurred when
  attempting to mount a tmpfs filesystem, which would result in 'operation
  not supported by device'.

Added:
  head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
     - copied unchanged from r219074, vendor/clang/dist/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
     - copied unchanged from r219074, vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
  head/contrib/llvm/tools/clang/lib/Analysis/CFGReachabilityAnalysis.cpp
     - copied unchanged from r219074, vendor/clang/dist/lib/Analysis/CFGReachabilityAnalysis.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
     - copied unchanged from r219074, vendor/clang/dist/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
Deleted:
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/StackAddrLeakChecker.cpp
Modified:
  head/contrib/llvm/include/llvm/ADT/APInt.h
  head/contrib/llvm/include/llvm/ADT/ArrayRef.h
  head/contrib/llvm/include/llvm/ADT/ImmutableIntervalMap.h
  head/contrib/llvm/include/llvm/ADT/ImmutableMap.h
  head/contrib/llvm/include/llvm/Analysis/DIBuilder.h
  head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h
  head/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
  head/contrib/llvm/include/llvm/CodeGen/MachineConstantPool.h
  head/contrib/llvm/include/llvm/CodeGen/MachineFunction.h
  head/contrib/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
  head/contrib/llvm/include/llvm/IntrinsicsXCore.td
  head/contrib/llvm/include/llvm/MC/MCAsmInfo.h
  head/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h
  head/contrib/llvm/include/llvm/MC/MCStreamer.h
  head/contrib/llvm/include/llvm/Support/NoFolder.h
  head/contrib/llvm/include/llvm/Support/PathV1.h
  head/contrib/llvm/include/llvm/Target/TargetLowering.h
  head/contrib/llvm/include/llvm/Transforms/Utils/Local.h
  head/contrib/llvm/lib/Analysis/DIBuilder.cpp
  head/contrib/llvm/lib/Analysis/InstructionSimplify.cpp
  head/contrib/llvm/lib/CodeGen/AllocationOrder.h
  head/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  head/contrib/llvm/lib/CodeGen/BranchFolding.cpp
  head/contrib/llvm/lib/CodeGen/InlineSpiller.cpp
  head/contrib/llvm/lib/CodeGen/LowerSubregs.cpp
  head/contrib/llvm/lib/CodeGen/MachineFunction.cpp
  head/contrib/llvm/lib/CodeGen/MachineRegisterInfo.cpp
  head/contrib/llvm/lib/CodeGen/RegAllocBase.h
  head/contrib/llvm/lib/CodeGen/RegAllocBasic.cpp
  head/contrib/llvm/lib/CodeGen/RegAllocGreedy.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
  head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  head/contrib/llvm/lib/CodeGen/SplitKit.cpp
  head/contrib/llvm/lib/CodeGen/SplitKit.h
  head/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
  head/contrib/llvm/lib/CodeGen/VirtRegRewriter.cpp
  head/contrib/llvm/lib/MC/ELFObjectWriter.cpp
  head/contrib/llvm/lib/MC/MCAsmInfo.cpp
  head/contrib/llvm/lib/MC/MCAsmInfoDarwin.cpp
  head/contrib/llvm/lib/MC/MCDisassembler/EDOperand.cpp
  head/contrib/llvm/lib/MC/MCDisassembler/EDToken.cpp
  head/contrib/llvm/lib/MC/MCObjectStreamer.cpp
  head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
  head/contrib/llvm/lib/MC/MCParser/ELFAsmParser.cpp
  head/contrib/llvm/lib/MC/MCParser/MCAsmParserExtension.cpp
  head/contrib/llvm/lib/MC/MCSectionMachO.cpp
  head/contrib/llvm/lib/MC/MCStreamer.cpp
  head/contrib/llvm/lib/Support/APInt.cpp
  head/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
  head/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp
  head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.cpp
  head/contrib/llvm/lib/Target/ARM/ARMHazardRecognizer.cpp
  head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
  head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
  head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td
  head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td
  head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td
  head/contrib/llvm/lib/Target/ARM/ARMInstrVFP.td
  head/contrib/llvm/lib/Target/ARM/ARMSubtarget.cpp
  head/contrib/llvm/lib/Target/ARM/MLxExpansionPass.cpp
  head/contrib/llvm/lib/Target/ARM/NEONMoveFix.cpp
  head/contrib/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp
  head/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.cpp
  head/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.h
  head/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.cpp
  head/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.h
  head/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.cpp
  head/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.h
  head/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp
  head/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
  head/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.h
  head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
  head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.h
  head/contrib/llvm/lib/Target/Sparc/DelaySlotFiller.cpp
  head/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp
  head/contrib/llvm/lib/Target/Sparc/SparcISelLowering.h
  head/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.td
  head/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
  head/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.h
  head/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
  head/contrib/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
  head/contrib/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
  head/contrib/llvm/lib/Target/X86/X86FastISel.cpp
  head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  head/contrib/llvm/lib/Target/X86/X86ISelLowering.h
  head/contrib/llvm/lib/Target/X86/X86InstrFormats.td
  head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp
  head/contrib/llvm/lib/Target/X86/X86InstrInfo.h
  head/contrib/llvm/lib/Target/X86/X86InstrInfo.td
  head/contrib/llvm/lib/Target/X86/X86InstrSystem.td
  head/contrib/llvm/lib/Target/X86/X86MCCodeEmitter.cpp
  head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp
  head/contrib/llvm/lib/Target/X86/X86Subtarget.h
  head/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp
  head/contrib/llvm/lib/Target/XCore/XCoreISelLowering.h
  head/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.td
  head/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
  head/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
  head/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
  head/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp
  head/contrib/llvm/lib/Transforms/Utils/Local.cpp
  head/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
  head/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
  head/contrib/llvm/tools/clang/include/clang-c/Index.h
  head/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h
  head/contrib/llvm/tools/clang/include/clang/AST/ASTImporter.h
  head/contrib/llvm/tools/clang/include/clang/AST/Decl.h
  head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h
  head/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h
  head/contrib/llvm/tools/clang/include/clang/AST/DeclGroup.h
  head/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h
  head/contrib/llvm/tools/clang/include/clang/AST/Expr.h
  head/contrib/llvm/tools/clang/include/clang/AST/ExprCXX.h
  head/contrib/llvm/tools/clang/include/clang/AST/NestedNameSpecifier.h
  head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h
  head/contrib/llvm/tools/clang/include/clang/AST/Stmt.h
  head/contrib/llvm/tools/clang/include/clang/Analysis/AnalysisContext.h
  head/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def
  head/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h
  head/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h
  head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td
  head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td
  head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h
  head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td
  head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
  head/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h
  head/contrib/llvm/tools/clang/include/clang/Basic/PartialDiagnostic.h
  head/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h
  head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td
  head/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  head/contrib/llvm/tools/clang/include/clang/Frontend/AnalyzerOptions.h
  head/contrib/llvm/tools/clang/include/clang/Frontend/DeclXML.def
  head/contrib/llvm/tools/clang/include/clang/Frontend/HeaderSearchOptions.h
  head/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h
  head/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
  head/contrib/llvm/tools/clang/include/clang/Lex/TokenLexer.h
  head/contrib/llvm/tools/clang/include/clang/Sema/AnalysisBasedWarnings.h
  head/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h
  head/contrib/llvm/tools/clang/include/clang/Sema/ExternalSemaSource.h
  head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h
  head/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h
  head/contrib/llvm/tools/clang/include/clang/Sema/ScopeInfo.h
  head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
  head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h
  head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerProvider.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerV2.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
  head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
  head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
  head/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
  head/contrib/llvm/tools/clang/lib/AST/Decl.cpp
  head/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp
  head/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp
  head/contrib/llvm/tools/clang/lib/AST/DeclPrinter.cpp
  head/contrib/llvm/tools/clang/lib/AST/Expr.cpp
  head/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp
  head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
  head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp
  head/contrib/llvm/tools/clang/lib/AST/NestedNameSpecifier.cpp
  head/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp
  head/contrib/llvm/tools/clang/lib/AST/Stmt.cpp
  head/contrib/llvm/tools/clang/lib/AST/StmtDumper.cpp
  head/contrib/llvm/tools/clang/lib/AST/TemplateBase.cpp
  head/contrib/llvm/tools/clang/lib/Analysis/AnalysisContext.cpp
  head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp
  head/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp
  head/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp
  head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.h
  head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGCleanup.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h
  head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
  head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
  head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h
  head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
  head/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp
  head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
  head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/DocumentXML.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp
  head/contrib/llvm/tools/clang/lib/Frontend/VerifyDiagnosticsClient.cpp
  head/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
  head/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
  head/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp
  head/contrib/llvm/tools/clang/lib/Lex/TokenLexer.cpp
  head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
  head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp
  head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp
  head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp
  head/contrib/llvm/tools/clang/lib/Rewrite/RewriteObjC.cpp
  head/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp
  head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp
  head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
  head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
  head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h
  head/contrib/llvm/tools/clang/lib/Sema/TypeLocBuilder.h
  head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
  head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
  head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
  head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
  head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp
  head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CastToStructChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/Checkers.td
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ChrootChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ClangSACheckerProvider.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ExperimentalChecks.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/FixedAddressChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/InternalChecks.h
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/MacOSXAPIChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/NSAutoreleasePoolChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerSubChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/Environment.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
  head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp
  head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp
  head/contrib/llvm/utils/TableGen/AsmWriterEmitter.h
  head/contrib/llvm/utils/TableGen/ClangSACheckersEmitter.cpp
  head/contrib/llvm/utils/TableGen/X86RecognizableInstr.cpp
  head/lib/clang/include/clang/Basic/Version.inc
  head/lib/clang/libclanganalysis/Makefile
  head/lib/clang/libclangstaticanalyzercheckers/Makefile
Directory Properties:
  head/contrib/llvm/   (props changed)
  head/contrib/llvm/tools/clang/   (props changed)

Modified: head/contrib/llvm/include/llvm/ADT/APInt.h
==============================================================================
--- head/contrib/llvm/include/llvm/ADT/APInt.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/ADT/APInt.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -1193,6 +1193,12 @@ public:
   /// @brief Count the number of leading one bits.
   unsigned countLeadingOnes() const;
 
+  /// Computes the number of leading bits of this APInt that are equal to its
+  /// sign bit.
+  unsigned getNumSignBits() const {
+    return isNegative() ? countLeadingOnes() : countLeadingZeros();
+  }
+
   /// countTrailingZeros - This function is an APInt version of the
   /// countTrailingZeros_{32,64} functions in MathExtras.h. It counts
   /// the number of zeros from the least significant bit to the first set bit.

Modified: head/contrib/llvm/include/llvm/ADT/ArrayRef.h
==============================================================================
--- head/contrib/llvm/include/llvm/ADT/ArrayRef.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/ADT/ArrayRef.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -64,7 +64,10 @@ namespace llvm {
     /*implicit*/ ArrayRef(const std::vector<T> &Vec)
       : Data(Vec.empty() ? (T*)0 : &Vec[0]), Length(Vec.size()) {}
     
-    // TODO: C arrays.
+    /// Construct an ArrayRef from a C array.
+    template <size_t N>
+    /*implicit*/ ArrayRef(const T (&Arr)[N])
+      : Data(Arr), Length(N) {}
     
     /// @}
     /// @name Simple Operations

Modified: head/contrib/llvm/include/llvm/ADT/ImmutableIntervalMap.h
==============================================================================
--- head/contrib/llvm/include/llvm/ADT/ImmutableIntervalMap.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/ADT/ImmutableIntervalMap.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -215,7 +215,7 @@ public:
 
     ImmutableIntervalMap add(ImmutableIntervalMap Old, 
                              key_type_ref K, data_type_ref D) {
-      TreeTy *T = F.add(Old.Root, std::make_pair<key_type, data_type>(K, D));
+      TreeTy *T = F.add(Old.Root, std::pair<key_type, data_type>(K, D));
       return ImmutableIntervalMap(F.getCanonicalTree(T));
     }
 

Modified: head/contrib/llvm/include/llvm/ADT/ImmutableMap.h
==============================================================================
--- head/contrib/llvm/include/llvm/ADT/ImmutableMap.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/ADT/ImmutableMap.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -108,7 +108,7 @@ public:
     ImmutableMap getEmptyMap() { return ImmutableMap(F.getEmptyTree()); }
 
     ImmutableMap add(ImmutableMap Old, key_type_ref K, data_type_ref D) {
-      TreeTy *T = F.add(Old.Root, std::make_pair<key_type,data_type>(K,D));
+      TreeTy *T = F.add(Old.Root, std::pair<key_type,data_type>(K,D));
       return ImmutableMap(Canonicalize ? F.getCanonicalTree(T): T);
     }
 

Modified: head/contrib/llvm/include/llvm/Analysis/DIBuilder.h
==============================================================================
--- head/contrib/llvm/include/llvm/Analysis/DIBuilder.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/Analysis/DIBuilder.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -58,7 +58,7 @@ namespace llvm {
     const MDNode *getCU() { return TheCU; }
     enum ComplexAddrKind { OpPlus=1, OpDeref };
 
-    /// CreateCompileUnit - A CompileUnit provides an anchor for all debugging
+    /// createCompileUnit - A CompileUnit provides an anchor for all debugging
     /// information generated during this instance of compilation.
     /// @param Lang     Source programming language, eg. dwarf::DW_LANG_C99
     /// @param File     File name
@@ -72,67 +72,67 @@ namespace llvm {
     ///                 by a tool analyzing generated debugging information.
     /// @param RV       This indicates runtime version for languages like 
     ///                 Objective-C.
-    void CreateCompileUnit(unsigned Lang, StringRef File, StringRef Dir, 
+    void createCompileUnit(unsigned Lang, StringRef File, StringRef Dir, 
                            StringRef Producer,
                            bool isOptimized, StringRef Flags, unsigned RV);
 
-    /// CreateFile - Create a file descriptor to hold debugging information
+    /// createFile - Create a file descriptor to hold debugging information
     /// for a file.
-    DIFile CreateFile(StringRef Filename, StringRef Directory);
+    DIFile createFile(StringRef Filename, StringRef Directory);
                            
-    /// CreateEnumerator - Create a single enumerator value.
-    DIEnumerator CreateEnumerator(StringRef Name, uint64_t Val);
+    /// createEnumerator - Create a single enumerator value.
+    DIEnumerator createEnumerator(StringRef Name, uint64_t Val);
 
-    /// CreateBasicType - Create debugging information entry for a basic 
+    /// createBasicType - Create debugging information entry for a basic 
     /// type.
     /// @param Name        Type name.
     /// @param SizeInBits  Size of the type.
     /// @param AlignInBits Type alignment.
     /// @param Encoding    DWARF encoding code, e.g. dwarf::DW_ATE_float.
-    DIType CreateBasicType(StringRef Name, uint64_t SizeInBits, 
+    DIType createBasicType(StringRef Name, uint64_t SizeInBits, 
                            uint64_t AlignInBits, unsigned Encoding);
 
-    /// CreateQualifiedType - Create debugging information entry for a qualified
+    /// createQualifiedType - Create debugging information entry for a qualified
     /// type, e.g. 'const int'.
     /// @param Tag         Tag identifing type, e.g. dwarf::TAG_volatile_type
     /// @param FromTy      Base Type.
-    DIType CreateQualifiedType(unsigned Tag, DIType FromTy);
+    DIType createQualifiedType(unsigned Tag, DIType FromTy);
 
-    /// CreatePointerType - Create debugging information entry for a pointer.
+    /// createPointerType - Create debugging information entry for a pointer.
     /// @param PointeeTy   Type pointed by this pointer.
     /// @param SizeInBits  Size.
     /// @param AlignInBits Alignment. (optional)
     /// @param Name        Pointer type name. (optional)
-    DIType CreatePointerType(DIType PointeeTy, uint64_t SizeInBits,
+    DIType createPointerType(DIType PointeeTy, uint64_t SizeInBits,
                              uint64_t AlignInBits = 0, 
                              StringRef Name = StringRef());
 
-    /// CreateReferenceType - Create debugging information entry for a c++
+    /// createReferenceType - Create debugging information entry for a c++
     /// style reference.
-    DIType CreateReferenceType(DIType RTy);
+    DIType createReferenceType(DIType RTy);
 
-    /// CreateTypedef - Create debugging information entry for a typedef.
+    /// createTypedef - Create debugging information entry for a typedef.
     /// @param Ty          Original type.
     /// @param Name        Typedef name.
     /// @param File        File where this type is defined.
     /// @param LineNo      Line number.
-    DIType CreateTypedef(DIType Ty, StringRef Name, DIFile File, 
+    DIType createTypedef(DIType Ty, StringRef Name, DIFile File, 
                          unsigned LineNo);
 
-    /// CreateFriend - Create debugging information entry for a 'friend'.
-    DIType CreateFriend(DIType Ty, DIType FriendTy);
+    /// createFriend - Create debugging information entry for a 'friend'.
+    DIType createFriend(DIType Ty, DIType FriendTy);
 
-    /// CreateInheritance - Create debugging information entry to establish
+    /// createInheritance - Create debugging information entry to establish
     /// inheritance relationship between two types.
     /// @param Ty           Original type.
     /// @param BaseTy       Base type. Ty is inherits from base.
     /// @param BaseOffset   Base offset.
     /// @param Flags        Flags to describe inheritance attribute, 
     ///                     e.g. private
-    DIType CreateInheritance(DIType Ty, DIType BaseTy, uint64_t BaseOffset,
+    DIType createInheritance(DIType Ty, DIType BaseTy, uint64_t BaseOffset,
                              unsigned Flags);
 
-    /// CreateMemberType - Create debugging information entry for a member.
+    /// createMemberType - Create debugging information entry for a member.
     /// @param Name         Member name.
     /// @param File         File where this member is defined.
     /// @param LineNo       Line number.
@@ -141,12 +141,12 @@ namespace llvm {
     /// @param OffsetInBits Member offset.
     /// @param Flags        Flags to encode member attribute, e.g. private
     /// @param Ty           Parent type.
-    DIType CreateMemberType(StringRef Name, DIFile File,
+    DIType createMemberType(StringRef Name, DIFile File,
                             unsigned LineNo, uint64_t SizeInBits, 
                             uint64_t AlignInBits, uint64_t OffsetInBits, 
                             unsigned Flags, DIType Ty);
 
-    /// CreateClassType - Create debugging information entry for a class.
+    /// createClassType - Create debugging information entry for a class.
     /// @param Scope        Scope in which this class is defined.
     /// @param Name         class name.
     /// @param File         File where this member is defined.
@@ -161,14 +161,14 @@ namespace llvm {
     ///                     DW_AT_containing_type. See DWARF documentation
     ///                     for more info.
     /// @param TemplateParms Template type parameters.
-    DIType CreateClassType(DIDescriptor Scope, StringRef Name, DIFile File,
+    DIType createClassType(DIDescriptor Scope, StringRef Name, DIFile File,
                            unsigned LineNumber, uint64_t SizeInBits,
                            uint64_t AlignInBits, uint64_t OffsetInBits,
                            unsigned Flags, DIType DerivedFrom, 
                            DIArray Elements, MDNode *VTableHolder = 0,
                            MDNode *TemplateParms = 0);
 
-    /// CreateStructType - Create debugging information entry for a struct.
+    /// createStructType - Create debugging information entry for a struct.
     /// @param Scope        Scope in which this struct is defined.
     /// @param Name         Struct name.
     /// @param File         File where this member is defined.
@@ -178,12 +178,12 @@ namespace llvm {
     /// @param Flags        Flags to encode member attribute, e.g. private
     /// @param Elements     Struct elements.
     /// @param RunTimeLang  Optional parameter, Objective-C runtime version.
-    DIType CreateStructType(DIDescriptor Scope, StringRef Name, DIFile File,
+    DIType createStructType(DIDescriptor Scope, StringRef Name, DIFile File,
                             unsigned LineNumber, uint64_t SizeInBits,
                             uint64_t AlignInBits, unsigned Flags,
                             DIArray Elements, unsigned RunTimeLang = 0);
 
-    /// CreateUnionType - Create debugging information entry for an union.
+    /// createUnionType - Create debugging information entry for an union.
     /// @param Scope        Scope in which this union is defined.
     /// @param Name         Union name.
     /// @param File         File where this member is defined.
@@ -193,12 +193,12 @@ namespace llvm {
     /// @param Flags        Flags to encode member attribute, e.g. private
     /// @param Elements     Union elements.
     /// @param RunTimeLang  Optional parameter, Objective-C runtime version.
-    DIType CreateUnionType(DIDescriptor Scope, StringRef Name, DIFile File,
+    DIType createUnionType(DIDescriptor Scope, StringRef Name, DIFile File,
                            unsigned LineNumber, uint64_t SizeInBits,
                            uint64_t AlignInBits, unsigned Flags,
                            DIArray Elements, unsigned RunTimeLang = 0);
 
-    /// CreateTemplateTypeParameter - Create debugging information for template
+    /// createTemplateTypeParameter - Create debugging information for template
     /// type parameter.
     /// @param Scope        Scope in which this type is defined.
     /// @param Name         Type parameter name.
@@ -207,11 +207,11 @@ namespace llvm {
     /// @param LineNo       Line number.
     /// @param ColumnNo     Column Number.
     DITemplateTypeParameter
-    CreateTemplateTypeParameter(DIDescriptor Scope, StringRef Name, DIType Ty,
+    createTemplateTypeParameter(DIDescriptor Scope, StringRef Name, DIType Ty,
                                 MDNode *File = 0, unsigned LineNo = 0,
                                 unsigned ColumnNo = 0);
 
-    /// CreateTemplateValueParameter - Create debugging information for template
+    /// createTemplateValueParameter - Create debugging information for template
     /// value parameter.
     /// @param Scope        Scope in which this type is defined.
     /// @param Name         Value parameter name.
@@ -221,28 +221,28 @@ namespace llvm {
     /// @param LineNo       Line number.
     /// @param ColumnNo     Column Number.
     DITemplateValueParameter
-    CreateTemplateValueParameter(DIDescriptor Scope, StringRef Name, DIType Ty,
+    createTemplateValueParameter(DIDescriptor Scope, StringRef Name, DIType Ty,
                                  uint64_t Value,
                                  MDNode *File = 0, unsigned LineNo = 0,
                                  unsigned ColumnNo = 0);
 
-    /// CreateArrayType - Create debugging information entry for an array.
+    /// createArrayType - Create debugging information entry for an array.
     /// @param Size         Array size.
     /// @param AlignInBits  Alignment.
     /// @param Ty           Element type.
     /// @param Subscripts   Subscripts.
-    DIType CreateArrayType(uint64_t Size, uint64_t AlignInBits, 
+    DIType createArrayType(uint64_t Size, uint64_t AlignInBits, 
                            DIType Ty, DIArray Subscripts);
 
-    /// CreateVectorType - Create debugging information entry for a vector type.
+    /// createVectorType - Create debugging information entry for a vector type.
     /// @param Size         Array size.
     /// @param AlignInBits  Alignment.
     /// @param Ty           Element type.
     /// @param Subscripts   Subscripts.
-    DIType CreateVectorType(uint64_t Size, uint64_t AlignInBits, 
+    DIType createVectorType(uint64_t Size, uint64_t AlignInBits, 
                             DIType Ty, DIArray Subscripts);
 
-    /// CreateEnumerationType - Create debugging information entry for an 
+    /// createEnumerationType - Create debugging information entry for an 
     /// enumeration.
     /// @param Scope        Scope in which this enumeration is defined.
     /// @param Name         Union name.
@@ -251,40 +251,40 @@ namespace llvm {
     /// @param SizeInBits   Member size.
     /// @param AlignInBits  Member alignment.
     /// @param Elements     Enumeration elements.
-    DIType CreateEnumerationType(DIDescriptor Scope, StringRef Name, 
+    DIType createEnumerationType(DIDescriptor Scope, StringRef Name, 
                                  DIFile File, unsigned LineNumber, 
                                  uint64_t SizeInBits, 
                                  uint64_t AlignInBits, DIArray Elements);
 
-    /// CreateSubroutineType - Create subroutine type.
+    /// createSubroutineType - Create subroutine type.
     /// @param File          File in which this subroutine is defined.
     /// @param ParamterTypes An array of subroutine parameter types. This
     ///                      includes return type at 0th index.
-    DIType CreateSubroutineType(DIFile File, DIArray ParameterTypes);
+    DIType createSubroutineType(DIFile File, DIArray ParameterTypes);
 
-    /// CreateArtificialType - Create a new DIType with "artificial" flag set.
-    DIType CreateArtificialType(DIType Ty);
+    /// createArtificialType - Create a new DIType with "artificial" flag set.
+    DIType createArtificialType(DIType Ty);
 
-    /// CreateTemporaryType - Create a temporary forward-declared type.
-    DIType CreateTemporaryType();
-    DIType CreateTemporaryType(DIFile F);
+    /// createTemporaryType - Create a temporary forward-declared type.
+    DIType createTemporaryType();
+    DIType createTemporaryType(DIFile F);
 
-    /// RetainType - Retain DIType in a module even if it is not referenced 
+    /// retainType - Retain DIType in a module even if it is not referenced 
     /// through debug info anchors.
-    void RetainType(DIType T);
+    void retainType(DIType T);
 
-    /// CreateUnspecifiedParameter - Create unspeicified type descriptor
+    /// createUnspecifiedParameter - Create unspeicified type descriptor
     /// for a subroutine type.
-    DIDescriptor CreateUnspecifiedParameter();
+    DIDescriptor createUnspecifiedParameter();
 
-    /// GetOrCreateArray - Get a DIArray, create one if required.
-    DIArray GetOrCreateArray(Value *const *Elements, unsigned NumElements);
+    /// getOrCreateArray - Get a DIArray, create one if required.
+    DIArray getOrCreateArray(Value *const *Elements, unsigned NumElements);
 
-    /// GetOrCreateSubrange - Create a descriptor for a value range.  This
+    /// getOrCreateSubrange - Create a descriptor for a value range.  This
     /// implicitly uniques the values returned.
-    DISubrange GetOrCreateSubrange(int64_t Lo, int64_t Hi);
+    DISubrange getOrCreateSubrange(int64_t Lo, int64_t Hi);
 
-    /// CreateGlobalVariable - Create a new descriptor for the specified global.
+    /// createGlobalVariable - Create a new descriptor for the specified global.
     /// @param Name        Name of the variable.
     /// @param File        File where this variable is defined.
     /// @param LineNo      Line number.
@@ -293,11 +293,11 @@ namespace llvm {
     ///                      externally visible or not.
     /// @param Val         llvm::Value of the variable.
     DIGlobalVariable
-    CreateGlobalVariable(StringRef Name, DIFile File, unsigned LineNo,
+    createGlobalVariable(StringRef Name, DIFile File, unsigned LineNo,
                          DIType Ty, bool isLocalToUnit, llvm::Value *Val);
 
 
-    /// CreateStaticVariable - Create a new descriptor for the specified 
+    /// createStaticVariable - Create a new descriptor for the specified 
     /// variable.
     /// @param Conext      Variable scope. 
     /// @param Name        Name of the variable.
@@ -309,12 +309,12 @@ namespace llvm {
     ///                      externally visible or not.
     /// @param Val         llvm::Value of the variable.
     DIGlobalVariable
-    CreateStaticVariable(DIDescriptor Context, StringRef Name, 
+    createStaticVariable(DIDescriptor Context, StringRef Name, 
                          StringRef LinkageName, DIFile File, unsigned LineNo, 
                          DIType Ty, bool isLocalToUnit, llvm::Value *Val);
 
 
-    /// CreateLocalVariable - Create a new descriptor for the specified 
+    /// createLocalVariable - Create a new descriptor for the specified 
     /// local variable.
     /// @param Tag         Dwarf TAG. Usually DW_TAG_auto_variable or
     ///                    DW_TAG_arg_variable.
@@ -326,14 +326,14 @@ namespace llvm {
     /// @param AlwaysPreserve Boolean. Set to true if debug info for this
     ///                       variable should be preserved in optimized build.
     /// @param Flags          Flags, e.g. artificial variable.
-    DIVariable CreateLocalVariable(unsigned Tag, DIDescriptor Scope,
+    DIVariable createLocalVariable(unsigned Tag, DIDescriptor Scope,
                                    StringRef Name,
                                    DIFile File, unsigned LineNo,
                                    DIType Ty, bool AlwaysPreserve = false,
                                    unsigned Flags = 0);
 
 
-    /// CreateComplexVariable - Create a new descriptor for the specified
+    /// createComplexVariable - Create a new descriptor for the specified
     /// variable which has a complex address expression for its address.
     /// @param Tag         Dwarf TAG. Usually DW_TAG_auto_variable or
     ///                    DW_TAG_arg_variable.
@@ -344,12 +344,12 @@ namespace llvm {
     /// @param Ty          Variable Type
     /// @param Addr        A pointer to a vector of complex address operations.
     /// @param NumAddr     Num of address operations in the vector.
-    DIVariable CreateComplexVariable(unsigned Tag, DIDescriptor Scope,
+    DIVariable createComplexVariable(unsigned Tag, DIDescriptor Scope,
                                      StringRef Name, DIFile F, unsigned LineNo,
                                      DIType Ty, Value *const *Addr,
                                      unsigned NumAddr);
 
-    /// CreateFunction - Create a new descriptor for the specified subprogram.
+    /// createFunction - Create a new descriptor for the specified subprogram.
     /// See comments in DISubprogram for descriptions of these fields.
     /// @param Scope         Function scope.
     /// @param Name          Function name.
@@ -363,7 +363,7 @@ namespace llvm {
     ///                      This flags are used to emit dwarf attributes.
     /// @param isOptimized   True if optimization is ON.
     /// @param Fn            llvm::Function pointer.
-    DISubprogram CreateFunction(DIDescriptor Scope, StringRef Name,
+    DISubprogram createFunction(DIDescriptor Scope, StringRef Name,
                                 StringRef LinkageName,
                                 DIFile File, unsigned LineNo,
                                 DIType Ty, bool isLocalToUnit,
@@ -372,7 +372,7 @@ namespace llvm {
                                 bool isOptimized = false,
                                 Function *Fn = 0);
 
-    /// CreateMethod - Create a new descriptor for the specified C++ method.
+    /// createMethod - Create a new descriptor for the specified C++ method.
     /// See comments in DISubprogram for descriptions of these fields.
     /// @param Scope         Function scope.
     /// @param Name          Function name.
@@ -390,7 +390,7 @@ namespace llvm {
     ///                      This flags are used to emit dwarf attributes.
     /// @param isOptimized   True if optimization is ON.
     /// @param Fn            llvm::Function pointer.
-    DISubprogram CreateMethod(DIDescriptor Scope, StringRef Name,
+    DISubprogram createMethod(DIDescriptor Scope, StringRef Name,
                               StringRef LinkageName,
                               DIFile File, unsigned LineNo,
                               DIType Ty, bool isLocalToUnit,
@@ -401,55 +401,55 @@ namespace llvm {
                               bool isOptimized = false,
                               Function *Fn = 0);
 
-    /// CreateNameSpace - This creates new descriptor for a namespace
+    /// createNameSpace - This creates new descriptor for a namespace
     /// with the specified parent scope.
     /// @param Scope       Namespace scope
     /// @param Name        Name of this namespace
     /// @param File        Source file
     /// @param LineNo      Line number
-    DINameSpace CreateNameSpace(DIDescriptor Scope, StringRef Name,
+    DINameSpace createNameSpace(DIDescriptor Scope, StringRef Name,
                                 DIFile File, unsigned LineNo);
 
 
-    /// CreateLexicalBlock - This creates a descriptor for a lexical block
+    /// createLexicalBlock - This creates a descriptor for a lexical block
     /// with the specified parent context.
     /// @param Scope       Parent lexical scope.
     /// @param File        Source file
     /// @param Line        Line number
     /// @param Col         Column number
-    DILexicalBlock CreateLexicalBlock(DIDescriptor Scope, DIFile File,
+    DILexicalBlock createLexicalBlock(DIDescriptor Scope, DIFile File,
                                       unsigned Line, unsigned Col);
 
-    /// InsertDeclare - Insert a new llvm.dbg.declare intrinsic call.
+    /// insertDeclare - Insert a new llvm.dbg.declare intrinsic call.
     /// @param Storage     llvm::Value of the variable
     /// @param VarInfo     Variable's debug info descriptor.
     /// @param InsertAtEnd Location for the new intrinsic.
-    Instruction *InsertDeclare(llvm::Value *Storage, DIVariable VarInfo,
+    Instruction *insertDeclare(llvm::Value *Storage, DIVariable VarInfo,
                                BasicBlock *InsertAtEnd);
 
-    /// InsertDeclare - Insert a new llvm.dbg.declare intrinsic call.
+    /// insertDeclare - Insert a new llvm.dbg.declare intrinsic call.
     /// @param Storage      llvm::Value of the variable
     /// @param VarInfo      Variable's debug info descriptor.
     /// @param InsertBefore Location for the new intrinsic.
-    Instruction *InsertDeclare(llvm::Value *Storage, DIVariable VarInfo,
+    Instruction *insertDeclare(llvm::Value *Storage, DIVariable VarInfo,
                                Instruction *InsertBefore);
 
 
-    /// InsertDbgValueIntrinsic - Insert a new llvm.dbg.value intrinsic call.
+    /// insertDbgValueIntrinsic - Insert a new llvm.dbg.value intrinsic call.
     /// @param Val          llvm::Value of the variable
     /// @param Offset       Offset
     /// @param VarInfo      Variable's debug info descriptor.
     /// @param InsertAtEnd Location for the new intrinsic.
-    Instruction *InsertDbgValueIntrinsic(llvm::Value *Val, uint64_t Offset,
+    Instruction *insertDbgValueIntrinsic(llvm::Value *Val, uint64_t Offset,
                                          DIVariable VarInfo, 
                                          BasicBlock *InsertAtEnd);
     
-    /// InsertDbgValueIntrinsic - Insert a new llvm.dbg.value intrinsic call.
+    /// insertDbgValueIntrinsic - Insert a new llvm.dbg.value intrinsic call.
     /// @param Val          llvm::Value of the variable
     /// @param Offset       Offset
     /// @param VarInfo      Variable's debug info descriptor.
     /// @param InsertBefore Location for the new intrinsic.
-    Instruction *InsertDbgValueIntrinsic(llvm::Value *Val, uint64_t Offset,
+    Instruction *insertDbgValueIntrinsic(llvm::Value *Val, uint64_t Offset,
                                          DIVariable VarInfo, 
                                          Instruction *InsertBefore);
 

Modified: head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -445,7 +445,8 @@ namespace llvm {
 
     /// EmitVisibility - This emits visibility information about symbol, if
     /// this is suported by the target.
-    void EmitVisibility(MCSymbol *Sym, unsigned Visibility) const;
+    void EmitVisibility(MCSymbol *Sym, unsigned Visibility,
+                        bool IsDefinition = true) const;
 
     void EmitLinkage(unsigned Linkage, MCSymbol *GVSym) const;
 

Modified: head/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -101,13 +101,16 @@ public:
 #endif
 
   struct LiveOutInfo {
-    unsigned NumSignBits;
+    unsigned NumSignBits : 31;
+    bool IsValid : 1;
     APInt KnownOne, KnownZero;
-    LiveOutInfo() : NumSignBits(0), KnownOne(1, 0), KnownZero(1, 0) {}
+    LiveOutInfo() : NumSignBits(0), IsValid(true), KnownOne(1, 0),
+                    KnownZero(1, 0) {}
   };
-  
-  /// LiveOutRegInfo - Information about live out vregs.
-  IndexedMap<LiveOutInfo, VirtReg2IndexFunctor> LiveOutRegInfo;
+
+  /// VisitedBBs - The set of basic blocks visited thus far by instruction
+  /// selection.
+  DenseSet<const BasicBlock*> VisitedBBs;
 
   /// PHINodesToUpdate - A list of phi instructions whose operand list will
   /// be updated after processing the current basic block.
@@ -143,12 +146,62 @@ public:
     return R = CreateRegs(V->getType());
   }
 
+  /// GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the
+  /// register is a PHI destination and the PHI's LiveOutInfo is not valid.
+  const LiveOutInfo *GetLiveOutRegInfo(unsigned Reg) {
+    if (!LiveOutRegInfo.inBounds(Reg))
+      return NULL;
+
+    const LiveOutInfo *LOI = &LiveOutRegInfo[Reg];
+    if (!LOI->IsValid)
+      return NULL;
+
+    return LOI;
+  }
+
+  /// GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the
+  /// register is a PHI destination and the PHI's LiveOutInfo is not valid. If
+  /// the register's LiveOutInfo is for a smaller bit width, it is extended to
+  /// the larger bit width by zero extension. The bit width must be no smaller
+  /// than the LiveOutInfo's existing bit width.
+  const LiveOutInfo *GetLiveOutRegInfo(unsigned Reg, unsigned BitWidth);
+
+  /// AddLiveOutRegInfo - Adds LiveOutInfo for a register.
+  void AddLiveOutRegInfo(unsigned Reg, unsigned NumSignBits,
+                         const APInt &KnownZero, const APInt &KnownOne) {
+    // Only install this information if it tells us something.
+    if (NumSignBits == 1 && KnownZero == 0 && KnownOne == 0)
+      return;
+
+    LiveOutRegInfo.grow(Reg);
+    LiveOutInfo &LOI = LiveOutRegInfo[Reg];
+    LOI.NumSignBits = NumSignBits;
+    LOI.KnownOne = KnownOne;
+    LOI.KnownZero = KnownZero;
+  }
+
+  /// ComputePHILiveOutRegInfo - Compute LiveOutInfo for a PHI's destination
+  /// register based on the LiveOutInfo of its operands.
+  void ComputePHILiveOutRegInfo(const PHINode*);
+
+  /// InvalidatePHILiveOutRegInfo - Invalidates a PHI's LiveOutInfo, to be
+  /// called when a block is visited before all of its predecessors.
+  void InvalidatePHILiveOutRegInfo(const PHINode *PN) {
+    unsigned Reg = ValueMap[PN];
+    LiveOutRegInfo.grow(Reg);
+    LiveOutRegInfo[Reg].IsValid = false;
+  }
+
   /// setByValArgumentFrameIndex - Record frame index for the byval
   /// argument.
   void setByValArgumentFrameIndex(const Argument *A, int FI);
   
   /// getByValArgumentFrameIndex - Get frame index for the byval argument.
   int getByValArgumentFrameIndex(const Argument *A);
+
+private:
+  /// LiveOutRegInfo - Information about live out vregs.
+  IndexedMap<LiveOutInfo, VirtReg2IndexFunctor> LiveOutRegInfo;
 };
 
 /// AddCatchInfo - Extract the personality and type infos from an eh.selector

Modified: head/contrib/llvm/include/llvm/CodeGen/MachineConstantPool.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/MachineConstantPool.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/CodeGen/MachineConstantPool.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -16,6 +16,7 @@
 #ifndef LLVM_CODEGEN_MACHINECONSTANTPOOL_H
 #define LLVM_CODEGEN_MACHINECONSTANTPOOL_H
 
+#include "llvm/ADT/DenseSet.h"
 #include <cassert>
 #include <climits>
 #include <vector>
@@ -130,6 +131,8 @@ class MachineConstantPool {
   const TargetData *TD;   ///< The machine's TargetData.
   unsigned PoolAlignment; ///< The alignment for the pool.
   std::vector<MachineConstantPoolEntry> Constants; ///< The pool of constants.
+  /// MachineConstantPoolValues that use an existing MachineConstantPoolEntry.
+  DenseSet<MachineConstantPoolValue*> MachineCPVsSharingEntries;
 public:
   /// @brief The only constructor.
   explicit MachineConstantPool(const TargetData *td)

Modified: head/contrib/llvm/include/llvm/CodeGen/MachineFunction.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/MachineFunction.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/CodeGen/MachineFunction.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -281,7 +281,7 @@ public:
 
   /// addLiveIn - Add the specified physical register as a live-in value and
   /// create a corresponding virtual register for it.
-  unsigned addLiveIn(unsigned PReg, const TargetRegisterClass *RC, DebugLoc DL);
+  unsigned addLiveIn(unsigned PReg, const TargetRegisterClass *RC);
 
   //===--------------------------------------------------------------------===//
   // BasicBlock accessor functions.

Modified: head/contrib/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/MachineRegisterInfo.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/CodeGen/MachineRegisterInfo.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -17,8 +17,6 @@
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/ADT/BitVector.h"
 #include "llvm/ADT/IndexedMap.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/Support/DebugLoc.h"
 #include <vector>
 
 namespace llvm {
@@ -66,10 +64,7 @@ class MachineRegisterInfo {
   /// stored in the second element.
   std::vector<std::pair<unsigned, unsigned> > LiveIns;
   std::vector<unsigned> LiveOuts;
-
-  /// LiveInLocs - Keep track of location livein registers.
-  DenseMap<unsigned, DebugLoc> LiveInLocs;
-
+  
   MachineRegisterInfo(const MachineRegisterInfo&); // DO NOT IMPLEMENT
   void operator=(const MachineRegisterInfo&);      // DO NOT IMPLEMENT
 public:
@@ -276,12 +271,7 @@ public:
     LiveIns.push_back(std::make_pair(Reg, vreg));
   }
   void addLiveOut(unsigned Reg) { LiveOuts.push_back(Reg); }
-
-  /// addLiveInLoc - Keep track of location info for live in reg.
-  void addLiveInLoc(unsigned VReg, DebugLoc DL) {
-    LiveInLocs[VReg] = DL;
-  }
-
+  
   // Iteration support for live in/out sets.  These sets are kept in sorted
   // order by their register number.
   typedef std::vector<std::pair<unsigned,unsigned> >::const_iterator

Modified: head/contrib/llvm/include/llvm/IntrinsicsXCore.td
==============================================================================
--- head/contrib/llvm/include/llvm/IntrinsicsXCore.td	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/IntrinsicsXCore.td	Sun Feb 27 01:32:10 2011	(r219077)
@@ -33,4 +33,23 @@ let TargetPrefix = "xcore" in {  // All 
                                   [NoCapture<0>]>;
   def int_xcore_setc : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
                                   [NoCapture<0>]>;
+  def int_xcore_inshr : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty, llvm_i32_ty],
+                                  [NoCapture<0>]>;
+  def int_xcore_outshr : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty, llvm_i32_ty],
+                                  [NoCapture<0>]>;
+  def int_xcore_setpt : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
+                                  [NoCapture<0>]>;
+  def int_xcore_getts : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
+                                  [NoCapture<0>]>;
+  def int_xcore_syncr : Intrinsic<[],[llvm_anyptr_ty],
+                                  [NoCapture<0>]>;
+  def int_xcore_settw : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
+                                  [NoCapture<0>]>;
+  def int_xcore_setv : Intrinsic<[],[llvm_anyptr_ty, llvm_ptr_ty],
+                                 [NoCapture<0>]>;
+  def int_xcore_eeu : Intrinsic<[],[llvm_anyptr_ty], [NoCapture<0>]>;
+
+  // Intrinsics for events.
+  def int_xcore_waitevent : Intrinsic<[llvm_ptr_ty],[], [IntrReadMem]>;
+  def int_xcore_clre : Intrinsic<[],[],[]>;
 }

Modified: head/contrib/llvm/include/llvm/MC/MCAsmInfo.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCAsmInfo.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/MC/MCAsmInfo.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -246,6 +246,11 @@ namespace llvm {
     /// declare a symbol as having hidden visibility.
     MCSymbolAttr HiddenVisibilityAttr;       // Defaults to MCSA_Hidden.
 
+    /// HiddenDeclarationVisibilityAttr - This attribute, if not MCSA_Invalid,
+    /// is used to declare an undefined symbol as having hidden visibility.
+    MCSymbolAttr HiddenDeclarationVisibilityAttr;   // Defaults to MCSA_Hidden.
+
+
     /// ProtectedVisibilityAttr - This attribute, if not MCSA_Invalid, is used
     /// to declare a symbol as having protected visibility.
     MCSymbolAttr ProtectedVisibilityAttr;    // Defaults to MCSA_Protected
@@ -425,6 +430,9 @@ namespace llvm {
     const char *getLinkOnceDirective() const { return LinkOnceDirective; }
 
     MCSymbolAttr getHiddenVisibilityAttr() const { return HiddenVisibilityAttr;}
+    MCSymbolAttr getHiddenDeclarationVisibilityAttr() const {
+      return HiddenDeclarationVisibilityAttr;
+    }
     MCSymbolAttr getProtectedVisibilityAttr() const {
       return ProtectedVisibilityAttr;
     }

Modified: head/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -38,6 +38,8 @@ protected:
     return (Obj->*Handler)(Directive, DirectiveLoc);
   }
 
+  bool BracketExpressionsSupported;
+
 public:
   virtual ~MCAsmParserExtension();
 
@@ -68,6 +70,8 @@ public:
 
   const AsmToken &getTok() { return getParser().getTok(); }
 
+  bool HasBracketExpressions() const { return BracketExpressionsSupported; }
+
   /// @}
 };
 

Modified: head/contrib/llvm/include/llvm/MC/MCStreamer.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCStreamer.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/MC/MCStreamer.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -57,13 +57,10 @@ namespace llvm {
     MCDwarfFrameInfo *getCurrentFrameInfo();
     void EnsureValidFrame();
 
-    /// CurSectionStack - This is stack of CurSection values saved by
-    /// PushSection.
-    SmallVector<const MCSection *, 4> CurSectionStack;
-
-    /// PrevSectionStack - This is stack of PrevSection values saved by
-    /// PushSection.
-    SmallVector<const MCSection *, 4> PrevSectionStack;
+    /// SectionStack - This is stack of current and previous section
+    /// values saved by PushSection.
+    SmallVector<std::pair<const MCSection *,
+                const MCSection *>, 4> SectionStack;
 
   protected:
     MCStreamer(MCContext &Ctx);
@@ -117,16 +114,16 @@ namespace llvm {
     /// getCurrentSection - Return the current section that the streamer is
     /// emitting code to.
     const MCSection *getCurrentSection() const {
-      if (!CurSectionStack.empty())
-        return CurSectionStack.back();
+      if (!SectionStack.empty())
+        return SectionStack.back().first;
       return NULL;
     }
 
     /// getPreviousSection - Return the previous section that the streamer is
     /// emitting code to.
     const MCSection *getPreviousSection() const {
-      if (!PrevSectionStack.empty())
-        return PrevSectionStack.back();
+      if (!SectionStack.empty())
+        return SectionStack.back().second;
       return NULL;
     }
 
@@ -139,8 +136,8 @@ namespace llvm {
     /// pushSection - Save the current and previous section on the
     /// section stack.
     void PushSection() {
-      PrevSectionStack.push_back(getPreviousSection());
-      CurSectionStack.push_back(getCurrentSection());
+      SectionStack.push_back(std::make_pair(getCurrentSection(),
+                                            getPreviousSection()));
     }
 
     /// popSection - Restore the current and previous section from
@@ -148,12 +145,10 @@ namespace llvm {
     ///
     /// Returns false if the stack was empty.
     bool PopSection() {
-      if (PrevSectionStack.size() <= 1)
+      if (SectionStack.size() <= 1)
         return false;
-      assert(CurSectionStack.size() > 1);
-      PrevSectionStack.pop_back();
-      const MCSection *oldSection = CurSectionStack.pop_back_val();
-      const MCSection *curSection = CurSectionStack.back();
+      const MCSection *oldSection = SectionStack.pop_back_val().first;
+      const MCSection *curSection = SectionStack.back().first;
 
       if (oldSection != curSection)
         ChangeSection(curSection);
@@ -166,10 +161,10 @@ namespace llvm {
     /// This corresponds to assembler directives like .section, .text, etc.
     void SwitchSection(const MCSection *Section) {
       assert(Section && "Cannot switch to a null section!");
-      const MCSection *curSection = CurSectionStack.back();
-      PrevSectionStack.back() = curSection;
+      const MCSection *curSection = SectionStack.back().first;
+      SectionStack.back().second = curSection;
       if (Section != curSection) {
-        CurSectionStack.back() = Section;
+        SectionStack.back().first = Section;
         ChangeSection(Section);
       }
     }

Modified: head/contrib/llvm/include/llvm/Support/NoFolder.h
==============================================================================
--- head/contrib/llvm/include/llvm/Support/NoFolder.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/Support/NoFolder.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -38,8 +38,12 @@ public:
   // Binary Operators
   //===--------------------------------------------------------------------===//
 
-  Instruction *CreateAdd(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateAdd(LHS, RHS);
+  Instruction *CreateAdd(Constant *LHS, Constant *RHS,
+                         bool HasNUW = false, bool HasNSW = false) const {
+    BinaryOperator *BO = BinaryOperator::CreateAdd(LHS, RHS);
+    if (HasNUW) BO->setHasNoUnsignedWrap();
+    if (HasNSW) BO->setHasNoSignedWrap();
+    return BO;
   }
   Instruction *CreateNSWAdd(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateNSWAdd(LHS, RHS);
@@ -50,8 +54,12 @@ public:
   Instruction *CreateFAdd(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateFAdd(LHS, RHS);
   }
-  Instruction *CreateSub(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateSub(LHS, RHS);
+  Instruction *CreateSub(Constant *LHS, Constant *RHS,
+                         bool HasNUW = false, bool HasNSW = false) const {
+    BinaryOperator *BO = BinaryOperator::CreateSub(LHS, RHS);
+    if (HasNUW) BO->setHasNoUnsignedWrap();
+    if (HasNSW) BO->setHasNoSignedWrap();
+    return BO;
   }
   Instruction *CreateNSWSub(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateNSWSub(LHS, RHS);
@@ -62,8 +70,12 @@ public:
   Instruction *CreateFSub(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateFSub(LHS, RHS);
   }
-  Instruction *CreateMul(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateMul(LHS, RHS);
+  Instruction *CreateMul(Constant *LHS, Constant *RHS,
+                         bool HasNUW = false, bool HasNSW = false) const {
+    BinaryOperator *BO = BinaryOperator::CreateMul(LHS, RHS);
+    if (HasNUW) BO->setHasNoUnsignedWrap();
+    if (HasNSW) BO->setHasNoSignedWrap();
+    return BO;
   }
   Instruction *CreateNSWMul(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateNSWMul(LHS, RHS);
@@ -74,14 +86,20 @@ public:
   Instruction *CreateFMul(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateFMul(LHS, RHS);
   }
-  Instruction *CreateUDiv(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateUDiv(LHS, RHS);
+  Instruction *CreateUDiv(Constant *LHS, Constant *RHS,
+                          bool isExact = false) const {
+    if (!isExact)
+      return BinaryOperator::CreateUDiv(LHS, RHS);
+    return BinaryOperator::CreateExactUDiv(LHS, RHS);
   }
   Instruction *CreateExactUDiv(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateExactUDiv(LHS, RHS);
   }
-  Instruction *CreateSDiv(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateSDiv(LHS, RHS);
+  Instruction *CreateSDiv(Constant *LHS, Constant *RHS,
+                          bool isExact = false) const {
+    if (!isExact)
+      return BinaryOperator::CreateSDiv(LHS, RHS);
+    return BinaryOperator::CreateExactSDiv(LHS, RHS);
   }
   Instruction *CreateExactSDiv(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateExactSDiv(LHS, RHS);
@@ -98,14 +116,24 @@ public:
   Instruction *CreateFRem(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateFRem(LHS, RHS);
   }
-  Instruction *CreateShl(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateShl(LHS, RHS);
-  }
-  Instruction *CreateLShr(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateLShr(LHS, RHS);
-  }
-  Instruction *CreateAShr(Constant *LHS, Constant *RHS) const {
-    return BinaryOperator::CreateAShr(LHS, RHS);
+  Instruction *CreateShl(Constant *LHS, Constant *RHS, bool HasNUW = false,
+                         bool HasNSW = false) const {
+    BinaryOperator *BO = BinaryOperator::CreateShl(LHS, RHS);
+    if (HasNUW) BO->setHasNoUnsignedWrap();
+    if (HasNSW) BO->setHasNoSignedWrap();
+    return BO;
+  }
+  Instruction *CreateLShr(Constant *LHS, Constant *RHS,
+                          bool isExact = false) const {
+    if (!isExact)
+      return BinaryOperator::CreateLShr(LHS, RHS);
+    return BinaryOperator::CreateExactLShr(LHS, RHS);
+  }
+  Instruction *CreateAShr(Constant *LHS, Constant *RHS,
+                          bool isExact = false) const {
+    if (!isExact)
+      return BinaryOperator::CreateAShr(LHS, RHS);
+    return BinaryOperator::CreateExactAShr(LHS, RHS);
   }
   Instruction *CreateAnd(Constant *LHS, Constant *RHS) const {
     return BinaryOperator::CreateAnd(LHS, RHS);
@@ -126,8 +154,12 @@ public:
   // Unary Operators
   //===--------------------------------------------------------------------===//
 
-  Instruction *CreateNeg(Constant *C) const {
-    return BinaryOperator::CreateNeg(C);
+  Instruction *CreateNeg(Constant *C,
+                         bool HasNUW = false, bool HasNSW = false) const {
+    BinaryOperator *BO = BinaryOperator::CreateNeg(C);
+    if (HasNUW) BO->setHasNoUnsignedWrap();
+    if (HasNSW) BO->setHasNoSignedWrap();
+    return BO;
   }
   Instruction *CreateNSWNeg(Constant *C) const {
     return BinaryOperator::CreateNSWNeg(C);

Modified: head/contrib/llvm/include/llvm/Support/PathV1.h
==============================================================================
--- head/contrib/llvm/include/llvm/Support/PathV1.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/Support/PathV1.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -312,9 +312,9 @@ namespace sys {
       /// This function determines if the path name is absolute, as opposed to
       /// relative.
       /// @brief Determine if the path is absolute.
-//FIXME:      LLVM_ATTRIBUTE_DEPRECATED(
-      bool isAbsolute() const;
-//FIXME:      LLVMV_PATH_DEPRECATED_MSG(path::is_absolute));
+      LLVM_ATTRIBUTE_DEPRECATED(
+        bool isAbsolute() const,
+        LLVM_PATH_DEPRECATED_MSG(path::is_absolute));
 
       /// This function determines if the path name is absolute, as opposed to
       /// relative.

Modified: head/contrib/llvm/include/llvm/Target/TargetLowering.h
==============================================================================
--- head/contrib/llvm/include/llvm/Target/TargetLowering.h	Sun Feb 27 00:02:48 2011	(r219076)
+++ head/contrib/llvm/include/llvm/Target/TargetLowering.h	Sun Feb 27 01:32:10 2011	(r219077)
@@ -111,7 +111,7 @@ public:
   bool isBigEndian() const { return !IsLittleEndian; }
   bool isLittleEndian() const { return IsLittleEndian; }
   MVT getPointerTy() const { return PointerTy; }
-  MVT getShiftAmountTy() const { return ShiftAmountTy; }
+  virtual MVT getShiftAmountTy(EVT LHSTy) const;
 
   /// isSelectExpensive - Return true if the select operation is expensive for
   /// this target.
@@ -210,7 +210,7 @@ public:
     /// ValueTypeActions - For each value type, keep a LegalizeAction enum
     /// that indicates how instruction selection should deal with the type.
     uint8_t ValueTypeActions[MVT::LAST_VALUETYPE];
-    
+
     LegalizeAction getExtendedTypeAction(EVT VT) const {
       // Handle non-vector integers.
       if (!VT.isVector()) {
@@ -221,42 +221,56 @@ public:
           return Promote;
         return Expand;
       }
-      
-      // If this is a type smaller than a legal vector type, promote to that
-      // type, e.g. <2 x float> -> <4 x float>.
-      if (VT.getVectorElementType().isSimple() &&
-          VT.getVectorNumElements() != 1) {
-        MVT EltType = VT.getVectorElementType().getSimpleVT();
-        unsigned NumElts = VT.getVectorNumElements();
-        while (1) {
-          // Round up to the nearest power of 2.
-          NumElts = (unsigned)NextPowerOf2(NumElts);
-          
-          MVT LargerVector = MVT::getVectorVT(EltType, NumElts);
-          if (LargerVector == MVT()) break;
-          
-          // If this the larger type is legal, promote to it.
-          if (getTypeAction(LargerVector) == Legal) return Promote;
-        }
+
+      // Vectors with only one element are always scalarized.
+      if (VT.getVectorNumElements() == 1)
+        return Expand;
+
+      // Vectors with a number of elements that is not a power of two are always
+      // widened, for example <3 x float> -> <4 x float>.
+      if (!VT.isPow2VectorType())
+        return Promote;
+
+      // Vectors with a crazy element type are always expanded, for example
+      // <4 x i2> is expanded into two vectors of type <2 x i2>.
+      if (!VT.getVectorElementType().isSimple())
+        return Expand;
+
+      // If this type is smaller than a legal vector type then widen it,
+      // otherwise expand it.  E.g. <2 x float> -> <4 x float>.
+      MVT EltType = VT.getVectorElementType().getSimpleVT();
+      unsigned NumElts = VT.getVectorNumElements();
+      while (1) {
+        // Round up to the next power of 2.
+        NumElts = (unsigned)NextPowerOf2(NumElts);
+
+        // If there is no simple vector type with this many elements then there
+        // cannot be a larger legal vector type.  Note that this assumes that
+        // there are no skipped intermediate vector types in the simple types.
+        MVT LargerVector = MVT::getVectorVT(EltType, NumElts);
+        if (LargerVector == MVT())
+          return Expand;
+
+        // If this type is legal then widen the vector.

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102270132.p1R1WBrV016862>