Skip to content
  1. Jun 26, 2012
    • Fariborz Jahanian's avatar
      block literal irgen: several improvements on naming block · 6362803c
      Fariborz Jahanian authored
      literal helper functions. All helper functions (global
      and locals) use block_invoke as their prefix. Local literal
      helper names are prefixed by their enclosing mangled function
      names. Blocks in non-local initializers (e.g. a global variable 
      or a C++11 field) are prefixed by their mangled variable name. 
      The descriminator number added to end of the name starts off 
      with blank (for first block) and _<N> (for the N+2-th block).
      
      llvm-svn: 159206
      6362803c
  2. Jun 24, 2012
  3. Jun 23, 2012
    • Hans Wennborg's avatar
      Support the tls_model attribute (PR9788) · d3b01bc7
      Hans Wennborg authored
      This adds support for the tls_model attribute. This allows the user to
      choose a TLS model that is better than what LLVM would select by
      default. For example, a variable might be declared as:
      
        __thread int x __attribute__((tls_model("initial-exec")));
      
      if it will not be used in a shared library that is dlopen'ed.
      
      This depends on LLVM r159077.
      
      llvm-svn: 159078
      d3b01bc7
  4. Jun 20, 2012
    • John McCall's avatar
      Restructure how the driver communicates information about the · 5fb5df9c
      John McCall authored
      target Objective-C runtime down to the frontend:  break this
      down into a single target runtime kind and version, and compute
      all the relevant information from that.  This makes it
      relatively painless to add support for new runtimes to the
      compiler.  Make the new -cc1 flag, -fobjc-runtime=blah-x.y.z,
      available at the driver level as a better and more general
      alternative to -fgnu-runtime and -fnext-runtime.  This new
      concept of an Objective-C runtime also encompasses what we
      were previously separating out as the "Objective-C ABI", so
      fragile vs. non-fragile runtimes are now really modelled as
      different kinds of runtime, paving the way for better overall
      differentiation.
      
      As a sort of special case, continue to accept the -cc1 flag
      -fobjc-runtime-has-weak, as a sop to PLCompatibilityWeak.
      
      I won't go so far as to say "no functionality change", even
      ignoring the new driver flag, but subtle changes in driver
      semantics are almost certainly not intended.
      
      llvm-svn: 158793
      5fb5df9c
  5. Jun 18, 2012
  6. Jun 10, 2012
  7. Jun 06, 2012
  8. May 28, 2012
  9. May 20, 2012
  10. May 12, 2012
  11. May 04, 2012
    • Alexey Samsonov's avatar
      This patch adds a new Clang compiler flag "-gline-tables-only". · 74a3868d
      Alexey Samsonov authored
      It reduces the amount of emitted debug information:
      1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
      DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
      2) .debug_str contains only function names.
      3) No debug data for types/namespaces/variables is emitted.
      4) The data in .debug_line is enough to produce valid stack traces with
      function names and line numbers.
      
      Reviewed by Eric Christopher.
      
      llvm-svn: 156160
      74a3868d
  12. Apr 30, 2012
    • David Blaikie's avatar
      Remove the ref/value inconsistency in filter_decl_iterator. · 2d7c57ec
      David Blaikie authored
      filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
      making it difficult to generalize this filtering behavior into a reusable
      library of any kind.
      
      This change errs on the side of value, making op-> return T* and op* return
      T&.
      
      (reviewed by Richard Smith)
      
      llvm-svn: 155808
      2d7c57ec
  13. Apr 27, 2012
  14. Apr 24, 2012
  15. Apr 17, 2012
  16. Apr 11, 2012
  17. Mar 30, 2012
    • Chandler Carruth's avatar
      Revert r153723, and its follow-ups r153728 and r153733. · 84537952
      Chandler Carruth authored
      These patches cause us to miscompile and/or reject code with static
      function-local variables in an extern-C context. Previously, we were
      papering over this as long as the variables are within the same
      translation unit, and had not seen any failures in the wild. We still
      need a proper fix, which involves mangling static locals inside of an
      extern-C block (as GCC already does), but this patch causes pretty
      widespread regressions. Firefox, and many other applications no longer
      build.
      
      Lots of test cases have been posted to the list in response to this
      commit, so there should be no problem reproducing the issues.
      
      llvm-svn: 153768
      84537952
    • John McCall's avatar
      Do the static-locals thing properly in the face of unions and · 87590e60
      John McCall authored
      other things which might mess with the variable's type.
      
      llvm-svn: 153733
      87590e60
    • Bill Wendling's avatar
      The UTF16 string referenced by a CFString should go into the __TEXT,__ustring · 82b87f19
      Bill Wendling authored
      section. A 'normal' string will go into the __TEXT,__const section, but this
      isn't good for UTF16 strings. The __ustring section allows for coalescing, among
      other niceties (such as allowing the linker to easily split up strings).
      
      Instead of outputting the UTF16 string as a series of bytes, output it as a
      series of shorts. The back-end will then nicely place the UTF16 string into the
      correct section, because it's a mensch.
      <rdar://problem/10655949>
      
      llvm-svn: 153710
      82b87f19
    • Bill Wendling's avatar
      Fix whitespace. · 07635cc7
      Bill Wendling authored
      llvm-svn: 153698
      07635cc7
  18. Mar 26, 2012
  19. Mar 24, 2012
  20. Mar 11, 2012
  21. Mar 08, 2012
  22. Mar 05, 2012
    • Rafael Espindola's avatar
      Fix a small difference in sema and codegen views of what needs to be output. · 189fa748
      Rafael Espindola authored
      In the included testcase, soma thinks that we already have a definition after we
      see the out of line decl. Codegen puts it in a deferred list, to be output if
      a use is seen. This would break when we saw an explicit template instantiation
      definition, since codegen would not be notified.
      
      This patch adds a method to the consumer interface so that soma can notify
      codegen that this decl is now required.
      
      llvm-svn: 152024
      189fa748
  23. Mar 03, 2012
  24. Feb 28, 2012
  25. Feb 25, 2012
    • Sebastian Redl's avatar
      CodeGen support for global variables of type std::initializer_list<X>. · 4a7eab25
      Sebastian Redl authored
      This emits a backing array with internal linkage and fills it with data,
      then has the initializer_list point at the array. Dynamic initialization
      and global destructors are correctly supported.
      
      What doesn't work is nested initializer_lists. I have no idea how to
      get them to work, either. However, these should be very rare, and so
      I'll just call it a known bug and declare generalized initializers
      DONE!
      
      llvm-svn: 151457
      4a7eab25
  26. Feb 18, 2012
  27. Feb 17, 2012
    • Richard Smith's avatar
      Bug fix: do not emit static const local variables with mutable members · e070fd2a
      Richard Smith authored
      as constants.
      
      Refactor and simplify all the separate checks for whether a type can be
      emitted as a constant.
      
      llvm-svn: 150793
      e070fd2a
    • Richard Smith's avatar
      When performing IRGen on a global, emit it as a constant if: · ae819500
      Richard Smith authored
       1) It has a const-qualified type, and
       2) It has no mutable members, and
       3) It has no dynamic initialization, and
       4) It has trivial destruction.
      Remove the unnecessary requirement that the type be POD. This allows us to
      mark all constexpr objects with no mutable members as 'constant'.
      
      llvm-svn: 150792
      ae819500
    • John McCall's avatar
      Whether an argument is required (in contrast with being an · a729c62b
      John McCall authored
      optional argument passed through the variadic ellipsis)
      potentially affects how we need to lower it.  Propagate
      this information down to the various getFunctionInfo(...)
      overloads on CodeGenTypes.  Furthermore, rename those
      overloads to clarify their distinct purposes, and make
      sure we're calling the right one in the right place.
      This has a nice side-effect of making it easier to construct
      a function type, since the 'variadic' bit is no longer
      separable.
      
      This shouldn't really change anything for our existing
      platforms, with one minor exception --- we should now call
      variadic ObjC methods with the ... in the "right place"
      (see the test case), which I guess matters for anyone
      running GNUStep on MIPS.  Mostly it's just a substantial
      clean-up.
      
      llvm-svn: 150788
      a729c62b
  28. Feb 16, 2012
  29. Feb 13, 2012
    • Richard Smith's avatar
      Deal with a horrible C++11 special case. If a non-literal type has a constexpr · 6331c408
      Richard Smith authored
      constructor, and that constructor is used to initialize an object of static
      storage duration such that all members and bases are initialized by constant
      expressions, constant initialization is performed. In this case, the object
      can still have a non-trivial destructor, and if it does, we must emit a dynamic
      initializer which performs no initialization and instead simply registers that
      destructor.
      
      llvm-svn: 150419
      6331c408
  30. Feb 07, 2012
  31. Feb 06, 2012
  32. Feb 05, 2012
Loading