Skip to content
  1. Feb 12, 2009
    • Mike Stump's avatar
      3f6c631e
    • Chris Lattner's avatar
      for now, disable all debug info generation at -O1 and above. This mirrors · f4174b0c
      Chris Lattner authored
      similar logic in llvm-gcc and will hopefully be fixed soon.
      
      llvm-svn: 64349
      f4174b0c
    • Chris Lattner's avatar
      search and replaceo? · 882018b8
      Chris Lattner authored
      llvm-svn: 64348
      882018b8
    • Douglas Gregor's avatar
      Add test for overloading with _Complex in C · 4d0bd8bf
      Douglas Gregor authored
      llvm-svn: 64347
      4d0bd8bf
    • Anders Carlsson's avatar
      Add support for generating block call expressions. · 2437cbfa
      Anders Carlsson authored
      llvm-svn: 64346
      2437cbfa
    • Ted Kremenek's avatar
      Add lightweight shim "clang::StatSysCallCache" that caches 'stat' system calls · c8b740ea
      Ted Kremenek authored
      for use by FileManager. FileManager now takes a StatSysCallCache* in its
      constructor (which defaults to NULL). This will be used for evaluating whether
      or not caching 'stat' system calls in PTH is a performance win. This shim adds
      no observable performance impact in the case where the 'StatSysCallCache*' is
      null.
      
      llvm-svn: 64345
      c8b740ea
    • Douglas Gregor's avatar
      Expand the definition of a complex promotion to include complex -> · 6752502b
      Douglas Gregor authored
      complex conversions where the conversion between the real types is an
      integral promotion. This is how G++ handles complex promotions for its
      complex integer extension.
      
      llvm-svn: 64344
      6752502b
    • Douglas Gregor's avatar
      Introduce _Complex conversions into the function overloading · 78ca74d8
      Douglas Gregor authored
      system. Since C99 doesn't have overloading and C++ doesn't have
      _Complex, there is no specification for    this. Here's what I think
      makes sense.
      
      Complex conversions come in several flavors:
      
        - Complex promotions:  a complex -> complex   conversion where the
          underlying real-type conversion is a floating-point promotion. GCC
          seems to call this a promotion, EDG does something else. This is
          given "promotion" rank for determining the best viable function.
        - Complex conversions: a complex -> complex conversion that is
          not a complex promotion. This is given "conversion" rank for
          determining the best viable   function.
        - Complex-real conversions: a real -> complex or complex -> real
          conversion. This is given "conversion" rank for determining the
          best viable function.
      
      These rules are the same for C99 (when using the "overloadable"
      attribute) and C++. However, there is one difference in the handling
      of floating-point promotions: in C99, float -> long double and double
      -> long double are considered promotions (so we give them "promotion" 
      rank), while C++ considers these conversions ("conversion" rank).
      
      llvm-svn: 64343
      78ca74d8
    • Bill Wendling's avatar
      f6d609a2
    • Fariborz Jahanian's avatar
      Last @encode'ing fix for objc2's nonfragile abi. · 77b6b5d6
      Fariborz Jahanian authored
      All relevant dejagnu enocding tests pass in this mode.
      
      llvm-svn: 64341
      77b6b5d6
    • Evan Cheng's avatar
      6f6abfd9
    • Evan Cheng's avatar
      Remove a bogus assertion. It's possible a live-in available value is used by a... · eb5ec4a0
      Evan Cheng authored
      Remove a bogus assertion. It's possible a live-in available value is used by a previous instruction.
      
      llvm-svn: 64339
      eb5ec4a0
    • Ted Kremenek's avatar
      4c1d41f2
    • Mike Stump's avatar
      Fix comment. · c89c8e32
      Mike Stump authored
      llvm-svn: 64337
      c89c8e32
    • Douglas Gregor's avatar
      Initial implementation of function overloading in C. · 4e5cbdcb
      Douglas Gregor authored
      This commit adds a new attribute, "overloadable", that enables C++
      function overloading in C. The attribute can only be added to function
      declarations, e.g.,
      
        int *f(int) __attribute__((overloadable));
      
      If the "overloadable" attribute exists on a function with a given
      name, *all* functions with that name (and in that scope) must have the
      "overloadable" attribute. Sets of overloaded functions with the
      "overloadable" attribute then follow the normal C++ rules for
      overloaded functions, e.g., overloads must have different
      parameter-type-lists from each other.
      
      When calling an overloaded function in C, we follow the same
      overloading rules as C++, with three extensions to the set of standard
      conversions:
      
        - A value of a given struct or union type T can be converted to the
          type T. This is just the identity conversion. (In C++, this would
          go through a copy constructor).
        - A value of pointer type T* can be converted to a value of type U*
          if T and U are compatible types. This conversion has Conversion
          rank (it's considered a pointer conversion in C).
        - A value of type T can be converted to a value of type U if T and U
          are compatible (and are not both pointer types). This conversion
          has Conversion rank (it's considered to be a new kind of
          conversion unique to C, a "compatible" conversion).
      
      Known defects (and, therefore, next steps):
        1) The standard-conversion handling does not understand conversions
        involving _Complex or vector extensions, so it is likely to get
        these wrong. We need to add these conversions.
        2) All overloadable functions with the same name will have the same
        linkage name, which means we'll get a collision in the linker (if
        not sooner). We'll need to mangle the names of these functions.
      
      llvm-svn: 64336
      4e5cbdcb
  2. Feb 11, 2009
    • Nate Begeman's avatar
      the two non-mask arguments to a shufflevector must be the same width, but they... · 318aea93
      Nate Begeman authored
      the two non-mask arguments to a shufflevector must be the same width, but they do not have to be the same
      width as the result value.
      
      llvm-svn: 64335
      318aea93
    • Fariborz Jahanian's avatar
      Patch to fix encoding in 64bit abi. With this patch · 1f0a9ebf
      Fariborz Jahanian authored
      all but one dejagnu encoding tests for darwin
      pass in nonfragile abi mode.
      
      llvm-svn: 64334
      1f0a9ebf
    • Daniel Dunbar's avatar
      Use EmitVAListRef instead of EmitLValue directly to handle array decay · e9fcadd2
      Daniel Dunbar authored
      case on x86_64.
      
      llvm-svn: 64333
      e9fcadd2
    • Dale Johannesen's avatar
      Edit description of floating point constants to · cd4a301a
      Dale Johannesen authored
      reflect reality.  Acknowledgements to John Clements
      for prodding me into this.
      
      llvm-svn: 64332
      cd4a301a
    • Gabor Greif's avatar
      Fill in a glaring omission in derived User classes, namely · e3069ab6
      Gabor Greif authored
      add efficient versions of op_begin and op_end. Up to now always those from User have been
      called, which in most cases follow an indirection (OperandList) even if the exact Instruction 
      type is known.
      
      llvm-svn: 64331
      e3069ab6
    • Steve Naroff's avatar
      Remove some non-ascii characters. Thanks Gabor. · 22cc8409
      Steve Naroff authored
      llvm-svn: 64330
      22cc8409
    • Bill Wendling's avatar
      Propagate DebugLoc info for spiller call-backs. · 27b508db
      Bill Wendling authored
      llvm-svn: 64329
      27b508db
    • Dan Gohman's avatar
      Fix a comment. · 45889d24
      Dan Gohman authored
      llvm-svn: 64328
      45889d24
    • Dan Gohman's avatar
      Don't use special heuristics for nodes with no data predecessors · 6571ef35
      Dan Gohman authored
      unless they actually have data successors, and likewise for nodes
      with no data successors unless they actually have data precessors.
      
      llvm-svn: 64327
      6571ef35
    • Ted Kremenek's avatar
      PTH: Replace string identifier to persistent ID lookup with a hashtable. This is · e5554deb
      Ted Kremenek authored
      actually *slightly* slower than the binary search. Since this is algorithmically
      better, further performance tuning should be able to make this faster.
      
      llvm-svn: 64326
      e5554deb
    • Daniel Dunbar's avatar
      Support IRgen of va_arg of structure as l-value. · 8d9dc4a6
      Daniel Dunbar authored
      llvm-svn: 64325
      8d9dc4a6
    • Ted Kremenek's avatar
      Add FoldingSet profile method for bools. Patch by Ben Laurie! · 88ceac46
      Ted Kremenek authored
      llvm-svn: 64324
      88ceac46
    • Fariborz Jahanian's avatar
      ir-gen for objc's @selector expression in nonfragile abi mode. · 74b7722c
      Fariborz Jahanian authored
      llvm-svn: 64323
      74b7722c
    • Daniel Dunbar's avatar
      Update to match space changes in .ll · df8bc9fc
      Daniel Dunbar authored
      llvm-svn: 64322
      df8bc9fc
    • Douglas Gregor's avatar
      Appease the language lawyers · 5bd22da9
      Douglas Gregor authored
      llvm-svn: 64321
      5bd22da9
    • Steve Naroff's avatar
      Fix <rdar://problem/6505139> [clang on growl]: need to allow unnamed selectors... · 7a54c0d7
      Steve Naroff authored
      Fix <rdar://problem/6505139> [clang on growl]: need to allow unnamed selectors as the first argument
      
      llvm-svn: 64320
      7a54c0d7
    • Dan Gohman's avatar
      Delete the heuristic for non-livein CopyFromReg nodes. Non-liveinness · 298a2946
      Dan Gohman authored
      is determined by whether the node has a Flag operand. However, if the
      node does have a Flag operand, it will be glued to its register's
      def, so the heuristic would end up spuriously applying to whatever
      node is the def.
      
      llvm-svn: 64319
      298a2946
    • Steve Naroff's avatar
      5ee2c02a
    • Douglas Gregor's avatar
      Finished semantic analysis of non-type template arguments, to check · ccb07762
      Douglas Gregor authored
      for non-external names whose address becomes the template
      argument. This completes C++ [temp.arg.nontype]p1.
      
      Note that our interpretation of C++ [temp.arg.nontype]p1b3 differs
      from EDG's interpretation (we're stricter, and GCC agrees with
      us). They're opening a core issue about the matter.
      
      llvm-svn: 64317
      ccb07762
    • Dan Gohman's avatar
      Don't try to set an EFLAGS operand to dead if no instruction was created. · 27f85854
      Dan Gohman authored
      This fixes a bug introduced by r61215.
      
      llvm-svn: 64316
      27f85854
    • Dale Johannesen's avatar
      Make a transformation added in 63266 a bit less aggressive. · cc5fc44d
      Dale Johannesen authored
      It was transforming (x&y)==y to (x&y)!=0 in the case where
      y is variable and known to have at most one bit set (e.g. z&1).
      This is not correct; the expressions are not equivalent when y==0.
      I believe this patch salvages what can be salvaged, including
      all the cases in bt.ll.  Dan, please review.
      Fixes gcc.c-torture/execute/20040709-[12].c
      
      llvm-svn: 64314
      cc5fc44d
    • Mike Stump's avatar
      Avoid bogus warning. · 761b90b8
      Mike Stump authored
      llvm-svn: 64313
      761b90b8
    • Douglas Gregor's avatar
      Reverted r64307. Moved hasSameType and hasSameUnqualifiedType from · 1515f76a
      Douglas Gregor authored
      Sema to ASTContext.
      
      llvm-svn: 64312
      1515f76a
    • Bill Wendling's avatar
      Revert r64300 and r64301. These were causing the following errors respectively: · 5f14a013
      Bill Wendling authored
      During llvm-gcc bootstrap:
      
      Undefined symbols:
        "llvm::FPPassManager::doFinalization(llvm::Module&)", referenced from:
            (anonymous namespace)::CGPassManager::doFinalization(llvm::CallGraph&, llvm::Module&)
              in libLLVMipa.a(CallGraphSCCPass.o)
        "llvm::FPPassManager::doInitialization(llvm::Module&)", referenced from:
            (anonymous namespace)::CGPassManager::doInitialization(llvm::CallGraph&, llvm::Module&)
              in libLLVMipa.a(CallGraphSCCPass.o)
      ld: symbol(s) not found
      collect2: ld returned 1 exit status
      make[3]: *** [/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/obj-llvm/Release/bin/opt] Error 1
      
      During an LLVM release build:
      
      /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-register-desc -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenRegisterInfo.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
      llvm[3]: Building X86.td instruction names with tblgen
      /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-instr-enums -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenInstrNames.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
      llvm[3]: Building X86.td instruction information with tblgen
      /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-instr-desc -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenInstrInfo.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
      llvm[3]: Building X86.td assembly writer with tblgen
      /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-asm-writer -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenAsmWriter.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
      llvm[3]: Compiling InstructionCombining.cpp for Release build 
      if /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~dst/Developer/usr/bin/llvm-g++-4.2 -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Transforms/Scalar  -D_DEBUG  -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -O3  -fno-exceptions  -Woverloaded-virtual -pedantic -Wall -W -Wwrite-strings -Wno-long-long -Wunused -Wno-unused-parameter  -fstrict-aliasing -Wstrict-aliasing -c -MMD -MP -MF "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d.tmp" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.lo" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.o" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d" /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Transforms/Scalar/InstructionCombining.cpp -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.o ; \
                 then /bin/mv -f "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d.tmp" "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Trans
      
      llvm-svn: 64311
      5f14a013
    • Douglas Gregor's avatar
      Allow the use of default template arguments when forming a class · f8f86833
      Douglas Gregor authored
      template specialization (e.g., std::vector<int> would now be
      well-formed, since it relies on a default argument for the Allocator
      template parameter). 
      
      This is much less interesting than one might expect, since (1) we're
      not actually using the default arguments for anything important, such
      as naming an actual Decl, and (2) we'll often need to instantiate the
      default arguments to check their well-formedness. The real fun will
      come later.
      
      llvm-svn: 64310
      f8f86833
Loading