Skip to content
  1. Apr 11, 2012
  2. Apr 10, 2012
  3. Apr 09, 2012
  4. Apr 08, 2012
    • Chandler Carruth's avatar
      Wire up -fpie and -fPIE to LLVM's newly added TargetOptions. No test · 097d019c
      Chandler Carruth authored
      case as we don't currently have any way of dumping target options or
      otherwise observing this. Another small step toward fixing PR12380. With
      this we generate TLS accesses using the static model instead of the
      dynamic model, but we're still generating suboptimal code under the
      mistaken assumption that the TLS offset might be greater than 2^32, and
      therefor not viable as an immediate offset of a segment register.
      
      llvm-svn: 154298
      097d019c
    • Chandler Carruth's avatar
      Teach Clang about PIE compilations. This is the first step of PR12380. · c0c0455f
      Chandler Carruth authored
      First, this patch cleans up the parsing of the PIC and PIE family of
      options in the driver. The existing logic failed to claim arguments all
      over the place resulting in kludges that marked the options as unused.
      Instead actually walk all of the arguments and claim them properly.
      
      We now treat -f{,no-}{pic,PIC,pie,PIE} as a single set, accepting the
      last one on the commandline. Previously there were lots of ordering bugs
      that could creep in due to the nature of the parsing. Let me know if
      folks would like weird things such as "-fPIE -fno-pic" to turn on PIE,
      but disable full PIC. This doesn't make any sense to me, but we could in
      theory support it.
      
      Options that seem to have intentional "trump" status (-static, -mkernel,
      etc) continue to do so and are commented as such.
      
      Next, a -pie-level flag is threaded into the frontend, rigged to
      a language option, and handled preprocessor, setting up the appropriate
      defines. We'll now have the correct defines when compiling with -fpie.
      
      The one place outside of the preprocessor that was inspecting the PIC
      level (as opposed to the relocation model, which is set and handled
      separately, yay!) is in the GNU ObjC runtime. I changed it to exactly
      preserve existing behavior. If folks want to change its behavior in the
      face of PIE, they can do that in a separate patch.
      
      Essentially the only functionality changed here is the preprocessor
      defines and bug-fixes to the argument management.
      
      Tests have been updated and extended to test all of this a bit more
      thoroughly.
      
      llvm-svn: 154291
      c0c0455f
  5. Apr 06, 2012
  6. Apr 05, 2012
  7. Apr 04, 2012
  8. Apr 03, 2012
    • Eric Christopher's avatar
      Change location information for synthesized properties to be at the · b7e821a6
      Eric Christopher authored
      property file/line rather than the @synthesize file/line. Avoids
      some nasty confusing-ness with conflating the file from the scope
      and the line from the original declaration. Use    the current scope
      location as a separate parameter so that we can    match it up
      better in the line table with the beginning of the scope.
      
      Update a couple of testcases accordingly since I had to change
      that we actually use the passed in location in EmitFunctionStart
      and for the new metadata parameter and add a new testcase to
      make sure we've got the right line numbers for synthesized
      properties.
      
      Part of rdar://11026482
      
      llvm-svn: 153917
      b7e821a6
  9. Mar 30, 2012
  10. Mar 29, 2012
  11. Mar 28, 2012
    • NAKAMURA Takumi's avatar
      9c7f1242
    • Chandler Carruth's avatar
      Move the emission of strict enum range metadata behind a flag (the same · 8b4140d7
      Chandler Carruth authored
      flag as GCC uses: -fstrict-enums). There is a *lot* of code making
      unwarranted assumptions about the underlying type of enums, and it
      doesn't seem entirely reasonable to eagerly break all of it.
      
      Much more importantly, the current state of affairs is *very* good at
      optimizing based upon this information, which causes failures that are
      very distant from the actual enum. Before we push for enabling this by
      default, I think we need to implement -fcatch-undefined-behavior support
      for instrumenting and trapping whenever we store or load a value outside
      of the range. That way we can track down the misbehaving code very
      quickly.
      
      I discussed this with Rafael, and currently the only important cases he
      is aware of are the bool range-based optimizations which are staying
      hard enabled. We've not seen any issue with those either, and they are
      much more important for performance.
      
      llvm-svn: 153550
      8b4140d7
Loading