OSDN Git Service

Quick: Work around large frame sizes for x86_64.
authorVladimir Marko <vmarko@google.com>
Wed, 7 Oct 2015 11:03:29 +0000 (12:03 +0100)
committerVladimir Marko <vmarko@google.com>
Wed, 7 Oct 2015 11:03:29 +0000 (12:03 +0100)
Bug: 24729377
Change-Id: Id608aabad60fb7f1a1450a02444bddfb0eb008a6

compiler/dex/global_value_numbering.cc
compiler/dex/local_value_numbering.cc
compiler/dex/local_value_numbering.h
compiler/dex/mir_analysis.cc

index 94ba4fa..aee94dc 100644 (file)
@@ -41,9 +41,13 @@ GlobalValueNumbering::GlobalValueNumbering(CompilationUnit* cu, ScopedArenaAlloc
       merge_lvns_(allocator->Adapter()) {
 }
 
+// FIXME: Large frame size for x86_64 target. Bug: 24729377.
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wframe-larger-than="
 GlobalValueNumbering::~GlobalValueNumbering() {
   STLDeleteElements(&lvns_);
 }
+#pragma GCC diagnostic pop
 
 LocalValueNumbering* GlobalValueNumbering::PrepareBasicBlock(BasicBlock* bb,
                                                              ScopedArenaAllocator* allocator) {
index 38f7d1e..25a8326 100644 (file)
@@ -347,6 +347,10 @@ LocalValueNumbering::LocalValueNumbering(GlobalValueNumbering* gvn, uint16_t id,
   std::fill_n(unresolved_ifield_version_, arraysize(unresolved_ifield_version_), 0u);
 }
 
+LocalValueNumbering::~LocalValueNumbering() {
+  // All done by member destructors.
+}
+
 bool LocalValueNumbering::Equals(const LocalValueNumbering& other) const {
   DCHECK(gvn_ == other.gvn_);
   // Compare the maps/sets and memory versions.
index dff5e27..715da41 100644 (file)
@@ -37,6 +37,7 @@ class LocalValueNumbering : public DeletableArenaObject<kArenaAllocMisc> {
 
  public:
   LocalValueNumbering(GlobalValueNumbering* gvn, BasicBlockId id, ScopedArenaAllocator* allocator);
+  ~LocalValueNumbering();
 
   BasicBlockId Id() const {
     return id_;
index 39f8ee8..6a761d3 100644 (file)
@@ -1305,6 +1305,9 @@ void MIRGraph::DoCacheFieldLoweringInfo() {
   }
 }
 
+// FIXME: Large frame size for x86_64 target. Bug: 24729377.
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wframe-larger-than="
 void MIRGraph::DoCacheMethodLoweringInfo() {
   static constexpr uint16_t invoke_types[] = { kVirtual, kSuper, kDirect, kStatic, kInterface };
   static constexpr uint32_t kMethodIdxFlagQuickened = 0x80000000;
@@ -1429,6 +1432,7 @@ void MIRGraph::DoCacheMethodLoweringInfo() {
   MirMethodLoweringInfo::Resolve(cu_->compiler_driver, GetCurrentDexCompilationUnit(),
                                  method_lowering_infos_.data(), count);
 }
+#pragma GCC diagnostic pop
 
 bool MIRGraph::SkipCompilationByName(const std::string& methodname) {
   return cu_->compiler_driver->SkipCompilation(methodname);