aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/SelectLong.vp
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-02 10:21:09 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-02 10:21:09 +0200
commitc56f9a47fe1837b7afb73c2c24aed9228bc0db08 (patch)
tree7a54af89b5b284512a4ff116c3c596db669cb1b3 /mppa_k1c/SelectLong.vp
parent8058d6a89fe0cfda16f685ef5a96793b95cc4156 (diff)
downloadcompcert-kvx-c56f9a47fe1837b7afb73c2c24aed9228bc0db08.tar.gz
compcert-kvx-c56f9a47fe1837b7afb73c2c24aed9228bc0db08.zip
allow disabling + xx global symbols
Diffstat (limited to 'mppa_k1c/SelectLong.vp')
-rw-r--r--mppa_k1c/SelectLong.vp5
1 files changed, 4 insertions, 1 deletions
diff --git a/mppa_k1c/SelectLong.vp b/mppa_k1c/SelectLong.vp
index 3b9e5bf9..717b0120 100644
--- a/mppa_k1c/SelectLong.vp
+++ b/mppa_k1c/SelectLong.vp
@@ -70,7 +70,10 @@ Nondetfunction addlimm (n: int64) (e: expr) :=
if Int64.eq n Int64.zero then e else
match e with
| Eop (Olongconst m) Enil => longconst (Int64.add n m)
- | Eop (Oaddrsymbol s m) Enil => Eop (Oaddrsymbol s (Ptrofs.add (Ptrofs.of_int64 n) m)) Enil
+ | Eop (Oaddrsymbol s m) Enil =>
+ (if Compopts.optim_fglobaladdroffset tt
+ then Eop (Oaddrsymbol s (Ptrofs.add (Ptrofs.of_int64 n) m)) Enil
+ else Eop (Oaddlimm n) (e ::: Enil))
| Eop (Oaddrstack m) Enil => Eop (Oaddrstack (Ptrofs.add (Ptrofs.of_int64 n) m)) Enil
| Eop (Oaddlimm m) (t ::: Enil) => Eop (Oaddlimm(Int64.add n m)) (t ::: Enil)
| _ => Eop (Oaddlimm n) (e ::: Enil)