From 14b19ba3c4478c8f19068f192d64cb1426bf48d3 Mon Sep 17 00:00:00 2001
From: Jack Nagel <jacknagel@gmail.com>
Date: Wed, 27 Nov 2013 17:25:17 -0600
Subject: [PATCH] Adjust optimization flags if the CPU does not support SSE4

Tentatively fixes Homebrew/homebrew#21778, Homebrew/homebrew#24363.
---
 Library/Homebrew/extend/ENV/std.rb   | 6 +++++-
 Library/Homebrew/extend/ENV/super.rb | 6 ++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb
index 1002749d23..b9cbfbc685 100644
--- a/Library/Homebrew/extend/ENV/std.rb
+++ b/Library/Homebrew/extend/ENV/std.rb
@@ -344,8 +344,12 @@ module Stdenv
     if ARGV.build_bottle?
       arch = ARGV.bottle_arch || Hardware.oldest_cpu
       append flags, Hardware::CPU.optimization_flags.fetch(arch)
+    elsif Hardware::CPU.intel? && !Hardware::CPU.sse4?
+      # If the CPU doesn't support SSE4, we cannot trust -march=native or
+      # -march=<cpu family> to do the right thing because we might be running
+      # in a VM or on a Hackintosh.
+      append flags, Hardware::CPU.optimization_flags.fetch(Hardware.oldest_cpu)
     else
-      # Don't set -msse3 and older flags because -march does that for us
       append flags, map.fetch(Hardware::CPU.family, default)
     end
 
diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb
index 013b262de0..f89b89b367 100644
--- a/Library/Homebrew/extend/ENV/super.rb
+++ b/Library/Homebrew/extend/ENV/super.rb
@@ -206,8 +206,10 @@ module Superenv
     if ARGV.build_bottle?
       arch = ARGV.bottle_arch || Hardware.oldest_cpu
       Hardware::CPU.optimization_flags.fetch(arch)
-    elsif compiler == :clang
-      "-march=native"
+    elsif Hardware::CPU.intel? && !Hardware::CPU.sse4?
+      Hardware::CPU.optimization_flags.fetch(Hardware.oldest_cpu)
+    else
+      "-march=native" if compiler == :clang
     end
   end
 
-- 
GitLab